Script 流程執行路徑
概述
在 Agentflow 中,流程執行主要分為兩種路徑:使用者開啟窗體和系統自動執行。這兩種方式有不同的操作順序和處理邏輯。
自動執行 Task 產生 ----> 前置動作 ---> 分派動作 / Action ------------------------> 後置動作 ---> Task 結束 ↓ ↑ ↓ (非自動執行) | **Client 端:** 使用者開啟表單 |(表單關閉) └--> pre --> open --> Form --> ok --> close --> post Action Action Action Action Action Action
使用者開啟窗體的流程執行
當流程設計設置為非自動執行時,需要使用者手動操作窗體。其具體執行步驟如下:
- 流程執行順序:
- Task 產生: 當一個任務(Task)被啟動時,系統會立即從後端資料庫撷取相關信息,包括時間控制、文件內容、執行人員及代理人設定等。
- 前置動作: 執行 PDE(流程設計器)的前置動作,並將結果儲存起來。系統會檢查 PDE 是否設置為自動執行,以決定下一步的操作。
- 分派動作: 系統執行分派動作中的腳本,並將任務分派給指定的執行者。
- Client 端處理: 因為是非自動執行,系統將任務分派給使用者,並開啟 Client 端的窗體。使用者在窗體中完成操作後,按下「完成」鍵,系統會更新文件狀態,並執行
CompleteTask
動作。 - 後置動作: 最後,系統執行後置動作腳本,完成任務,並將任務標記為結束。
系統自動執行的流程
若流程設計為系統自動執行,整個流程將無需使用者介入,所有操作都在 Server 端自動完成。其具體步驟如下:
- 流程執行順序:
- Task 產生: 當任務被啟動時,系統會立即從後端資料庫撷取相關信息,如時間控制、文件內容、執行人員及代理人設定等。
- 前置動作: 執行 PDE 的前置動作,並檢查是否勾選了自動執行選項,以決定下一步是自動執行還是手動操作。
- 自動 Action: 由於沒有執行者,系統會直接執行自動執行框中的腳本,並按腳本指示改變文件狀態。
- 保存與更新: 儲存剛才系統執行 Task 的數據,並移除時間控制設定,更新 Task 的執行狀態為「已完成」。
- 後置動作: 執行後置動作腳本,完成任務,並儲存執行結果。
注意事項
在使用系統自動執行時,需特別注意以下兩點:
- 系統操作標識:
- 由於所有操作都是系統自動執行的,任務的送出者會顯示為 “System” 而非實際啟動流程的使用者。因此,在撰寫腳本時需要注意,使用
MyTask.getMemberID()
或MyTask.getRealExecutor()
獲取的都會是 “System”。
- 由於所有操作都是系統自動執行的,任務的送出者會顯示為 “System” 而非實際啟動流程的使用者。因此,在撰寫腳本時需要注意,使用
- 流程狀態更新:
- 在腳本的最後,必須明確指定下一個窗體的狀態或直接將任務關閉。否則,系統無法確定該任務是否已完成,可能導致流程卡住。可以使用
Server.setArtInsState(PASEArtInstance art, String stateID)
來設定窗體的下一狀態,或使用MyTask.setTaskState(MyTask.TASK_STATE_COMPLETE)
來關閉任務。
- 在腳本的最後,必須明確指定下一個窗體的狀態或直接將任務關閉。否則,系統無法確定該任務是否已完成,可能導致流程卡住。可以使用