跳轉到

程式資訊

  • 程式 IDWORKFLOWVIEW
  • 所屬子系統:Other
  • 狀態:stable

工作流程派送(簽核發起)

功能簡介

「工作流程派送」是各單據在工具列按下 工作流程(簽核)時跳出的設定面板,負責把一張已存在的單據送進公司的簽核/工作流程。它做三件事:

  1. 從該單據的單據別自動載入可用的流程樣板,由樣板帶出每一道關卡(處理人、審核順序、處理事項)。下拉最後永遠附一項 自訂流程,讓你不套樣板、自己指定關卡。
  2. 讓使用者檢視並微調流程關卡(可手動補關卡、補通知人員、改處理人 Email),並掛上附件
  3. 儲存 後正式發行:寫入聯絡單/工作流程資料、產生簽核 PDF、並寄信通知下一關處理人

它不是查詢報表,而是簽核流程的發起與檢視面板。發起後,後續每一關的簽核動作改在 工作流程簽核 進行;而流程樣板(每個單據別預設有哪些關卡)則在 流程樣板選擇 維護。

從哪裡打開

本面板沒有獨立的主選單入口,而是由單據作業(Ade 表單)的 工作流程 按鈕觸發:系統先取得目前單據的主檔,檢查可否送簽,再以 ContentWindowService 彈出本視窗(程式 WorkflowService.ExecuteWorkflowAsync)。因此必須先有一張存好的單據才會出現此畫面。

前置需求

  • 權限:執行單據作業時需具備該單據的工作流程/簽核權限(AllowWorkflow);無權限會提示「沒有權限」並中止。
  • 基礎資料:流程能不能正確帶出關卡,取決於下列資料的維護——
資料 影響的結果
流程樣板(依單據別設定) 流程樣板 下拉的選項與預設帶出的關卡;該單據別沒有維護樣板也能送簽,下拉會只剩 自訂流程,關卡自己指定
樣板關卡設定(處理事項、審核順序、處理部門) Detail 清單每一列的處理事項/審核順序/處理人
人事資料(員工 Email、簽名圖檔) 各關卡的處理人 Email(補寄通知用)、發行者簽名圖檔(產 PDF 用)
部門 / 處理人對照(WKFLOWHANDLER seek) 手動新增關卡時,處理部門選人後帶回部門名稱/處理人/Email
單據主檔欄位(客戶、廠商、部門、特殊人員) 樣板 Pick 依這些值挑選對應關卡(例如某客戶走特定簽核線)

操作步驟

  1. 在單據作業中先儲存好一張單據,再按工具列的 工作流程(簽核)。系統會帶出本面板,上方顯示該單據的聯絡單號/建檔日期/製表人員/結案/主旨等唯讀資訊。
  2. 流程樣板 下拉選擇要套用的流程樣板。下拉的最後一項固定是 自訂流程(樣板號顯示 CUSTOM)。
    • 一般樣板:系統自動帶出內容(依樣板與單據內容組出的簽核說明)、主旨,並在下方 Detail 清單列出該樣板的所有關卡;右側文字框顯示該樣板的顯示流程(流程文字說明)。
    • 自訂流程:清單只會有一列「發行」(處理人=登入者、狀態已完成),其餘關卡請照步驟 5 自己加。
    • 該單據別還沒維護任何流程樣板時(例如拜訪單),下拉就只有 自訂流程 一項且預設選中,開窗即可直接編關卡送簽。
  3. 視需要在內容欄補充說明(可編輯、可換行)。
  4. 視需要掛上附件:在右上附件清單按 載入 選檔、按 顯示 開檔;附件列預設提供 10 筆空白列可填。
  5. 視需要補流程關卡:在清單空白處按右鍵 新增數筆,加出來的列排在流程末端。只有自己加的列可以編輯,樣板帶出的關卡一律唯讀(詳見欄位連動與附加功能)。可編輯的內容依你選的樣板而異:

    目前選的樣板 新增列的處理事項 用途
    自訂流程 可自選:通知確認承認初審複審核定 整條流程自己排;審核順序照加入順序
    一般樣板 固定 通知、不可改 只用來補通知人員,一律排在流程最後

    兩種情況都用 處理部門放大鏡(seek 欄)挑處理人,選定後自動帶回部門名稱/處理人姓名/Email。

  6. 確認無誤後按 儲存。存檔前系統會檢查除「發行」以外的每一關都要有處理人;有缺會提示「關卡 00X 尚未指定處理人」(列出缺的關卡序號)並擋下存檔,補齊後再存。通過檢查後系統會:

    • 寫入聯絡單與工作流程資料、產生簽核 PDF、並寄 Email 通知下一關處理人。
    • 存檔後視窗自動關閉(CloseWindowAfterSave);按 取消 同樣會關閉視窗(CloseWindowAfterCancel)。

