流程控制 (Flow Control)
以 script 控制流程的開啟及結束。
| 回傳值/對象 | 函式 (數據型態 參數) | 說明 |
|---|---|---|
| String | createProcess(String ProID, HashMap data) | 啟動 ID 為 ProID 的流程,data 用來傳送數據至啟動的流程中 |
| HashMap | completeTask(Task t) | 將一工作設為完成,參數即為一工作對象 |
- 開啟的流程參數 ProID: 該 ID 為一根流程 (root process) 的 ID,在流程設計師的流程設計的流程信息設定中可以得到 ID (流程編號)。
- 工作對象 (Task): 可以利用
getTaskOfMember(…)取得。
範例:
在請購單的 postAction 中開啟採購流程,並在採購流程 preAction 接收數據。
在請購單中按完成後,即通知系統開啟一採購流程,並傳送數據至採購流程:
請購單的 postAction:
{主管已審核:
var data = new java.util.HashMap();
// 將取得的數據放入 HashMap 對象中,利用 put(key, value) 放入
data.put("單價", 10);
data.put("數量", 2000);
data.put("總價", 20000);
// 以下即利用 createProcess 啟動流程,並傳送變數至該流程
var tid = Client.createProcess("PRO000000000001", data);
}
採購單的 preAction:
{初始化:
// 以下 3 行程序即去抓取傳來的 "data" 參數,ght 變數即為傳來的 data 參數,亦即一 HashMap 物件
var task = Form.getCurrentTask();
var s_parentid = task.getParentID();
var ght = Client.getGlobals(s_parentid); // ght,即為請購單的 data 變數
if (ght != null) {
// 利用方法 get(key),來取得相對應的 value
var price = ght.get("單價"); // price = 10
var amount = ght.get("數量"); // amount = 2000
var sum = ght.get("總價"); // sum = 20000
}
}
範例:
將「我的工作」中工作名稱為 “請假單審核”、工作狀態為 “ready” 的工作,以 script 設為完成工作:
var member = Client.getCurrentMember();
var mid = member.getID();
var TaskSet = Client.getTaskOfMember(mid, Constant.TASK_STATE_READY);
if (TaskSet.size() > 0) {
for(var i = 0; i < TaskSet.size(); i++) {
var Task = TaskSet.get(i);
var name = Task.getName();
// 若工作名稱為 "請假單審核",則將工作完成
if (name == "請假單審核")
Client.completeTask(Task);
}
}
