最近看了一下工作流引擎Shark
感覺還可以
可擴展性和可配置性都很不錯
步驟 定義流程
主要是relevant date及applications等
編寫調用的class文件
見後面
運行Shark
裝載TestAppInvoke
xpdl
增加Application Mapping
選擇應用程序為TestApp
即在包中定義的應用程序
ToolAgent類型為JavaClassToolAgent
Application Name一欄填入Class名稱
在Process instantiation management中啟動流程
此時會自動執行應用程序
注意事項 應用程序中使用到的數據可定義為Workflow Relevant Date
傳入類型可為IN
OUT或INOUT
運行應用程序的節點處增加Extended Attribute
名稱為VariableToProcess_UPDATE或VariableToProcess_VIEW
value為參數名
程序需要在classpath裡面
使用的程序名稱為全名
包括包路徑(不帶
class)
編譯後的class文件放到repository/ storedprocedures路徑下
注意包的路徑
有三種類型的活動節點可調用外部程序
l 活動節點為
Tool
類型
執行者為
System
開始和結束模式為
AUTOMATIC
l 活動節點為
Tool
類型
沒有執行者
開始和結束模式為
AUTOMATIC
l 活動節點為
Tool
類型
執行者為
System
以外的類型
開始模式為MANUAL
結束模式為AUTOMATIC
如果在Shark中未定義程序映射
Shark將調用默認的ToolAgent
在nf中可定義
RuntimeApplicationToolAgent可執行其它外部程序
比如notepad等
此時
傳入的application mode如果為
則Shark會等待應用程序的執行結束
如果不為
則Shark在應用程序開始後會繼續流程的處理
JavaScriptToolAgent可用於執行JavaScript
application mode為
則系統將搜索名為applicationName的文件
執行
TestAppInvoke
java
public class TestAppInvoke {
public TestAppInvoke() {
}
public static void execute(AppParameter p
AppParameter p
AppParameter p
) {
JOptionPane
showMessageDialog(null
初始值
param
=
+ p
the_value
+
param
=
+ p
the_value +
param
=
+ p
the_value);
//這裡可設置獲取的參數
注意在包定義中應定義參數類型為OUT或INOUT
//p
the_mode可獲取參數的權限類型
可讀
可寫還是可讀寫
p
the_value = new String(
ABCDE
);
p
the_value = new Long(
); //在Shark中
將Integer類型做為Long類型來處理
p
the_value = new Boolean(true);
JOptionPane
showMessageDialog(null
更改後
param
=
+p
the_mode +p
the_value
+
param
=
+ p
the_value +
param
=
+ p
the_value);
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26796.html