注意

一旦流程已發行(單據已在簽核中),再次打開本面板時整個流程清單與樣板下拉會變成唯讀,只能檢視進度、不能再改樣板或關卡——後續處理請改用 工作流程簽核

「被通知過」不等於「已送簽」

回報任務、行事曆事件卡的 報告 也會在單據上留下通知待辦。2026-08-28 起這類通知不再被當成已送簽,被通知過的單照樣可以按 工作流程 正常送簽。此行為需部署腳本 sql/wkflow-getnotes-skip-notify-20260828.sql沒跑到的環境,通知過的單開起來仍是唯讀。

欄位說明

主檔(上方資訊區)

欄位 必填 說明 / 預設
聯絡單號 唯讀;新發起時系統暫填 +++,存檔後由系統產生正式單號
建檔日期 唯讀;選樣板時帶入今天
製表人員 唯讀;預設為目前登入者(顯示其姓名)
結案 唯讀;流程結案狀態
主旨 可編輯;選樣板時自動組成「顯示流程,單號:xxx,發行:登入者」
內容 可編輯、可換行;選樣板時依樣板+單據內容自動帶入,已有內容則保留

流程樣板區

欄位 可編輯 說明
流程樣板 未發行時可選 單據別載入可用樣板,最後一項固定為 自訂流程(樣板號 CUSTOM);發行後唯讀並定位到當前樣板
顯示流程 唯讀;所選樣板的流程文字說明(自訂流程 顯示「自訂流程」)

流程關卡清單(Detail)

欄位 可編輯 說明 / 預設
序號 關卡序號
審核順序 簽核先後順序;發行關卡為 0
處理事項 自訂流程 的手動列可改 手動新增列預設 通知;選 自訂流程 時可改成 確認承認初審複審核定,選一般樣板時鎖定為 通知
處理部門 手動列可改 放大鏡(seek 欄)選人,帶回部門名稱/處理人/Email
部門名稱/處理人姓名 由樣板或 seek 帶出
處理人Email 可改 樣板未填時,若人事資料有 Email 且設定要寄信會自動補上
實際處理人 實際執行該關卡的人(簽核後回填)
狀態 該關卡狀態;手動新增列預設「未開始」
處理時間 該關卡處理完成時間
流程結束 是否為流程結束關卡
電子郵件 是否寄 Email 通知(Y/N),手動新增列預設 Y
產生報表 該關卡要產生的報表名稱(發行關卡用以產 PDF)
執行方法/方法名稱/參數 自動執行設定(核可後觸發指定方法)
開始日/到期日 手動新增列預設今天
完成率 0~100;手動新增列預設 0、發行關卡 100
處理說明/退件序號/退件說明 簽核過程回填的處理/退件資訊

附件清單

