跳轉到

程式資訊

  • 程式 IDWKFLOWT
  • 所屬子系統:A.系統資料
  • 狀態:stable

工作流程樣板

功能簡介

「工作流程樣板」是 TsERP 簽核(工作流程)功能的設定主檔。在這裡為每一種單據別預先畫好一條簽核路線——從發行(發起)、初審、複審到核定,逐關卡指定處理部門 / 處理人 / 審核順序,以及每一關要不要寄 Email 通知、要不要自動產生報表、要不要自動執行程式 / AutoPilot 方法

當某張單據送出簽核時,系統會依該單據的單據別找到對應的樣板,把樣板的關卡複製成那張單據自己的簽核流程(見欄位連動與附加功能)。因此本表單由系統管理員 / 流程設計者維護,是所有後續簽核行為的源頭;改錯樣板會直接影響該單據別之後所有送簽的走法。

每筆樣板=一個主檔(流程樣板號+單據別+類型)+一組明細(各關卡)。

前置需求

  • 權限:A.系統資料 → A-070 工作流程樣板 的新增 / 修改 / 刪除 / 列印權限。
  • 基礎資料:關卡上要指定的部門與人員、要掛的單據別與方法都必須先存在——
資料 影響什麼
部門主檔 關卡的處理部門只能挑已建立的部門(透過 處理部門查詢視窗 帶出部門名稱與處理人)
人員 / 員工主檔 帶出該關卡的處理人編號 / 姓名 / Email;登入者本身也用於發行關卡的 #I# 佔位符替換
單據別(程式代碼) 單據別欄位決定這張樣板套用在哪一種單據;送簽時靠它對應樣板
AutoPilot 方法 勾「是否執行程式」時,方法名稱要對得上 AutoPilot 自動化方法 才會被執行
報表定義 產生報表欄填的報表代號要存在,流程結束時才產得出來

操作步驟

  1. 從主選單開啟 A.系統資料 → 工作流程樣板
  2. 按工具列 新增。系統會自動把明細第一列設為「發行」關卡(見欄位連動與附加功能)。
  3. 填寫主檔:
    1. 輸入流程樣板號(主鍵,必填,最長 20 碼)。
    2. 輸入單據別——這條流程要套用在哪一種單據。
    3. 選擇類型Normal(一般使用者流程)或 System(系統流程)。
    4. 視需要填流程說明,以及多行的分支條件(依條件走不同分支時用)。
  4. 在明細逐列建立簽核關卡:
    1. 處理事項碼下拉選關卡性質(發行 / 通知 / 確認 / 承認 / 初審 / 複審 / 核定)——選定後系統會自動帶相關預設值。
    2. 處理部門欄按查詢鈕挑部門,系統自動帶出部門名稱 / 人員別 / 處理人編號 / 姓名 / Email
    3. 確認 / 調整審核順序(新列會自動接續最大序號+1)。
    4. 視需要勾選寄 Email、填產生報表、勾是否執行程式並填方法名稱 / 參數 / 執行說明
    5. 視需要調整流程結束(初審 / 複審預設核准、核定預設結束)。
  5. 儲存。存檔前系統會做完整性檢查(只能一個發行、第一筆必須是發行、勾執行程式要有說明——見常見問題)。
  6. 要列印樣板定義時按 列印:在列印條件輸入流程樣板號起訖(預設自動帶入目前這筆樣板號),即可印出「流程表」報表。

查詢既有樣板

工具列的上一筆 / 下一筆 / 查詢可在已建立的樣板間切換;切換時系統會重新整理各關卡的下拉顯示文字(處理事項 / 狀態 / 優先順序)。

欄位說明

主檔

欄位 必填 說明 / 格式 / 預設
流程樣板號 主鍵,最長 20 碼。建立後即為這條流程的識別碼
單據別 這條流程套用的單據別(程式代碼),最長 60 碼。送簽時靠它對應樣板
類型 Normal(碼 0)或 System(碼 1);下拉來源為程式內建兩筆 CobPoco
流程說明 自由文字,最長 120 字
分支條件 多行文字(可換行),最長 999 字;流程需依條件分支時填寫

