如何作到一個步驟有多個參與者與批次簽核?
在AgilePoint 中要作到批次簽核的功能是一件很容易, 因為AgilePoint 是採用webService的架構, 因此要完成一個步驟只要有工作代號(WorkItemID), 逐筆呼叫api.CompletedWorkItem(WorkItemId) 就可以了.
但是要作一個通用的批次簽核要考慮的問題就比較多了, 原因是AgilePoint 沒有絕對的核準或退回, 其核准或退回只是一個流程變數等於True或False, 而變數麼名稱是可以自定的.
因此若要作到批次簽核, 首先變數名稱一定要先統一, 另外AgilePoint 支援同一個步驟可以有多個參與者, 此時核准或退回就不能單純改變流程變數,
(如上圖流程變數 IsApprove, 如果每個參與者點選同意或退回都去改變他的值, 則其最後的值會由最後一個人決定).因此我們在點選同意或退回的後,
表單中可呼叫SetClientDataVerifyResult(VERIFY_RESULT VerifyResult)
其參數有 VERIFY_RESULT.Approve: 同意
VERIFY_RESULT.Reject: 不同意
VERIFY_RESULT.NoComment: 沒意見(不常用)
這些資料將會寫入每一個WorkItem 的私有的參數欄(Clientdata)
同時在流程元件設定投票的優先順序VotingPriority.
此元件設定為Approve_First 或Reject_First 會讀取 相關的WorkItem 的Clientdata 所存放的核決結果, 判斷出一個惟一的值, 並將其寫入指定的變數.
可設定的判斷有兩種:
Voting Priority: 設定符合條件
Approve_First - 當符合條件時將ApproveRejectResult的變數設為True。
Reject_First -當符合條件時將ApproveRejectResult的變數設為False。
None - 不作Voting判斷。
Session WorkItem :指定評估對像為該批參與者的作業型態。
Orginal WorkItem - 原始指定的作業(任務),不含動態會簽。
All WorkItem - 所有作業, 包括加簽的人亦考慮在內。
Approve Reject Result 設定符合條件後輸出True/False所存放的變數
ApproveReject Rating 評估輸出Approve或Reject 的比率
1% 只要有一個WorkItem 符合輸出條件即可
50% 一半的WorkItem符合輸出條件
100% 全部的WorkItem皆需符合輸出條件
其它- 自行輸入(需輸入%)
Wait All Task Completed 指定評估時機
True - 所有作業完成才評估
False - 每一個作業完成即評估, 只要達到指定的比率, 則其它尚未簽核的工作會被取消,
並直接輸出判斷的結果.
採用Voting 預設輸出的流程變數為ApproveRejectResult.
因此當一個步驟可能多個參與者時, 除了設定VotePriority 外, 並需將同意或退回的判斷設定為VotingPriority 所指定的變數.
如果一個步驟只會有一個參者可選擇直接由按鍵設定流程變數(IsApprove)或設定VotingPriority 其結果是相同的, 差別在於VotingPriority 會多作一次判斷.
上面我們談完了, 如何由表單上或流程元件控制核決結果, 接下來要談到批次簽核.
AgilePoint 的批次簽核事實上就是模擬表單上的動作, 但因為我們無法控制該步驟是採用直接設定流程變數(如IsApprove)或由流程元件判斷Clientdata再設定流程變數(ApproveRejectResult), 因此在批次簽核的頁面上會同時將 SetClientDataVerifyResult(VERIFY_RESULT VerifyResult)寫入ClientData 並將IsApprove 設為True 或False.
通常要使用批次簽核的步驟, 表單上除簽核意見外不應輸入其它欄位, 因此只有特定的步驟才可使用批次簽核, 因此要可以批次簽核的步驟可以在流程元件Manual Activity 中,設定[參與者]之[非必要](Optional) == false及[等待工作完成]WaitWorkPerformed == false,此作業於簽核後會將簽核結果寫入WorkItem 之client Data 並設定流程變數IsApprove=True.
當設定完成, 流程執行至改步驟時, 若該步驟之社設定符合上述設定時會自動出現批次簽核的選項
點選批次簽核的Button, 並勾選欲牽核的表單.
輸入簽核意見與內容, 並點選核准、拒決或取消, 系統自動將簽核結果寫入ClientData 與流程變數
註: AresPortal 中所含的BatchSignPage 是一個未編譯客制網頁, 目前在簽核時只會寫入流程變數IsApprove等於True 或False,換言之目前批次簽核只支援, 一個步驟, 同時只有一個人簽核, 新的版本, 會同時寫入 SetClientDataVerifyResult(VERIFY_RESULT VerifyResult), 請更新為新的版本或直接加入以下程式碼.
留言
張貼留言