Easyflow.NET 如何在簽核中加入新的流程關卡

這次要在表單簽核流程中由程式判斷手動塞入新的流程關卡。所用的變數和先前開單塞流程中使用的是不一樣,至於為什麼不能用開單中所使用的變數我也不知道為何。相同的這次還是由雙檔表單的子單身中紀錄的人員作為塞入的流程關卡來作為操作範例。

一、取得紀錄 Grid 單身中人員的員工編號是使用 Easyflow 物件中內建的方法processor.getDataAdapter(sql_command) 直接由資料庫中抓取資料並填入 DataTable 物件的變數之中。在取得人員資料後就可以利用迴圈,將流程塞入表單流程異動子檔資料表中。

二、插入流程 於流程中使用表單流程資料表物件的方法「RstTRFlow.Tables[0].Add(my_datarow)」加入新的流程關卡。在這之前先必須藉由 「RstTRFlow.Tables[0].NewRow()」物件方法新增一個「DataRow」資料列件件(流程關卡資料列),再將這資料列物件的「key-value」資料補齊(設定方法如陣列元素給值那樣)。

函式「BeforeApprove」程式碼範例(完整檔案範例 TEST2.aspx.cs

	#region 簽核前處理
    protected override void BeforeApprove(PublicUTIL.DBProcessor processor)
    {
        base.BeforeApprove(processor);
        //取得單身欄位資料
        string sql_command = @"select empl1 from [EFNETDB].[dbo].[test2_2] where test2_2001='{0}' and test2_2002='{1}' ";
        sql_command = String.Format(sql_command, this.formID, this.SheetNo);
        SqlDataAdapter my_adapter = processor.getDataAdapter(sql_command);
        DataTable my_table= new DataTable();
        my_adapter.Fill(my_table);

        if (AryFlowProperty.SerialSignResult == "2") //同意
        {
            //如果關號是0010,則手動塞流程
            if (this.FlowNo == "0010")
            {
                int resdb003=9901;
                foreach( DataRow my_row in my_table.Rows )
                {
                        DataRow my_datarow = RstTRFlow.Tables[0].NewRow();//流程資料表建立一新的資料列
                        //開始設定資料列相關資資料
                        my_datarow["resdb001"] = formID;
                        my_datarow["resdb002"] = SheetNo;
                        my_datarow["resdb003"] = resdb003;
                        my_datarow["resdb004"] = "0010"; //支號
                        my_datarow["resdb005"] = 1; //流程角色
                        my_datarow["resdb006"] = 4; //簽核種類
                        my_datarow["resdb007"] = my_row["empl1"].ToString(); //流程角色參數1 (Grid物件中取得的員工編號值,中括號中填入"欄位名稱")
                        my_datarow["resdb008"] = ""; //流程角色參數2
                        my_datarow["resdb009"] = ""; //流程角色參數3
                        my_datarow["resdb010"] = ""; //流程角色參數4
                        my_datarow["resdb011"] = 0;  //容許簽核時間
                        my_datarow["resdb012"] = "N"; //自動ByPass?
                        my_datarow["resdb013"] = "0"; //ByPass方式
                        my_datarow["resdb014"] = "Y"; //是否強制簽核?
                        my_datarow["resdb015"] = "Y"; //是否單一簽核
                        my_datarow["resdb016"] = "N"; //可否列印?
                        my_datarow["resdb017"] = "Y"; //可否撤簽?
                        my_datarow["resdb018"] = "Y"; //可否加簽?
                        my_datarow["resdb019"] = "N"; //可否轉會?
                        my_datarow["resdb020"] = "N"; //可否轉寄?
                        my_datarow["resdb021"] = "N"; //可否新增附加檔?
                        my_datarow["resdb022"] = "N"; //可否修改附加檔?
                        my_datarow["resdb023"] = "N"; //可否刪除附加檔?
                        my_datarow["resdb024"] = "Y"; //可否閱讀附加檔?
                        my_datarow["resdb025"] = "N"; //簽核時密碼驗證?
                        my_datarow["resdb026"] = "N"; //流程是否已經解析?
                        my_datarow["resdb027"] = ""; //流程提示訊息
                        my_datarow["resdb028"] = ""; //
                        my_datarow["resdb029"] = ""; //
                        RstTRFlow.Tables[0].Rows.Add(my_datarow);//將資料列插入流程資料表中
                        resdb003++;
                }
            }
        }
    }
 #endregion

執行步驟說明:

程式碼 BeforeApprove 範例片段,利用這個函式在指定的關卡完成審核動作前加入新的流程關卡。

建立一張測試表單,加入兩位員工於單身中。

表單送出後,流程解析為兩關。

在第二關流程畫面中,解析流程已有新的流程加入。

第三關流程解析畫面

最後表單完成簽核

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s