明細(簽核關卡)

欄位 必填 說明 / 格式 / 預設
序號 關卡序號(最長 6 碼)
處理事項碼 下拉:1 通知2 確認3 承認4 初審5 複審6 核定9 發行,下拉直接顯示「碼:名稱」。選定後自動帶值(見下節)
處理事項 由處理事項碼回查的中文描述。畫面上不另開欄位顯示(grid 該欄已停用),存檔時依碼回填到資料表
處理部門 按查詢鈕從部門主檔挑選,自動帶部門名稱與處理人
部門名稱 隨處理部門帶入,唯讀
人員別 隨處理部門 / 處理人帶入,唯讀
處理人編號 / 姓名 / Email 隨選定的處理部門 / 人員帶入;Email 可手動修改
審核順序 數值欄,補零顯示。新列自動帶「目前最大順序+1」(無資料時帶 1)
流程結束 下拉:A 核准Y 結束。依處理事項碼自動帶(初審 / 複審→A,核定→Y,其他→清空)
寄 Email 勾選=該關卡通過時寄信通知(存值 Y/N)
產生報表 該關卡 / 流程結束時要產生的報表代號(最長 30 碼)
是否執行程式 勾選=該關卡自動執行程式 / 方法(存值 Y/N)
方法名稱 / 參數 / 執行說明 勾「是否執行程式」時生效;方法名稱對應 AutoPilot 方法,執行說明在存檔時為必填(見常見問題)

畫面未顯示的欄位

Source 內另有狀態 / 狀態碼優先順序 / 優先順序碼完成率開始日 / 到期日提醒時間 / 處理時間處理說明 / 退件序號等欄位。這些是流程執行階段(送簽後的待辦 / 簽核紀錄)才會用到的欄位,樣板維護畫面不直接編輯,新列時由程式帶入預設值(如新關卡狀態碼=未開始、開始日 D、到期日 D1)。

欄位連動與附加功能

這一節把「在某欄位做某動作後系統會自動做什麼」全部列出,全部來自實際程式碼。

新增 之後(AfterAddNew

  • 系統逐列處理明細:第一列自動設為發行(處理事項碼=9)。
  • 其餘非空白列自動帶:狀態碼=未開始開始日=D到期日=D1,並依列序遞增審核順序

在明細「處理事項碼」下拉選值之後(JobCodeEnum 連動)

選擇處理事項碼是本表單最關鍵的連動,會依選項自動帶不同預設:

  • 發行(9):自動套用發起人預設值(GetSender)——審核順序=0狀態=已完成、完成率 100、優先順序=一般、開始日 / 到期日 / 處理時間帶今天;同時把處理部門設為登入者佔位符 #I#(送簽時才換成實際登入者)。主鍵 pkid 由 DataManager 管理、帶值過程會保留還原。
  • 初審(4)複審(5)流程結束自動帶 A(核准)
  • 核定(6)流程結束自動帶 Y(結束)
  • 通知(1)/確認(2)/承認(3)流程結束清空
  • 不論選哪個,都會同步更新該列的處理事項顯示文字與下拉顯示名稱。

發行的特殊性

每張樣板只能有一個「發行」關卡,而且第一筆必須是發行(存檔時強制檢查)。發行關卡代表「發起人」,其處理部門用 #I# 佔位符,實際送簽時由流程帶入當下的登入者。

在明細「處理部門」欄查詢之後(TsWorkflowHandlerSeekGridViewColumn + Row 連動)

  • 處理部門欄是一個查詢欄TsWorkflowHandlerSeekGridViewColumn),查詢程式為 WKFLOWHANDLER,資料來源為部門 / 簽核人 view(Twork_vw_handler,欄位對應 Twork_vw_wkflow_handler),查詢條件為部門代號、顯示欄為部門簡稱。
  • 選定一筆後(Row 被設值),系統自動帶入該列的人員別、部門名稱、處理人編號、處理人姓名、Email
  • Email 帶入後仍可在 Email 欄手動覆寫。