欄位 可編輯 說明
序號 附件序號,自動編號(D3,如 001
載入 按鈕 載入 開檔案對話框選檔並掛到該列
附件 已掛附件的檔名(唯讀)
標籤 可改 附件分類標籤(系統會依單據客戶/廠商/部門等帶入預設標籤)
顯示 按鈕 顯示 開啟該附件

欄位連動與附加功能

這一節列出本面板「輸入某欄位/按某按鈕後系統會做什麼」,全部以實際程式碼為準。

打開面板時(自動帶資料)

  • 自動判斷新發起或檢視既有流程:開窗時呼叫 GetNoteMaster(單據別, 主檔id)。若該單據已建過聯絡單/流程,直接載入既有主檔、附件與流程關卡;否則建一張新的聯絡單(NewCommpr),帶入單據別、單號、製表人員(登入者)、資料表名稱等預設。
  • 自動補 10 筆空白附件列AddItem 會在現有附件之後補 10 筆空列供填寫,序號接續既有最大序號(格式 D3)。
  • 已發行 → 全面唯讀:若查到的流程關卡筆數 > 0(SetWorkflow(true)),樣板下拉與流程清單設為唯讀、隱藏手動加列;樣板下拉自動定位到單據目前的流程樣板號
  • 自動嘗試帶出單據資料:開窗時若尚未發行、流程關卡都還是新列,就先做一次 TransferQuery 把來源單據的資料抓進來。
  • 缺「發行」關卡不再擋(2026-08-28 改版):樣板沒設發行關時,系統自動補一列「發行」(處理人=登入者、狀態已完成)排在最前面,序號撞到時其餘關卡順延並同步調整退件序號。開窗不會再跳「沒有發行者,請檢查工作流程表是否有設定錯誤」。
  • 通知待辦不算已送簽:回報任務/行事曆 報告 產生的通知(聯絡單的流程樣板號空白)在載入時會被略過,不會讓面板誤判成「已發行」而轉唯讀。此判斷在後端腳本 sql/wkflow-getnotes-skip-notify-20260828.sql 內。

選擇「流程樣板」後(SetCommpr

當你在 流程樣板 下拉選定一個樣板(且流程尚未發行),系統會:

  1. GetContents 依樣板+單據組出內容文字(內容原本空白才填,不覆蓋你已打的字)並取得 viewxml(非「歷史記錄」模式時寫回主檔,供產 PDF 用)。
  2. 帶入建檔日期=今天聯絡單號=+++(暫填)。
  3. 組出主旨=「{顯示流程},單號:{單號},發行:{登入者}」。
  4. 寫回流程樣板號,並呼叫 SetDetail1 用樣板挑出所有關卡。

自訂流程 時第 4 步改成 SetCustomDetail1:不去挑樣板關卡,只放一列「發行」(登入者、完成率 100、狀態完成),流程樣板號寫成 CUSTOM(此樣板號不存在於流程樣板主檔,簽核/退件/待辦都只看關卡列,不回頭查樣板)。

關卡挑選與帶值(SetDetail1 / Pick

  • 透過 DARB_WKFLOW_PICK樣板+廠商代號/客戶代號/部門代號/特殊人員挑出對應關卡(這四個值來自來源單據主檔,由 WorkflowConstructorParameter 反射取得)。
  • 登入者佔位符 #I#:樣板某關卡的處理部門若填 #I#,代表「此關由目前登入者本人處理」,系統會清空部門並帶入登入者為處理人(SetSignInUserWhenPlaceholder)。
  • 發行關卡自動帶發行者:處理事項為「發行」的關卡,自動帶入登入者為處理人並設完成率 100、狀態完成(SetPublish);樣板裡找不到發行關卡時自動補一列EnsurePublishRow),不再中斷流程。
  • 自動補 Email:若關卡設定要寄信(電子郵件=Y)但 Email 空白,會去人事資料用處理人編號補 Email(SetEmail)。

流程關卡清單操作

  • 右鍵「新增數筆」(手動補關卡):只有尚未發行且已選樣板(流程清單已有列)時才能加列(AddItem);新列預設處理事項=通知、狀態=未開始、優先順序=一般(Normal)、開始日/到期日=今天、電子郵件=Y、完成率=0,序號/審核順序接在末端。只有手動新增的列開放編輯(IsRowReadOnly),樣板帶出的列維持唯讀。
  • 處理事項能不能改,看目前選的樣板:選 自訂流程 時新增列的處理事項開放選擇(通知/確認/承認/初審/複審/核定);選一般樣板時新增列鎖定為「通知」IsJobCodeLocked),只能拿來補通知人員、排在流程最後。
  • 處理事項下拉:選定後寫回處理事項碼/處理事項(系統值)/顯示名稱JobCodeEnum)。
  • 處理部門 seek 欄(WKFLOWHANDLER):按放大鏡選定人員後自動帶回部門名稱、處理人編號、處理人姓名、EmailRow setter)。

