流程控制 (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); } }