新增明細列時(SetNewData

  • 加新關卡時,審核順序自動帶「目前明細最大審核順序+1」;若是第一筆則帶 1。

切換主檔資料時(AfterMoverRecord

  • 上一筆 / 下一筆切換樣板後,系統重新整理每一關卡的顯示文字(處理事項 / 狀態 / 優先順序的中文描述),確保下拉與唯讀欄正確顯示。

存檔時的處理與檢核(HandleDataBeforeEndEdit + AllowSave

存檔前系統會:

  1. 清掉空關卡:處理事項碼為 0 的列自動標記為刪除(不會存進 DB)。
  2. 回填處理事項文字:非刪除且有處理事項碼的列,依碼回查並寫回處理事項文字。
  3. 寫入系統值:依碼回查並寫回處理事項 / 狀態 / 優先順序的系統值(SetSqlDescription)。
  4. 完整性檢查(任何一項不過就擋存檔,見常見問題):
    • 「發行」關卡數量不能超過 1。
    • 排序後第一筆必須是「發行」。
    • 勾了「是否執行程式(執行方法=Y)」的關卡,執行說明(說明)不能空白

列印(列印WkflowtPrintViewModel

  • 開啟列印頁時,自動把起訖流程樣板號帶為目前這筆樣板號。
  • 列印條件目前提供「依流程樣板號」起訖範圍,產出報表 流程表(報表編號 A070-1,A4,台灣區域)。
  • 起訖樣板號任一為空時不產生報表資料。

送簽時樣板如何被使用(執行階段,非本表單操作)

規劃 / 由其他模組執行

這部分不在本表單操作,但能幫你理解樣板設定的影響。當一張單據送簽時,工作流程引擎(WorkflowBll)會用該單據的單據別找到對應樣板,並把樣板關卡 Pick 複製成那張單據自己的簽核流程(聯絡單 commpr_2)。發行關卡的 #I# 佔位符會在此時替換成登入者本人(含 Email)。因此你在這裡設的順序、部門、寄信、執行程式等,就是該單據別之後每次送簽實際走的路。

常見問題

存檔時跳「第一筆資料必須為發行」?

每張樣板的第一個關卡(序號排序後第一筆)必須是「發行」。請把發行關卡移到最前面,或在第一列的處理事項碼選「發行」。通常按 新增 時系統已自動把第一列設為發行,不要把它改成別的事項或刪掉。

存檔時跳「只能有一個發行」?

一張樣板只允許一個「發行」關卡(代表唯一的發起人)。請檢查明細,把多出來的發行關卡改成其他事項(通知 / 初審…)或刪除。

勾了「是否執行程式」卻存不了?

勾「是否執行程式(執行方法)」的關卡,執行說明欄不能留白。請在該列的執行說明補上文字(同時確認方法名稱對得上 AutoPilot 自動化方法)。

處理部門選了,部門名稱 / 處理人卻空白?

處理部門要透過欄位的查詢視窗挑選,系統才會連帶帶出部門名稱與處理人。手打部門代號不會觸發帶值。若帶不出處理人,請確認該部門 / 簽核人在人員主檔與簽核人 view 中存在。

選了處理事項碼,流程結束欄為什麼自己變了 / 被清空?

這是刻意的自動帶值:初審 / 複審會自動帶「核准(A)」、核定帶「結束(Y)」、通知 / 確認 / 承認會清空。若不符需求,可在自動帶值後手動修改流程結束欄。

明細裡的狀態 / 優先順序 / 完成率欄要填嗎?

不用。那些是流程執行階段(送簽後的待辦與簽核紀錄)才會用到的欄位,樣板維護時由程式帶預設值即可,不需在此編輯。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):

  1. wkflowt-step1.png — 主檔區(流程樣板號 / 單據別 / 類型 / 流程說明 / 分支條件)
  2. wkflowt-step2.png — 明細關卡 grid(處理事項碼下拉、處理部門查詢欄、寄 Email / 是否執行程式勾選)
  3. wkflowt-step3.png — 列印條件頁(流程樣板號起訖)與「流程表」報表輸出