附件操作

  • 載入:開檔案對話框選檔,把檔名寫進該附件列;若該列原本不是新增列,會把增刪修標記改為 E(修改)LoadFileExecute)。
  • 顯示:以系統預設程式開啟該附件(OpenFileExecute)。
  • 附件不可刪條件禁止刪除=Y 的附件列為唯讀、不可編輯刪除(CanEdit)。

按「儲存」後(發行流程,SqlEditTurnViewModel_AfterSave

存檔前的把關(CommprBll:除了「發行」關卡(序號 00)以外,每一關的處理人編號都必須有值;有缺就提示「關卡 00X 尚未指定處理人」(多筆時序號以頓號串接)並中止存檔。手動加了關卡卻忘了挑人時,會擋在這裡。通過檢查後依序執行:

  1. 把主檔、附件、流程關卡一起上傳(SetUpdateSourceCommprBll)。
  2. 產生簽核 PDF:若發行關卡有設定「產生報表」,依 viewxml 與報表名稱產出 PDF(CreatePdf / WorkflowPDFHelper),並以登入者的簽名圖檔作為發行者簽章;發行關卡沒設定報表時則略過產 PDF。
  3. 通知下一關:以 Detail1 第一關的 pkid 呼叫 WorkflowApproveBll.NotifyNext,由它找出下一關處理人;只對電子郵件=Y 且 Email 有值的關卡寄出工作流程通知信
  4. 重新整理來源單據資料並自動關閉本視窗。

2026-08-28 起:不再有「沒有發行者」提示

舊版在開窗當下檢查流程有沒有「發行」關卡,缺了就跳「沒有發行者,請檢查工作流程表是否有設定錯誤」並停在那裡。現在改成缺發行列就自動補一列發行(登入者、已完成),這個提示不會再出現;改由存檔前的「處理人」檢查(見上一節開頭)把關。

規劃中/未啟用

XAML 中保留了一顆 Get Workflow 按鈕(GetCommpr2Command),目前已註解停用;流程關卡改由選樣板時自動帶出,毋須手動按鈕取得。

下方面板「工作流程」分頁(流程圖)

送簽之後要看流程走到哪一關,不必再開本面板——單據畫面下方面板工作流程 分頁會把流程畫成流程圖。

  1. 在單據畫面下方點 工作流程 分頁。
  2. 上半部是流程圖:一關一個節點,依審核順序排列,顯示處理事項、處理人與狀態。這裡只畫真正送簽的流程(有流程樣板的那一條)。
  3. 這張單還沒送簽時,流程圖區只顯示 尚未送簽 四個字。
  4. 流程圖下方是 通知紀錄(N) 清單:把回報任務、行事曆事件卡 報告通知類待辦一張一列列出,欄位為 日期主旨通知給誰狀態;沒有任何通知時整區隱藏。
分頁上的資訊 怎麼算
分頁標題的筆數 這張單有送簽流程時=流程的關卡數只有通知時=通知張數(一張通知不論通知幾個人都算一張)
分頁標題的狀態圓點 沒有送簽流程=不顯示;流程關卡都處理完=灰點;還有關卡沒處理完=紅點(通知類關卡不列入未完成)

通知不再畫成流程

2026-08-28 前,每被通知一次流程圖就多一條「發行 → 通知」,看起來像同一張單送了好幾次簽。現在通知一律收進通知紀錄清單,流程圖只留真正的簽核流程。

常見問題

按了「工作流程」沒有反應或提示無資料?

本面板必須先有一張已儲存的單據才會打開。若提示無權限,表示你對該單據沒有工作流程/簽核權限;若提示無資料,請先在單據作業新增並儲存一張單據再送簽。

流程樣板下拉只有「自訂流程」一項?

表示這個單據別還沒維護任何流程樣板。這種情況下 自訂流程預設選中,你可以直接用右鍵 新增數筆 把要簽的關卡一關一關加上去、選好處理人後送簽,不必先去建樣板。若這張單以後會常常送同一條流程,仍建議到流程樣板維護建一張樣板,之後選樣板即可。

一打開工作流程面板就跳「沒有發行者」?

2026-08-28 起不會再出現這個提示。流程關卡裡沒有「發行」列時,系統會自動補一列「發行」(處理人=登入者、狀態已完成),面板照常開啟、照常送簽。若你的環境仍看得到這個提示,表示版本尚未更新。

存檔時提示「關卡 00X 尚未指定處理人」?

除了「發行」以外,每一關都必須有處理人才能送簽。請照提示的序號找到那幾列,用 處理部門 的放大鏡挑人(會一併帶回部門名稱與 Email),再按 儲存。最常見的原因是用 新增數筆 加了關卡卻沒挑人。

關卡的處理人 Email 是空白,通知信沒寄出?

通知信只會寄給電子郵件=Y 且 Email 有值的關卡。系統會在挑關卡時用處理人編號到人事資料補 Email;若人事資料本身沒填 Email,這一關就補不到、也不會寄信。請補齊該員工的 Email。

為什麼整個流程清單變成灰色、改不了?

表示這張單據的流程已經發行(已進入簽核)。發行後樣板與關卡都鎖定唯讀,只能檢視進度。後續的核可/退件請到工作流程簽核處理。

手動「新增數筆」加不了關卡?

只有在尚未發行且已選定流程樣板(流程清單已有列)時才開放手動加列;流程已發行或還沒選樣板時,右鍵新增不會有作用。

新增的關卡「處理事項」改不動,只能是「通知」?

這是刻意的:選一般樣板時,樣板帶出的關卡不能改,你加的列只能用來補通知人員(固定「通知」、排在流程最後)。要自己排整條流程(確認/承認/初審/複審/核定),請把 流程樣板 改選 自訂流程——但改樣板會重帶關卡,樣板原本的關卡就不會保留。

這張單被通知過(收過待辦),按「工作流程」卻是唯讀、送不出去?

舊版把單據上任何一張聯絡單都當成「已送簽」。2026-08-28 已修正為只認真正的簽核流程,通知類待辦不影響送簽。若你的環境仍是唯讀,表示部署腳本 sql/wkflow-getnotes-skip-notify-20260828.sql 還沒在該資料庫執行,請洽系統管理員。

工作流程分頁的流程圖上,為什麼看不到我做過的通知?

通知不畫進流程圖,改列在流程圖下方的 通知紀錄(N) 清單(日期/主旨/通知給誰/狀態)。流程圖只畫真正送簽的關卡;這張單沒送簽時會顯示 尚未送簽。詳見下方面板「工作流程」分頁

相關功能


需補截圖清單

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

  1. workflowview-step1.png — 面板全貌(上方單據資訊+流程樣板下拉+流程關卡清單)
  2. workflowview-step2.png — 流程樣板下拉展開,最後一項為 自訂流程
  3. workflowview-step3.png — 附件清單(含「載入」「顯示」按鈕)
  4. workflowview-step4.png — 手動「新增數筆」補關卡與 WKFLOWHANDLER seek(放大鏡)選人
  5. workflowview-custom-flow.png — 選 自訂流程 後只有一列「發行」的關卡清單
  6. workflowview-custom-jobcode.png — 自訂流程新增列的處理事項下拉展開(通知/確認/承認/初審/複審/核定)
  7. workflowview-notify-row.png — 選一般樣板時新增列補通知人員(處理事項鎖定「通知」、排在最後)
  8. workflowview-missing-handler.png — 存檔時的「關卡 00X 尚未指定處理人」提示
  9. workflowview-tab-flowchart.png — 下方面板 工作流程 分頁:流程圖+下方 通知紀錄(N) 清單
  10. workflowview-tab-notsent.png — 下方面板 工作流程 分頁在未送簽單據上顯示 尚未送簽