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

Winform 開發框架簡易工作流引擎:半模塊化設計、表單代碼整合與審批操作全流程實現

     編輯:關於.NET

面對通用工作流產品「零代碼配置卻難應對複雜表單邏輯、外部介面、定製化需求」的痛點,本框架採用 半模塊化工作流:核心流轉引擎模塊化,表單與業務邏輯以代碼整合,兼顧靈活度與開發效率,已成功應用於廣州多區縣行業審批平台。

1. 設計模型:模板→步驟→實例→表單

  • 流程模板:預定義步驟序列、轉移規則
  • 流程步驟:節點屬性 (審批/閱辦/轉發/退回/撤銷)
  • 流程實例:運行時數據、當前步驟、業務表單綁定
  • 業務表單:UserControl 封裝,隨實例動態載入

流程模板

模板-步驟關係

完整對象關係

2. 審批操作標準化

核心動作:通過、拒絕、退回指定步驟、轉發閱辦、閱讀、起草人撤銷。統一封裝為標準界面,傳入 FlowID 即可操作:

操作分類

審批工具欄

多閱辦人處理:

多人閱辦

撤銷重編:

撤銷操作

3. 表單處理:UserControl + 動態工具欄

  • 填寫表單:專用 UserControl,含保存邏輯
  • 查看/處理一體化:表單詳情 UserControl + 動態構建工具欄

填寫表單

查看處理一體

4. 動態工具欄代碼核心

private void InitToolBar() {
    // 撤銷/退回編輯/閱辦狀態 按鈕可見性由業務規則決定
    bool mayCancel = BLLFactory<AppApply>.Instance.IsApplyMayCancel(ApplyId, LoginUserId);
    btnCancel.Visibility = mayCancel ? BarItemVisibility.Always : BarItemVisibility.Never;
    // ... 其它按鈕同理

    // 當前審批人動態添加「審批類型」按鈕
    if (canDeal) {
        var flowInfo = BLLFactory<ApplyFlow>.Instance.GetFirstUnHandledFlow(ApplyId);
        if (flowInfo != null) {
            var btn = new BarButtonItem {
                Caption = BLLFactory<AppProc>.Instance.GetProcType(flowInfo.ProcType),
                Tag = flowInfo, // 綁定流程上下文
                ItemClick += Button_ItemClick
            };
            bar1.AddItem(btn);
        }
    }
}

private void Button_ItemClick(object sender, ItemClickEventArgs e) {
    var flowInfo = (ApplyFlowInfo)e.Item.Tag;
    // 根據 flowInfo.ProcType 分派具體審批邏輯 (通過/退回/加簽等)
}

此設計實現:流程引擎穩定、表單業務靈活、工具欄動態、權限精準,避免了重型工作流產品的「配置地獄」與擴展瓶頸。

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