中國聯(lián)通山西分公司MSS系統(tǒng)設(shè)計書-工作流引擎V50.doc
《中國聯(lián)通山西分公司MSS系統(tǒng)設(shè)計書-工作流引擎V50.doc》由會員分享,可在線閱讀,更多相關(guān)《中國聯(lián)通山西分公司MSS系統(tǒng)設(shè)計書-工作流引擎V50.doc(48頁珍藏版)》請在裝配圖網(wǎng)上搜索。
TW_OO_DESIGN_DOC_20021210-01A Confidential (秘密) OA 工作流引擎設(shè)計 說明書 Version 5.0 Written By TalkWeb TALKWEB 湖南拓維信息系統(tǒng)股份有限公司 2003,2004 All Rights Reserved 目錄 1 引言 4 1.1 編寫目的 4 1.2 縮略語 4 1.3 參考資料 4 2 軟件結(jié)構(gòu) 4 2.1 主要實現(xiàn)技術(shù) 4 2.2 引擎處理結(jié)構(gòu) 5 3 引擎涉及到的數(shù)據(jù)名稱規(guī)范 5 3.1 文件系統(tǒng)劃分 5 3.1.1 文件區(qū)命名規(guī)范 5 3.2 數(shù)據(jù)庫中表、字段命名規(guī)范 8 4 引擎異常處理機制 8 4.1 以前錯誤機制的缺陷 8 4.2 對錯誤機制的改進方法 9 5 引擎服務(wù)的類詳細說明 10 5.1 類的列表 10 5.2 引擎所有類的關(guān)系結(jié)構(gòu)圖 10 5.3 類的詳細設(shè)計 11 5.3.1 功能類別層中類的詳細說明 11 5.3.2 流程實例層中類的詳細說明 16 5.3.3 流程邏輯處理層中類的詳細說明 21 6 具體類的實現(xiàn)機制 29 7 數(shù)據(jù)庫字典 30 7.1 ER 圖 .30 7.2 數(shù)據(jù)字典 30 1. 主流程實例表(T_WorkFlow_FlowMain) .30 2. 主流程字段表(T_WorkFlow_MainField) 31 3. 主流程附件列表(T_WorkFlow_MainAtt) 32 4. 流程日志表(T_Flow_LogMsg) .32 5. 未結(jié)束流程環(huán)節(jié)日志信息表(T_Flow_LogStatus) .32 6. 未結(jié)束日志字段表(T_Flow_LogField) 33 7. 未結(jié)束日志附件列表(T_Flow_LogAtt) .33 8. 已結(jié)束流程環(huán)節(jié)日志信息表(T_Flow_EndLogStatus) 34 9. 已結(jié)束日志字段表(T_Flow_EndLogField) .34 10. 已結(jié)束日志附件列表(T_Flow_EndLogAtt) 35 11. 待辦信息表(T_WorkFlow_Notify) .35 12. 在辦信息表(T_WorkFlow_ZaiBan ) 35 13. 用戶公文郵件表(T_WorkFlow_UserMail) .36 14. 公文郵件字段表(T_WorkFlow_MailField) .36 15. 公文郵件附件列表(T_WorkFlow_MailAtt) 37 16. 需要修改的表、視圖的說明 37 8 附注 38 8.1 流程 狀態(tài)類型 38 8.2 處理標識 38 8.3 消息格式說明 38 8.4 與文件傳輸服務(wù)的接口 41 8.5 對傳閱的修改說明 41 8.6 與其他的外掛功能的接口 41 1 引言 1.1 編寫目的 本文檔是完全參照中國聯(lián)通總公司辦公自動化系統(tǒng)工作流模塊的詳細設(shè)計說明結(jié)合 山西聯(lián)通 MSS 系統(tǒng)建設(shè)現(xiàn)在來編寫的,并且在原有 4.0 版本的基礎(chǔ)上對工作流引擎的基本 結(jié)構(gòu)及基本實現(xiàn)做了較大的改進,軟件開發(fā)人員在此基礎(chǔ)上編寫程序代碼。 1.2 縮略語 WFE WorkFlow Engine 工作流引擎 1.3 參考資料 《流程定義設(shè)計書》 《工作流處理系統(tǒng)設(shè)計說明書(v4.0)》 《中國聯(lián)通總部 OA 系統(tǒng)設(shè)計變更的建議》 2 軟件結(jié)構(gòu) 2.1 主要實現(xiàn)技術(shù) 采用.Net 框架,用 C#編寫; SQL SERVER 數(shù)據(jù)庫存儲數(shù)據(jù); 文件系統(tǒng)存儲流程中所帶的工作附件(用到自定義的文件傳輸服務(wù)) ; 2.2 引擎處理結(jié)構(gòu) W e b 服務(wù)器 W e b 服務(wù)器 M S M Q A g e n t . . . M S M Q S e n d S e n d 分發(fā) 服務(wù) 工作流 引擎 工作流 引擎 R e c e i v e . . . . . . . . . . . . S e n d S e n d 數(shù)據(jù)庫服務(wù)器 M S M Q M S M Q . . . . . . 文件服務(wù)器 說明: 1. WEB 上的消息直接送到 MSMQ Agent 服務(wù)器上,由 Agent 上的一個消息分發(fā)服 務(wù)根據(jù)消息的緩急程度,將消息送到工作流引擎服務(wù)器上,不同的隊列中; (Agent 服務(wù)器上的分發(fā)服務(wù)另外設(shè)計開發(fā)) 2. 引擎服務(wù)器上開設(shè)多個隊列,針對每個 MSMQ,引擎服務(wù)都開了專門的線程對應(yīng) 處理; 3. 引擎服務(wù)在做處理的時候,主要是和數(shù)據(jù)層的文件服務(wù)器和數(shù)據(jù)庫服務(wù)器交互; 4. 引擎服務(wù)在程序出現(xiàn)異常的時候也有相應(yīng)的異常處理機制(具體機制后面會有詳 細說明) 3 引擎涉及到的數(shù)據(jù)名稱規(guī)范 3.1 文件系統(tǒng)劃分 文件系統(tǒng)分為五個區(qū) 盤符:\FileStore\Temp 臨時區(qū) 盤符:\ FileStore \OAMail\ 公務(wù)郵件區(qū) 盤符:\ FileStore \backup\ 備份區(qū) 盤符:\ FileStore \Doc\ 文檔歸檔區(qū) 盤符:\ FileStore \Mode\ 模板區(qū)(存放 Word 模板) 備注:以上的命名必須與引擎服務(wù)的配置文件保持一致 3.1.1 文件區(qū)命名規(guī)范 臨時區(qū)、備份區(qū)、公文郵件區(qū)命名:公司命名以公司 ID 命名,部門以部門 ID 命名,時間 以 yyyyMM 方式命名,流程實例 ID 已經(jīng)由工作引擎定義好了。附件命名以文件實際名稱 命名。備份區(qū)備份序號采用數(shù)字遞增方式命名。 文檔歸檔區(qū)命名:采用公司 ID,部門 ID 命名公司文件夾和部門文件夾,時間以 yyyyMM 方 式命名,所有文件夾及文件不能采用中文方式命名,附件命名采用 Guid 方式命名,擴展名稱 保持原有擴展名。 ? 臨時區(qū) Unicomgd Temp 流程實例 ID 時間(年月) 部門 ID 公司 ID 文件實際名稱+原擴展名 ? 文檔歸檔區(qū) Unicomgd Doc 時間(年月) 部門 ID 公司 ID GUID+原擴展名 流程實例 ID 說明: 流程結(jié)束后附件將歸檔到此處 ? 備份區(qū) Unicomgd backup 流程實例 ID 時間(年月) 部門 ID 公司 ID 步驟處理序號 文件實際名稱+原擴展名 步驟處理序號= T + 遞增的數(shù)字 =用戶 ID+yyyyMMddhhmmssmi 說明: 一個流程實例每個走一個步驟就會在備份去存放一個備份,只到流程實例結(jié) 束后才由工作流引擎刪除 ? 公務(wù)郵件區(qū) Unicomgd OAMail 公司名稱 ID 流程實例 ID 傳 閱 主抄送 文件實際名稱+原擴展名 文件實際名稱+原擴展名 年月 閱 辦 文件實際名稱+原擴展名 說明:公務(wù)郵件區(qū)為用戶個人存放傳閱文件、閱辦文件和主送、抄送的文件,在同一個流 程中,在傳閱、閱辦和主送、抄送時是多個人共享一份文件。 3.2 數(shù)據(jù)庫中表、字段命名規(guī)范 1. 數(shù)據(jù)庫表是以 T_開頭; 2. 數(shù)據(jù)庫視圖是以 V_開頭 ; 3. 數(shù)據(jù)庫函數(shù)是以 SF_開頭; 4. 數(shù)據(jù)庫存儲過程是以 SP_開頭; 5. 每個表中的字段,要以意思明確為標準; 4 引擎異常處理機制 4.1 以前錯誤機制的缺陷 引擎對于出錯的消息,重新處理的時間間隔太短。而對數(shù)據(jù)庫的壓力很大時, 頻 繁的數(shù)據(jù)庫操作可能導(dǎo)致數(shù)據(jù)庫死鎖,超時等錯誤,對于這些錯誤系統(tǒng)自動恢復(fù)需 要 的時間較長,兩者的矛盾導(dǎo)致了過多的工作流請求出現(xiàn)回滾。 4.2 對錯誤機制的改進方法 對于可能出現(xiàn)的異常錯誤,我們采用多級錯誤隊列的處理方式,對于不同的錯 誤 隊列分情況用不同的重試時間,確保每一個錯誤都可以經(jīng)過足夠長的時間進行嘗試, 從而盡量避免因為數(shù)據(jù)庫或者其他系統(tǒng)資源繁忙導(dǎo)致引擎處理不過來而回滾。 具體錯誤處理機制圖如下: 正 常處理隊列 異常處理隊列1 異常處理隊列2 異常處理隊列3 對進 來的消息及時 ,的 處理 實時響應(yīng) 正常 處理失敗了送 到異常隊列1 中 對進來的消息每隔5 分鐘 處理一個消息 異常隊列2 失敗了送 到異常隊列3 中 對進 來的消息每隔 1 0 分鐘處理一個消 息 異常隊列1 失敗了送 到異常隊列2 中 說明: 1. 消息首先被送到正常隊列中,等待處理; 2. 當(dāng)正常處理失敗的時,先送入異常處理隊列 1 中,等待 5 分鐘后處理該 消息; 3. 當(dāng)在異常處理隊列 1 中處理失敗的時,先送入異常處理隊列 2 中,等待 10 分鐘后處理該消息; 4. 當(dāng)在異常處理隊列 2 中處理失敗的時,先送入異常處理隊列 3 中,等待 15 分鐘后處理該消息; 5. 處理的時間間隔可以根據(jù)實際系統(tǒng)性能的需要做相應(yīng)的調(diào)整; 6. 錯誤的隊列也可以通過配置文件來配置; 7. 對于多次處理也失敗的消息,保存到日志或者數(shù)據(jù)庫中,用另外的監(jiān)控程序 做監(jiān)控,等待修改后處理. 5 引擎服務(wù)的類詳細說明 5.1 類的列表 類名 類說明 WorkEnginerCls.cs 工作流處理類(即單個的線程) ,負責(zé)工作流的處理 SocketCls.cs 文件處理類,負責(zé)向文件服務(wù)器發(fā)送指令,等待返回的 結(jié)果 ConstCls.cs 定義了整個工程都需要用到的常量和方法 DBDealCls.cs 數(shù)據(jù)庫交互類,負責(zé)對數(shù)據(jù)庫進行操作 MSMQCls.cs 負責(zé)對消息隊列進行操作 SmsCls.cs 對短信處理的類 WorkFlowDefineCls.cs 流程實例的基本信息定義類 WorkFlowCntrCls.cs 流程實例的基本信息控制類 StatusCls.cs 流程中每個狀態(tài)的基本信息類 DisposalCls.cs 流程中每個處理的基本信息類 UserCls.cs 用戶基本信息類 5.2 引擎所有類的關(guān)系結(jié)構(gòu)圖 DBDealCls.cs ConstCls.cs MSMQCls.cs SMSCls.csSocketCls.cs 功能類別層 WorkFlowDefineCls.cs StatusCls.cs DisposalCls.csUserCls.cs 流程實例層 WorkEnginerCls.cs 邏輯實現(xiàn)層 層 WorkFlowCntrCls.cs 5.3 類的詳細設(shè)計 5.3.1 功能類別層中類的詳細說明 5.3.1.1ConstCls 類 類名 ConstCls 父類名 責(zé)任描述 ? 定義的靜態(tài)方法 ? 定義全局的常量(各個線程獨自占有) 協(xié)同類 全局常量 類型 值 UrlCompart char ‘#’ ConfigCompart char ‘=’ C_User char ‘;’ cntFileCompart char ‘*’ C_Chr1 char (char)1 C_Chr2 char (char)2 C_Chr3 char (char)3 C_Chr4 char (char)4 C_Rep1 string ]#$!%[ C_Rep2 String “]#$%![“ C_Rep3 String “]$#!%[“ C_Rep4 string “]!#$%[“ cntFileEnd string “\n“ cntFileQuit string “QUIT“ cntMSMQ string @“\private$\“ cntCFiles string “COPY“ cntDFiles string “MOVE“ cntMFiles string “MOVE“ C_PassDir string “傳閱“ C_MotifDir string “主抄送“ C_TypeZhu string “主辦“ C_TypeXie String “協(xié)辦“ C_TypeYue String “閱辦“ C_Compart String @“\“ C_DubCompart String “\\“ C_Udept String “`“ 方法說明 方法名 1 ResolveStr () 類型 public static string[] Description 字符串解析方法 Input SrcStr,string 型,需要解析的字符串;Flag,char 型,字符串的分割符 Output StrArr[] 解析后產(chǎn)生的字符串?dāng)?shù)組 方法名 2 WriteLog () 類型 public static void Description 當(dāng)操作失敗時,寫出錯日志 Input string LogMsg, 出錯信息 string FilePath 日志文件所在的路徑 Output 5.3.1.2SocketCls 類 類名 FileCntrCls 父類名 責(zé)任描述 ? 提供指示文件服務(wù)器操作附件的方法 協(xié)同類 ConstCls CnnSocket 方法說明 方法名 1 DealFileSys () 類型 Public bool Description 發(fā)送命令到文件服務(wù)器 Input Socket Skt,連接服務(wù)器的 SOCKET,string CmdFile 要操作的文件的命令行 Output 成功則返回 TRUE,否則返回 FALSE 方法名 2 SendFileMsg () 類型 public string Description 與文件服務(wù)器建立連接,并且將指定的操作送到文件服務(wù)器上,并等待服務(wù)器操 作后返回的結(jié)果。 Input string AllDealFileStr 所有要發(fā)送的命令組成的一個字符串 格式是:命令 1;命令 2;。。。/n Output 成功則返回 TRUE,否則返回 FALSE 5.3.1.3DBDealCls 類 類名 DBDealCls 父類名 責(zé)任描述 ? 提供連接數(shù)據(jù)庫的方法 ? 查詢方法 ? 事務(wù)執(zhí)行的方法 ? 斷開數(shù)據(jù)庫的方法 協(xié)同類 FileDealCls 方法說明 方法名 1 DBDealCls () 類型 public void Description 類的構(gòu)造函數(shù),建立數(shù)據(jù)庫連接,實例化文件類。調(diào)用到了 Open_Cnn 發(fā)生 錯誤時拋出錯誤,讓上一級處理 Input string CnnStr 連接數(shù)據(jù)庫字符串 Output 方法名 2 Open_Cnn () 類型 public void Description 建立數(shù)據(jù)庫連接 Input Output 方法名 3 Close_Cnn () 類型 private void Description 關(guān)閉數(shù)據(jù)庫連接,釋放連接實例 Input Output 方法名 4 Query () 類型 public DataTable Description 根據(jù)傳入的查詢語句,得到一個記錄集,并返回 Input SqlStr, string型,查詢語句 Output 類型 DataTable 方法名 5 ExecuteTran () 類型 public bool Description 有事務(wù)處理的方法 Input SqlArr 字符串?dāng)?shù)組(包含要操作的所有 SQL語句), Output TRUE表示事務(wù)執(zhí)行成功,F(xiàn)ALSE 表示執(zhí)行失敗 方法名 6 ExecuteTran () 類型 public bool Description 有事務(wù)處理的方法 Input SqlArr 字符串?dāng)?shù)組(包含要操作的所有 SQL語句), 包含文件系統(tǒng)的操作類型和所 涉及的附件 Output TRUE表示事務(wù)執(zhí)行成功,F(xiàn)ALSE 表示執(zhí)行失敗 方法名 7 RollBackFile () 類型 public bool Description 到出錯時需要恢復(fù)文件系統(tǒng)的機制 Input ArrayList AttachMentDeal 包含文件系統(tǒng)的操作類型和所涉及的附件 Output TRUE表示執(zhí)行成功,F(xiàn)ALSE 表示執(zhí)行失敗 5.3.1.4MSMQCls 類 類名 MSMQCls 父類名 責(zé)任描述 ? 創(chuàng)建消息隊列的方法 ? 發(fā)送消息到隊列的方法 ? 從指定的隊列中讀取消息 ? 刪除指定名稱的消息隊列方法 協(xié)同類 ConstCls 方法說明 方法名 1 CreateMSMQ () 類型 public bool Description 在指定機器上創(chuàng)建指定名稱的消息隊列 Input MSMQPath string 消息隊列的名稱 Output TRUE 表創(chuàng)建成功,F(xiàn)ALSE 表創(chuàng)建失敗 方法名 2 SendMsg () 類型 public bool Description 將指定的消息發(fā)送到指定隊列中 Input MsmqPath string 消息隊列的路徑,System.Messaging.Message ObjMsg 要 發(fā)送的消息對象 Output TRUE 表發(fā)送成功,F(xiàn)ALSE 表發(fā)送失敗 方法名 3 OnReceiveCompleted () 類型 public void Description 事件綁定的具體方法 Input Source 觸發(fā)事件的源 ReceiveCompletedEventArgs asyncResult 異步 Output Object 返回讀到的消息 方法名 4 DelMsmq () 類型 public bool Description 刪除指定的消息隊列 Input MsmqPath string 消息隊列的路徑 Output TRUE 表刪除成功,F(xiàn)ALSE 表刪除失敗 5.3.2 流程實例層中類的詳細說明 5.3.2.1WorkFlowDefineCls 類 類名 WorkFlowDefineCls 父類名 責(zé)任描述 ? 流程實例基本信息類 協(xié)同類 ConstCls 屬性 類型 說明 FlowID string 流程實例 ID Title String 流程實例的標題 Action String 動作處理標識 FlowTypeID Int 流程類型 ID FlowTypeName String 流程類型名稱 Creator UserCls 流程創(chuàng)建者的用戶類 CreateTime String 流程創(chuàng)建的時間 ParentWorkFlow WorkFlowCls 父流程的類 FormClass String HuanJi String 緩急程度 MiJi String 密集程度 IS_PIGEONHOLE int 是否歸檔標志 ModifyFlag String 對應(yīng) SpecialID 處理情況(False + chr(1) + False)表示會簽的情況 BrachResult Int 合流標示(1:表示合流,0 表示未 合流) SpeciID String 分支標記(用戶 A + chr(1) + 用戶 B) Fields String 流程的附件字段(字段名 + chr(1) + 字段值 + chr(2) + 字段名 + chr(1) + 字段值) AttachMents String 流程帶的附件的名稱和路徑(附件 名 + chr(1) + 附件路徑 + chr(2) + 附件名 + chr(1) + 附件路徑) MergeField String 合流時需要合并的字段(字段名; 字段;。 。 。 。字段名) PIGEONHOLEDeptNam e String 該文要歸入的部門名稱 FileClass String 請看消息的 FileClass的解釋 FileFlag Int 請看消息的 FileFlag的解釋 CurStatus StatusCls 流程走到的當(dāng)前的狀態(tài) Company_ID int 流程所在的公司 ID 5.3.2.2WorkFlowCntrCls 類 類名 WorkFlowCntrCls 父類名 責(zé)任描述 ? 流程實例基本信息類 協(xié)同類 ConstCls 方法說明 方法名 1 CommState 類型 private void Description 處理普通狀態(tài)的方法(普通狀態(tài)和開始的進行一樣的處理) Input Output 方法名 2 EndState 類型 private void Description 處理結(jié)束狀態(tài)的方法 Input Output 方法名 3 ChildFlow 類型 private void Description 處理子流動作 Input Output 方法名 4 ChildFlow_Wait_SameTi me 類型 private void Description 處理等待、同時子流動作(傳閱的時候起作用) Input Output 方法名 5 ChildFlow_NotWait_Sam eTime 類型 private void Description 處理不等待、同時子流動作(傳閱)沒有寫日志的 Input Output 方法名 6 DivideFlow 類型 private void Description 處理分流 Input Output 方法名 7 MergeFlow 類型 private void Description 處理合流 Input Output 方法名 8 HurryAct 類型 private void Description 處理催辦動作 Input Output 方法名 9 RenewAct 類型 private void Description 處理普通狀態(tài)的方法(普通狀態(tài)和開始的進行一樣的處理) Input Output 方法名 10 ReteatAct 類型 private void Description 處理撤回動作 Input Output 方法名 11 DisposeAct 類型 private void Description 處理作廢動作 Input Output 方法名 12 GetFlowLogMsg 類型 private void Description 得到當(dāng)前流程得日志信息 Input Output 方法名 13 類型 private void Description 處理作廢動作 Input Output 5.3.2.3StatusCls 類 類名 StatusCls 父類名 責(zé)任描述 ? 流程狀態(tài)基本信息類 協(xié)同類 屬性 類型 說明 FlowID string 流程實例 ID FlowTypeID Int 流程類型 ID FlowTypeName String 流程類型名稱 StatusName String 狀態(tài)的名稱 StatusTypeName String 狀態(tài)類型的名稱 StatusTypeID int 狀態(tài)類型的 ID INTERFLOW_CUSTOM_ RULE string 合流自定義規(guī)則 INTERFIX_FIELD string 相關(guān)字段 COM_EXTEND string Com 擴展 CHILD_FLOW_TYPE string 子流(分流)類型 CHILD_FLOW_HINT string 子流提示 CHILD_FLOW string 子流 CHANGE_FLOW _NAME string 轉(zhuǎn)流程流程名 CHANGE_FLOW _ID Int 轉(zhuǎn)流程流程 ID CHANGE_STAT US_NAME string 轉(zhuǎn)流程狀態(tài)名稱 CHANGE_STAT US_ID Int 轉(zhuǎn)流程狀態(tài) ID AUTO_FIELD_L IST string 自動列表 AUTO_CUSTOM _RULE string 自動自定義規(guī)則 AUTO_FIELD_N AME string 自動字段名稱 INTERFLOW_U NITE_LIST string 合流自定義規(guī)則 OperationRole _ID Int 業(yè)務(wù)角色 ID USERROLE_ID Int 用戶角色 ID NextStatus HashTable 由下一步狀態(tài)作為元素組成的 HashTable FromDisposal DisposalCls 本狀態(tài)從哪個動作過來 方法名 1 GetStatusMsg 類型 private void Description 得到狀態(tài)的信息,對屬性賦值 Input String FlowID 流程ID,string StatusID 狀態(tài)ID Output 方法名 2 GetNextStatusMsg 類型 private HashTable Description 得到當(dāng)前狀態(tài)所有下一步狀態(tài)的信息,給屬性賦值 Input String FlowID 流程ID,string StatusID 狀態(tài)ID Output 由所有下一步狀態(tài)信息組成的HashTable 5.3.2.4DisposalCls 類 類名 DisposalCls 父類名 責(zé)任描述 ? 流程處理基本信息類 協(xié)同類 ConstCls 屬性 類型 說明 FlowID string 流程實例 ID FlowTypeID Int 流程類型 ID FlowTypeName String 流程類型名稱 DISPOSAL_ID Int 處理過程 ID DISPOSAL_HINT String 處理過程提示 DISPOSAL_NAME String 處理過程名稱 TRANSACT_STAT US_ID Int 經(jīng)辦狀態(tài) DEPT_LIMIT Int 同部門限制 ROLE_LIMIT Int 同角色限制 CUR_STATUS_ID Int 當(dāng)前環(huán)節(jié) ID PRE_STATUS_ID int 上環(huán)節(jié) ID GROUP_LIMIT Int 同組限制 方法名 1 GetDisponsalMsg 類型 private void Description 得到處理步驟的信息 Input int FlowTypeID 流程類型ID,int PreStatus_ID,上一個狀態(tài)ID,int CurStatus_ID 當(dāng)前狀態(tài)ID Output 5.3.2.5UserCls 類 類名 UserCls 父類名 責(zé)任描述 ? 用戶基本信息類 協(xié)同類 ConstCls 屬性 類型 說明 UserID string 用戶 ID DeptID Int 用戶所在的部門 ID DeptName String 用戶所在的部門名稱 RoomID Int 處室 ID RoomName String 處室名稱 UserName String 用戶中文名 CompanyID Int 用戶所在的公司 ID CompanyName String 用戶所在的公司名稱 OPERRoleID String 用戶所屬的角色 ID OPERRoleName String 用戶所屬的角色名稱 UserOrderby Int 用戶的排序字段 RoomOrderBy Int 處室排序字段 DeptOrderBy Int 部門排序字段 CompanyOrderBy Int 公司排序字段 方法名 1 GetUserMsg 類型 private void Description 得到用戶信息 Input string UserID 用戶ID,string CnnStr 數(shù)據(jù)庫連接 Output 5.3.3 流程邏輯處理層中類的詳細說明 5.3.3.1WorkEnginerCls 類 類名 WorkEnginerCls 父類名 責(zé)任描述 ? 連接數(shù)據(jù)庫 ? 掃描工作流引擎表(是一個視圖) ? 對動作和狀態(tài)做處理 協(xié)同類 使用 FileDealCls 對文件系統(tǒng)的操作 使用 DBDealCls 對數(shù)據(jù)庫進行操作 使用 ConstCls 調(diào)用系統(tǒng)常量 方法說明 方法名 1 WorkEnginerRun() 類型 public void Description 工作流引擎工作的方法,創(chuàng)建隊列和線程,并且綁定關(guān)系,調(diào)用方法 AssembleMethod處理取得的消息,并做相應(yīng)的邏輯處理。 Input Output 方法名 2 AssembleMethod () 類型 public void Description 將取得的消息轉(zhuǎn)變成為結(jié)構(gòu)體,再執(zhí)行具體的處理方法 Input Output 方法名 3 XMLToStruct () 類型 private bool Description 分解得到的消息,將消息中的信息組合成 ItemMsg類型的數(shù)據(jù) Input MSXML2.DOMDocument ObjDom,由消息中的正文所得到的 MSXML2.DOMDocument對 象 Output 轉(zhuǎn)變正確的則返回 TRUE,否則返回 FALSE 方法名 DealWorkFlow () 類型 public void Description 對各種動作和狀態(tài)的處理 Input Output 方法名 AgainDealMethod () 類型 public void Description 處理由于連接失敗而導(dǎo)致未處理的情況。 Input Output 方法名 CorrectMethod () 類型 public void Description 創(chuàng)建的糾錯線程,主要是在做糾錯處理的時使用 Input Output 方法名 FileSrvDealMethod () 類型 private void Description 主要用于處理在沒有連接文件服務(wù)成功時放入隊列的消息 Input Output 方法名 4 CommState() 類型 private void Description 對普通、開始狀態(tài)和跳轉(zhuǎn)動作進行處理 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,int LogFlag,日志處理的標志位(0:開始的時 候,1:非開始的時候,2:結(jié)束)FrmWorkEnginer WinEnginer(在應(yīng)用程序中用到, 服務(wù)中沒有) Output 方法名 5 EndState () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 DecomposeFields(),GetFileName(),MergeUrl(), GetNewAttachment(),BeginState(),GetLogSql(),MoveLog(),DeleteAllTable() CanZhuChaosong(),GetZhuChaoUrl(),DealZhuChaoSong(),EnginerDB.ExecuteTra n() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 6 HurryAct () 類型 private void Description 對催辦進行處理,調(diào)用了 DealUserMail(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 7 RenewAct () 類型 private void Description 對重發(fā)進行處理,調(diào)用了 ConstCls.ResolveStr(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 8 DisposeAct () 類型 private void Description 對作廢進行處理,調(diào)用了 MoveLog(),DeleteAllTable(),DealUserMail(), DelMergeUrl(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 10 ReteatAct () 類型 private void Description 對撤回進行處理,調(diào)用了 EnginerDB.Query(),DecomposeFields(), DealNotify(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 11 ChildFlow () 類型 private void Description 對子流進行處理,調(diào)用了 ChildFlow_Wait_SameTime (), ChildFlow_NotWait_SameTime (),ChildFlow_NotWait_Order (), ChildFlowEnd () 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 12 ChildFlow_Wait_SameTime() 類型 private void Description 對結(jié)束進行處理,調(diào)用了 GetRealPath (),GetFileName(),MergeUrl(), GetNewAttachment(),DealerToSql (),DealZaiBan (),DealFlowMain (), GetLogSql(),EnginerDB.ExecuteTran () 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 13 ChildFlow_NotWait_SameTime () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 GetRealPath(),GetFileName(),MergeUrl(), GetNewAttachment(),DealUserMail(),GetLogSql(),DealZaiBan (), DealFlowMain (),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 14 ChildFlow_NotWait_Order () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 GetRealPath(),GetFileName(),MergeUrl(), GetNewAttachment(),DealUserMail(),GetLogSql(),DealZaiBan (), DealFlowMain (),GetUserDept(),GetUserCom(),EnginerDB.ExecuteTran() DealNotify(),DealFlowMain() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 15 ChildFlowEnd() 類型 private void Description 對結(jié)束進行處理,調(diào)用了 DelMergeUrl (),GetFields (),MoveLog (), DeleteAllTable (),DealUserMail(),GetLogSql(),DealZaiBan (), DealFlowMain (),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 16 DivideFlow () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 DecomposeFields (),GetFileName (),MergeUrl(), GetNewAttachment(),DealFlowMain (),GetLogSql(),GetUserDept (), GetUserCom (),ChildFileDeal(),GetOneArr(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 17 ChildFlow_NotWait_SameTime () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 GetRealPath(),GetFileName(),MergeUrl(), GetNewAttachment(),DealUserMail(),GetLogSql(),DealZaiBan (), DealFlowMain (),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 18 MergeFlow () 類型 private void Description 對結(jié)束進行處理,調(diào)用了 DecomposeFields (),GetFileName(),MergeUrl(), GetNewAttachment(),MoveLog (),GetLogSql(),DealZaiBan (),DealFlowMain (), GetMergeField(),DealNotify(),DealZaiBan(),EnginerDB.ExecuteTran() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 方法名 19 GetMergedField() 類型 private string Description 對結(jié)束進行處理,調(diào)用了 EnginerDB.Query(),DecomposeFields() 若出錯,寫出錯信息,錯誤的流程等待下一次處理(最多處理 3 次) Input ItemMsg TmpRsd,要處理的結(jié)構(gòu)體,F(xiàn)rmWorkEnginer WinEnginer(在應(yīng)用程序中用 到,服務(wù)中沒有) Output 合并后的字段 方法名 20 GetFieldValue () 類型 private string Description 返回查找到的字段的值 Input SrcStr string Field string Output 返回查找到的字段的值 方法名 21 GetOneArr () 類型 private string[] Description 將數(shù)組的數(shù)組轉(zhuǎn)變成一維數(shù)組 Input TmpArr string[][] Output 一維數(shù)組 方法名 22 ChildFileDeal () 類型 private string[] Description 對各個子流程的文件系統(tǒng)的處理 Input FNameUrl Field型,ATTACHMENT所組成的結(jié)構(gòu)體數(shù)組,TmpRsd ItemMsg型,某條 DB中記錄組成的結(jié)構(gòu)體,UserID string型 用戶ID, ChCreateTime string型 創(chuàng) 建時間 ChDept string型,用戶所在部門,ChCom string型,用戶所在公司, ChFlowID string型,子流程ID,FileName string[]型,文件的名稱 Output 返回操作文件系統(tǒng)的字符串?dāng)?shù)組 方法名 23 ChildDBDeal () 類型 private string[] Description 對各個子流程的數(shù)據(jù)庫的處理, ChildSql(),DealNotify(),GetLogSql() Input FNameUrl Field型,ATTACHMENT所組成的結(jié)構(gòu)體數(shù)組,UserID string型 用戶 ID, ChCreateTime string型 創(chuàng)建時間 ChDept string型,用戶所在部門, ChCom string型,用戶所在公司,ChFlowID string型,子流程ID,TmpRsd ItemMsg型,某條DB中記錄組成的結(jié)構(gòu)體,ChAttachments string型,工作區(qū)的文 件存放字符串 ChBackAttachment string型,備份區(qū)的文件存放字符串 Output 返回操作數(shù)據(jù)庫的字符串?dāng)?shù)組 方法名 24 GetFileName () 類型 private string[] Description 得到文件系統(tǒng)中的文件存放名稱 Input FNameUrl Field型,ATTACHMENT 所組成的結(jié)構(gòu)體數(shù)組,F(xiàn)lag int 0:非結(jié)束, 1:結(jié)束 Output 返回文件名稱 方法名 25 GetNewAttachment () 類型 private string Description 得到新的 ATTACHMENT Input fileNames string[]型,所有的文件名稱,fileArr string[]型,新的 URL Output 返回 ATTACHMENT 方法名 26 GetFields () 類型 private string Description 更新主流程的附加字段表 Input Fields88 帶 88的字段,F(xiàn)lowID 要查找的流程 Output 更新的字符串 方法名 27 ChildSql () 類型 private string[] Description 處理等待、同時子流動作(并發(fā)串改的時候起作用) Input ItemMsg TmpRsd,string ChildFlowID,string Receiver,string ChAttachments Output 返回操作數(shù)據(jù)庫的字符串?dāng)?shù)組 方法名 28 DealSpecialID () 類型 private ItemMsg Description 修改結(jié)構(gòu)體中的 SPECIAID和 MODIFYFLAG的值 Input TmpRsd ItemMsg 型, Output 修改后的結(jié)構(gòu)體 方法名 29 DealNotify () 類型 private string Description 操作待辦表 Input ItemMsg TmpRsd,string UserID,string FlowID Output 操作的 SQL語句 方法名 30 DealZaiBan () 類型 private string Description 操作在辦表 Input TmpRsd ItemMsg型,某條 DB中記錄組成的結(jié)構(gòu)體 Output 操作的 SQL語句 方法名 31 DealFlowMain () 類型 private string[] Description 操作實例表和引擎表 Input TmpRsd ItemMsg型,某條 DB中記錄組成的結(jié)構(gòu)體 ParentID string Output 操作的 SQL語句 方法名 32 DealUserMail () 類型 private string[] Description 對用戶郵件表進行操作(GetMaxID) Input TmpRsd ItemMsg型,某條 DB中記錄組成的結(jié)構(gòu)體 Flag int 0:作廢,1:催辦,2: 傳閱,3:主抄送 Output 返回對用戶郵件表進行操作的SQL語句組 方法名 33 GetMaxID () 類型 private int Description 得到最大的 ColName EnginerDB.Query( Input TableName string 表名稱,ColName string 列名稱 Output 返回對用戶郵件表進行操作的SQL語句組 方法名 34 DeleteAllTable () 類型 private string[] Description 刪除出日志表外的所有的其他表中某個流程的記錄 Input Flow_id string 表流程實例 ID Output 所有的刪除SQL數(shù)組 方法名 35 MoveLog () 類型 private string[] Description 轉(zhuǎn)移 t_flow_logstatus 中的記錄到 t_flow_endlogstatus Input Flow_id string 表流程實例 ID Output 所有的轉(zhuǎn)移SQL數(shù)組 方法名 36 DealUserMail () 類型 private string[] Description 對用戶郵件表進行操作(GetMaxID) Input TmpRsd ItemMsg型,某條 DB中記錄組成的結(jié)構(gòu)體 Flag int 0:作廢,1:催辦,2: 傳閱,3:主抄送 Output 返回對用戶郵件表進行操作的SQL語句組 方法名 37 CanZhuChaosong() 類型 private string Description 判斷是否需要主送抄送 Input TmpRsd.Fields 結(jié)構(gòu)體附加字段 Output 返回一個字符串 方法名 38 DealZhuChaoSong () 類型 private string[] Description 得到主送抄送的 SQL語句 Input TmpRsd 結(jié)構(gòu)體, string TxtToCC(主送抄送的所有的接受者) MailAttachMent string 沒有“正文原稿”和“稿紙” Output 返回一個SQL數(shù)組 方法名 39 DocSql () 類型 private string[] Description 能進此函數(shù)表明,所有的文檔管理的條件已經(jīng)符合。 得到插入文檔管理系統(tǒng)表的 SQL語句 Input ItemMsg TmpRsd,Field[] FileUrl,string[] HttpUrl Output 返回一個SQL數(shù)組 方法名 40 DealPignohole () 類型 private string[][] Description 用于歸檔的函數(shù),返回字符串?dāng)?shù)組數(shù)組 Input ItemMsg TmpRsd,Field[] FNameUrl Output 返回二維字符串?dāng)?shù)組 方法名 41 GetDeptID () 類型 private string Description 根據(jù)公司 ID得到本公司的行政部的 ID Input CompanyID string Output 部門ID 方法名 42 GetLogSql () 類型 private string[] Description 根據(jù)傳入的結(jié)構(gòu)體, 返回一個 SQL數(shù)組 Input TmpRsd,NewattachMent,DealFlag(0:開始的時候,1:非開始的時候,2:結(jié)束) Output 返回一個SQL數(shù)組 方法- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
4 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 中國聯(lián)通 山西 分公司 MSS 系統(tǒng) 設(shè)計 工作流 引擎 V50
鏈接地址:http://m.hcyjhs8.com/p-1574348.html