Document Workflow 設計:簽核流程完全攻略
iDempiere 內建完整的文件工作流引擎,支援多層簽核、自動審批、條件分支等功能。本文將帶你了解 Document Workflow 的核心概念,並實作一個訂單三層簽核流程。
一、核心概念:DocAction 與 DocStatus
DocAction(動作)
使用者可對文件執行的操作:
| DocAction | 說明 |
|---|---|
| CO (Complete) | 完成文件 |
| AP (Approve) | 核准 |
| RJ (Reject) | 駁回 |
| VO (Void) | 作廢 |
| CL (Close) | 關閉 |
| RE (Reverse) | 沖銷 |
DocStatus(狀態)
| DocStatus | 說明 |
|---|---|
| DR (Drafted) | 草稿 |
| IP (In Progress) | 處理中 |
| WC (Waiting Confirm) | 等待確認 |
| CO (Completed) | 已完成 |
| VO (Voided) | 已作廢 |
| CL (Closed) | 已關閉 |
二、標準文件流程
草稿 (DR)
→ [Complete]
→ 處理中 (IP)
→ [Complete]
→ 已完成 (CO)
三、Workflow 相關表格
| 表格 | 用途 |
|---|---|
| AD_Workflow | 工作流定義 |
| AD_WF_Node | 工作流節點 |
| AD_WF_NodeNext | 節點連線 |
| AD_WF_Activity | 執行中的活動 |
| AD_WF_Process | 工作流實例 |
四、實戰:訂單三層簽核
需求
- 金額 < 10,000:自動核准
- 金額 10,000 ~ 100,000:主管核准
- 金額 > 100,000:主管 + 經理雙簽
設計節點
- (Start) Document Action 節點
- (Check Amount) 條件判斷節點
- (Auto Approve) 自動核准節點
- (Manager Approve) 主管審批節點
- (Director Approve) 經理審批節點
- (End) 結束節點
設定步驟
- 開啟 Workflow 視窗
- 找到
Process_Order工作流 - 在 Node 子頁籤新增審批節點
- 設定 Node Next 定義流程分支
- 在分支設定 Transition Condition
Transition Condition 範例
@GrandTotal@ < 10000 → Auto Approve @GrandTotal@ >= 10000 AND @GrandTotal@ < 100000 → Manager @GrandTotal@ >= 100000 → Director
五、審批節點設定
| 欄位 | 說明 |
|---|---|
| Action | User Choice(等待使用者操作) |
| Responsible | Role / User / Supervisor |
| Duration | 逾時天數 |
| Priority | 優先級 |
六、從 API 觸發 DocAction
# 找到 Process 的 slug value
GET /api/v1/processes
# 執行 Complete
POST /api/v1/processes/c_order-process
{
"table-id": 259,
"record-id": 1000001
}
常見問題 FAQ
Q1: 文件卡在 In Progress 怎麼辦?
檢查 Workflow Activity 視窗,找到待處理的活動,確認審批者是否正確。
Q2: 如何讓特定 Role 可以核准?
在審批節點設定 Responsible Type = Role,並指定 Role。
Q3: 可以設定自動逾時核准嗎?
可以,設定 Duration 後,在 Workflow Processor 排程中會處理逾時自動核准。
Q4: 如何用 Java 程式觸發文件處理?
MOrder order = new MOrder(ctx, orderId, trxName); order.setDocAction(DocAction.ACTION_Complete); order.processIt(DocAction.ACTION_Complete); order.saveEx();
Q5: 工作流變更後要重啟嗎?
不用,但建議清除 Cache。新文件會使用新流程,進行中的文件維持原流程。
發佈留言