首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET MVC 2 OA 工作流設計實戰:表單解析、流程定義與流轉機制完整解析

     編輯:ASP.NET 基礎

專案背景

新公司首個專案為 OA 系統,環境:ASP.NET MVC 2 + SQL Server 2008。因涉及工作流引擎,自行研究設計,本文記錄核心設計思路(僅供參考,高手輕噴)。

整體架構三步走

  1. 表單:設計與解析
  2. 流程:設計步驟與轉移規則
  3. 合併:表單 + 流程 = 完整工作流

工作流整體架構圖

第一步:表單設計與解析

未使用圖形化設計器,採用強制定義 HTML 結構,後台解析:

<table><tbody><tr><td id="title" class="editable">申請人</td><td>...</td></tr>...</table>
  • 規定 table > tbody > tr > td 固定結構
  • 節點識別:td[@id='title'] 為欄位標題
  • 編輯權限控制:透過 class 標記(如 editable、readonly、time)

HtmlAgilityPack 解析核心代碼

var nodes = doc.DocumentNode.SelectNodes("//table/tbody/tr/td[@id='title']");
// 解析出 11 個節點:申請人、申請日期、部門、假期類別、請假時間、扣薪形式、請假理由、審批人、審批日期、審批結果、審批意見

表單節點解析結果

特殊控件處理

日期欄位標記 class='time',前端 jQuery 動態綁定日期選擇器。

日期控件綁定效果

第二步:流程定義與表單關聯

流程基本資料

流程基本資料設定

  • 經辦權限:直接關聯使用者,控制誰可發起該流程

流程步驟定義

請假流程完整步驟

步驟屬性設計

步驟屬性設定介面

屬性說明
節點序號步驟順序
節點名稱步驟顯示名稱
允許附件/會簽控制區塊顯示/隱藏
下一步標識可流轉目標步驟(支援多條路徑)
不可寫字段當前步驟唯讀欄位(如經理審批時,申請人資訊不可修改)

多職位共用流程的彈性設計

正常流程:員工填寫 → 經理審批 → 總監審批 → 人事備案(4 步)
總監請假:填寫表單 → 人事備案(2 步,跳過經理/總監)
透過「下一步標識」多選機制實現動態路由。

第三步:工作流流轉與實例化

新建流程實例

新建工作流實例

輸入流程名稱確認後,直接跳轉流程頁面,資料庫寫入第一步記錄。

流程啟動確認

表單資料持久化策略

填寫表單並流轉

採用「全 HTML 存儲」策略:將整個表單 HTML(含使用者輸入值)存入資料庫。流轉時讀取最新 HTML 顯示給下一關卡人員。
技術細節:$("#formTableID") 無法直接取得 value,需用 jQuery .attr('value', 文字值) 回寫 DOM 再存儲。

會簽(多經辦人)機制

會簽處理介面

  • 經辦人為多人時:除非是最後一人,否則不允許流轉下一步
  • 中間人員可填寫會簽意見、修改表單(覆蓋當前步驟 HTML)
  • 最後一人提交才真正流轉至下一步驟

已知缺陷與未來改進方向

  • 表單/流程設計皆為文字模式,缺乏視覺化拖拽設計器
  • 不支援子流程
  • 全 HTML 存儲雖簡單但效能與儲存空間較差,未來可改為結構化資料存儲

結語

這是一個從零開始的自定義工作流實踐,雖有不足,但核心流轉邏輯已跑通。後續規劃引入圖形化設計器、支援子流程、優化表單資料存儲結構,持續迭代完善。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved