




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、The best solution forhow to develop WEB application on .Net quickly and efficientlyUCML工作流系統(tǒng)與現(xiàn)有應(yīng)用系統(tǒng)集成實現(xiàn)方案說明金富瑞(北京)科技有限公司Goldframe Technologies Co., Ltd.一 總體說明UCML.Net工作流系統(tǒng)是國內(nèi)領(lǐng)先的工作流平臺,涵蓋了從流程開發(fā)、發(fā)布、管理配置到運(yùn)行、監(jiān)控的整個過程。UCML工作流系統(tǒng)主要包括可視化的流程設(shè)計環(huán)境、獨立的工作流引擎服務(wù)、WEB客戶端管理、可視化的流程監(jiān)控、流程套路生產(chǎn)線幾個部分,是.Net領(lǐng)域用戶最多,覆蓋面最廣的工作流平臺。
2、一方面,UCML工作流系統(tǒng)與UCML平臺其它部分(業(yè)務(wù)單元開發(fā),Web報表)無縫集成,可以完成復(fù)雜的業(yè)務(wù)處理及流程流轉(zhuǎn);另一方面,UCML工作流系統(tǒng)與業(yè)務(wù)之間采用松耦合設(shè)計,不僅可以與UCML業(yè)務(wù)系統(tǒng)集成,還可以與其它現(xiàn)成的應(yīng)用系統(tǒng)實現(xiàn)無縫集成。UCML工作流在與其它應(yīng)用系統(tǒng)集成時,一般有兩種方式:第一種:保留UCML現(xiàn)有的組織機(jī)構(gòu)、用戶及權(quán)限體系第二種:完全屏蔽UCML提供的組織機(jī)構(gòu)、用戶及權(quán)限體系,完全采用客戶原有的組織機(jī)構(gòu)權(quán)限體系。對于第一種方式,需要另外實現(xiàn)UCML系統(tǒng)與客戶現(xiàn)有應(yīng)用系統(tǒng)之間的數(shù)據(jù)同步,具體方法可采用程序同步方式,在這里就不詳細(xì)介紹了。下面主要介紹一下采用第二種方式時的
3、處理方法。二 UCML Workflow會話編程接口UCML Workflow 提供了WorkFlow.WorkFlowSession會話類來訪問工作流引擎, WorkFlow.WorkFlowSession以.Net Remoting服務(wù)形式形式存在于工作流引擎的獨立進(jìn)程中,客戶端可以創(chuàng)建WorkFlow.WorkFlowSession的Client端來來調(diào)用服務(wù)端的接口。 Ø 創(chuàng)建工作流會話對象WorkFlow.WorkFlowSession FlowSession = (WorkFlow.WorkFlowSession)Activator.G
4、etObject(typeof(WorkFlow.WorkFlowSession), "tcp:/"+WorkFlow.UCMLInitEnv.WorkflowEngineAddr+":"+WorkFlow.UCMLInitEnv.WorkflowEnginePort+"/WorkFlowSession"); Ø 程序啟動工作流程 public Guid CreateInstance(strin
5、g FlowID,Object UserOID,Object PostnOID, Object DivisionOID,Object ORGOID, bool startNow) 通過調(diào)用CreateInstance函數(shù),可以啟動指定的工流程。 返回值:流程實例句柄。 參數(shù)名稱類型參數(shù)說明FlowIDstring要啟動的流程編號 UserOIDObject起動流程的用戶OID,實際類型為GUIDPostnOIDObject起動流程的員工OID,實際類型為GUIDDivisionOIDObject起動流程的員工所在部門的OID
6、,實際類型為GUIDORGOIDObject起動流程的員工所在組織的OID,實際類型為GUIDstartNowBool=true 流程是馬上啟動; =false 流程暫不啟動,要啟動流程需調(diào)用StartInstance函數(shù),這種情況一般用于在業(yè)務(wù)(如客戶訂單)提交成功后,先寫入訂單號到流程實例中,然后在啟動流程。 Ø 向流程全局?jǐn)?shù)據(jù)寫入數(shù)據(jù) public void WriteFlowData(string FlowID, Object InstanceID, string FieldName,Object Value) 參數(shù)名稱類
7、型參數(shù)說明FlowIDstring數(shù)據(jù)項所屬的流程編號 InstanceIDObject流程的實例句柄,實際類型為GUIDFieldNamestring數(shù)據(jù)的屬性名稱ValueObject數(shù)據(jù)的屬性的值 Ø 從流程全局?jǐn)?shù)據(jù)讀出數(shù)據(jù)public Object ReadFlowData(string FlowID, Guid InstanceID, string FieldName) 返回值:讀取數(shù)據(jù)屬性的值 參數(shù)名稱類型參數(shù)說明FlowIDstring數(shù)據(jù)項所屬的流程編號
8、 InstanceIDObject流程的實例句柄,實際類型為GUIDFieldNamestring數(shù)據(jù)的屬性名稱 Ø 向流程局部數(shù)據(jù)寫入數(shù)據(jù)public void WriteActivityData(string FlowID, Guid InstanceID,string ActivityID, string FieldName,Object Value) 參數(shù)名稱類型參數(shù)說明FlowIDstring數(shù)據(jù)項所屬的流程編號 InstanceIDObject流程的實例句柄,實際類型為GUIDA
9、ctivityIDstring活動節(jié)點的編號FieldNamestring數(shù)據(jù)的屬性名稱ValueObject數(shù)據(jù)的屬性的值 Ø 從流程局部數(shù)據(jù)讀出數(shù)據(jù)public Object ReadActivityData(string FlowID, Guid InstanceID,string ActivityID, string FieldName) 返回值:讀取數(shù)據(jù)屬性的值 參數(shù)名稱類型參數(shù)說明FlowIDstring數(shù)據(jù)項所屬的流程編號 InstanceIDObject流程的實例句
10、柄,實際類型為GUIDActivityIDstring活動節(jié)點的編號FieldNamestring數(shù)據(jù)的屬性名稱 Ø 完成已分配的任務(wù)public string FinishTask(string strAssignTaskID)FinishTask代表設(shè)置已分配出去的任務(wù)已完成返回值:提示信息 參數(shù)名稱類型參數(shù)說明strAssignTaskIDstring分配任務(wù)的唯一標(biāo)志號 Ø 設(shè)置任務(wù)結(jié)果及狀態(tài)public void SetTaskResolution
11、(Guid TaskID,TTaskResolution Resolution) 設(shè)置任務(wù)執(zhí)行結(jié)果,代表任務(wù)執(zhí)行完畢 參數(shù)名稱類型參數(shù)說明TaskIDGuid任務(wù)的Key值 ResolutionTtaskResolution任務(wù)的狀態(tài)UNRESOLVED,SUCCESS,FAIL,EXCEPTION 含義分別為未處理,成功,失敗,異常 Ø 編寫節(jié)點分支條件UCML Workflow用abstract public class Transition類來描述一個分支條件 類屬性名稱類型可見度屬性說明TransResultBo
12、oleanprotectedTransResult=true 則代表流程分支條成立TransResult=false 則代表流程分支條不成成立 FromActivityWorkFlowActivitypublic分支來源節(jié)點對象實例ToActivityWorkFlowActivitypublic分支目標(biāo)節(jié)點對象實例FlowModelWorkFlowModel的子類public其實是流程模型的實例對象,通過它可以訪問流程所有屬性(或狀態(tài))數(shù)據(jù) 方法名稱類型可見度方法說明OutgoingCondition()boolpublicvirtual public bool Outg
13、oingCondition()在UCML Workflow里,節(jié)點的一條流出分支是否成立完全取決于這個函數(shù),編程人員員可以它的子類里編寫它的具體實現(xiàn)代碼,在編寫代碼時可以結(jié)合流程的狀態(tài)數(shù)據(jù)。在這函數(shù)中一定要設(shè)置TransResult的值,也就是說如果TransResult=true 分支成,否則分支不成立,也就不走這條分支。IncomingConditionboolpublicvirtual public bool IncomingCondition() OutgoingCondition()這函數(shù)是在Transition的子類中已覆蓋函數(shù)形式實現(xiàn),在UCML環(huán)境里的流出條件編輯,就
14、是實現(xiàn)此函數(shù)。如下圖示: Ø 9. 編程實現(xiàn)智能任務(wù)分配wm_assign()UCML Workflow提供回調(diào)函數(shù),為開發(fā)者提供完成復(fù)雜分配的可能,詳見回調(diào)函數(shù)接口Ø 10. 終止流程方法名稱類型可見度方法說明Abort ()voidpublicpublic void Abort(string FlowID, Guid InstanceID)終止某個流程實例Ø
15、9. 掛起流程方法名稱類型可見度方法說明Pause ()voidpublicpublic virtual void Pause()暫時掛起一個流程 Ø 10. 喚醒流程方法名稱類型可見度方法說明Resume ()voidpublicpublic void Resume(string FlowID, Guid InstanceID)重新運(yùn)轉(zhuǎn)流程 Ø 11. 節(jié)點手動跳轉(zhuǎn)方法名稱類型可見度方法說明GotoActivity ()voidpublicpublic void GotoActivity(st
16、ring FlowID, Guid InstanceID,string FromActivityID,string ToActivityID,string Performers)作用 : 流程跳轉(zhuǎn)FlowID:流程IDInstanceID:流程實例句柄FromActivityID:來源活動名稱ToActivityID:目標(biāo)活動名稱Performers:執(zhí)行人的群組串. Ø 回退任務(wù)/ <summary>/ 回退任務(wù)/ </summary>/ <param name="TaskID">任務(wù)ID</param>
17、public void Rollback(Guid TaskID)Ø 回收任務(wù)/ <summary>/ 收回任務(wù)/ </summary>/ <param name="TaskID">任務(wù)ID</param> Ø 獲取某個活動節(jié)點執(zhí)行人/ <summary> / 獲取某個活動節(jié)點執(zhí)行人 / </summary> / <param name="ActivityID">活動節(jié)點ID</param> / <returns></re
18、turns> public string GetActivityPerformer( string ActivityID)Ø 獲取當(dāng)前節(jié)點即將流向的目標(biāo)節(jié)點,如果是并發(fā)輸出將會多個流向。用于在當(dāng)前節(jié)點完成時,馬上選擇下一節(jié)點執(zhí)行人 / <summary> / 獲取當(dāng)前節(jié)點即將流向的目標(biāo)節(jié)點,如果是并發(fā)輸出將會多個流向 / 用于在當(dāng)前節(jié)點完成時,馬上選擇下一節(jié)點執(zhí)行人 / </summary> / <param name="FlowID">流程ID</param> / <param name="I
19、nstanceID">實例ID</param> / <param name="ActivityID">活動ID</param> / <returns>返回要輸出的節(jié)點ID數(shù)組</returns> public string GetOutgoingActivitys(string FlowID, Guid InstanceID, string ActivityID)Ø 獲取節(jié)點狀態(tài) / <summary> / 獲取節(jié)點狀態(tài) / </summary> / <par
20、am name="FlowID"></param> / <param name="InstanceID"></param> / <param name="ActivityID"></param> / <returns></returns> public int GetActivityStatus(string FlowID, Object InstanceID, string ActivityID)Ø 修改節(jié)點狀態(tài) / <summ
21、ary> / 修改節(jié)點狀態(tài) / </summary> / <param name="FlowID"></param> / <param name="InstanceID"></param> / <param name="ActivityID"></param> / <param name="ActivityStatus"></param> public void ChangeActivityStatus
22、(string FlowID, Object InstanceID, string ActivityID, int ActivityStatus)Ø 不結(jié)束當(dāng)前節(jié)點,而激活下一節(jié)點/ <summary> / 不結(jié)束當(dāng)前節(jié)點,而激活下一節(jié)點 / </summary> / <param name="FlowID">流程ID</param> / <param name="InstanceID">流程實例ID</param> / <param name="FromA
23、ctivityID">流轉(zhuǎn)到活動ID</param> / <param name="ToActivityID">來自活動ID</param> / <param name="Performers">流轉(zhuǎn)到活動節(jié)點執(zhí)行人</param> public void GotoActivityNotFinishTask(string FlowID, Guid InstanceID, string FromActivityID, string ToActivityID, string Perf
24、ormers)Ø 完成已分配的任務(wù),但不流轉(zhuǎn) / <summary> / 完成已分配的任務(wù),但不流轉(zhuǎn) / </summary> / <param name="Activity">工作流活動節(jié)點對象</param> / <returns></returns> public string FinishTaskNotRun(WorkFlowActivity Activity)Ø 加簽或者轉(zhuǎn)簽/ <summary>/ 加簽或者轉(zhuǎn)簽/ </summary>/ <p
25、aram name="FlowID">流程ID</param>/ <param name="InstanceID">實例ID</param>/ <param name="AssignTaskOID">任務(wù)ID</param>/ <param name="CurrentUserOID">當(dāng)前用戶OID</param>/ <param name="SignPerformers">執(zhí)行人</pa
26、ram>/ <param name="fSignOneByeOne">按照順序執(zhí)行</param>/ <param name="InsertBefore">true:加簽;false:轉(zhuǎn)簽</param>/ <param name="IsDeleteSigner"></param>/ <param name="MessageType">消息類型</param>/ <param name="Messa
27、geContent">消息內(nèi)容</param> public void AddSignPerformer(string FlowID, Guid InstanceID, Guid AssignTaskOID, Guid CurrentUserOID, string SignPerformers, bool fSignOneByeOne, bool InsertBefore, bool IsDeleteSigner, int MessageType,string MessageContent)Ø 協(xié)辦或會簽/ <summary> / 協(xié)辦或會簽
28、/ </summary> / <param name="FlowID">流程ID</param> / <param name="InstanceID">實例ID</param> / <param name="AssignTaskOID">任務(wù)ID</param> / <param name="CurrentUserOID">當(dāng)前用戶OID</param> / <param name="Sign
29、Performers">執(zhí)行人</param> / <param name="MessageType">消息類型</param> / <param name="MessageContent">消息內(nèi)容</param> / <param name="TaskKind">3:協(xié)辦;1:會簽</param> public void AssignSignPerformer(string FlowID, Guid InstanceID, Guid
30、 AssignTaskOID, Guid CurrentUserOID, string SignPerformers,int MessageType, string MessageContent,int TaskKind)Ø 手工正常分配任務(wù)/ <summary>/ 手工正常分配任務(wù)/ </summary>/ <param name="TaskTicketOID"></param>/ <param name="Performer"></param>public void M
31、ansualAssignTask(string TaskTicketOID,string Performer)Ø 分配參閱任務(wù)/ <summary>/ 分配參閱任務(wù)/ </summary>/ <param name="TaskTicketOID"></param>/ <param name="Performer"></param>public void MansualAssignReadTask(string TaskTicketOID,string Performer)&
32、#216; 悔簽任務(wù),對在任務(wù)分配表AssignTask中acceptFlag置為1的標(biāo)記設(shè)為4悔簽/ <summary>/ 悔簽任務(wù),對在任務(wù)分配表AssignTask中acceptFlag置為1的標(biāo)記設(shè)為4悔簽/ </summary>/ <param name="assignTaskID"></param>public void RepentSignforTask(string assignTaskID)Ø 任務(wù)跳回到執(zhí)行人 / <summary> / 任務(wù)跳回到執(zhí)行人 / </summary&
33、gt; / <param name="FlowID">流程ID</param> / <param name="InstanceID">流程實例句柄</param> / <param name="ActivityID">節(jié)點ID</param> public void TaskReturn(string FlowID, Guid InstanceID, string ActivityID)Ø 獲取某個已完成節(jié)點的執(zhí)行人/ <summary> /
34、 獲取某個已完成節(jié)點的執(zhí)行人 / </summary> / <param name="FlowID">流程ID</param> / <param name="InstanceID">流程實例句柄</param> / <param name="ActivityID">節(jié)點ID</param> / <returns>返回執(zhí)行人OID數(shù)組</returns> public Guid GetExecuteUser(string Flow
35、ID, Guid InstanceID, string ActivityID)Ø 喚醒已完成的任務(wù)/ <summary> / 喚醒已完成的任務(wù) / </summary> / <param name="AssignTaskOID"></param> public void WakeFinishedAssignTask(string AssignTaskOID)Ø 12. 任務(wù)超時處理及編程UCML Workflow 的是否超時由下圖的完成期限和延長時間兩個屬性決定:Ø
36、60; 當(dāng)完成期限不填內(nèi)容時,代表這個活動節(jié)點產(chǎn)生的任務(wù)沒有時間限制延長時間代表完成期限倒了之后,還可以再延長多少時間 l 即將超時處理當(dāng)完成期限到了之后,會回調(diào)wm_willtimeout函數(shù),如果想在此時放個郵件通知或短信,就可在wm_willtimeout函數(shù)內(nèi)調(diào)用。 l 超時處理同樣的當(dāng)完成期限到了之后,如果有延長時間
37、,而且延長時間也到了,會回調(diào)wm_deadline函數(shù),如果想在此時放個郵件通知或者短信,就可在wm_deadline函數(shù)內(nèi)調(diào)用。如下圖示:Ø 如果任務(wù)在截止期限和延長時間內(nèi)都沒有完成,此時任務(wù)做超時處理,流程是繼續(xù)流轉(zhuǎn)還是停止由截止期限到達(dá)時系統(tǒng)行為這個屬性決定,如為SYNCHR(同步),則流程停在這里,如果為ASYNCHR(異步) 則流程繼續(xù)流轉(zhuǎn)。三 UCML工作流開放性介紹UCML 引擎底層框架的基類源碼不開放,包括引擎調(diào)度代碼和流程類、活動類和分支類基類代碼。而根據(jù)定義可以直接生
38、成引擎源碼都是開放的,可以在這些源碼的框架擴(kuò)展時刻(回調(diào)函數(shù))之內(nèi)注入C#代碼來進(jìn)行,如下面活動節(jié)點代碼的時刻函數(shù)任務(wù)分配時刻函數(shù)override public void wm_assign(Object taskTicketID,Object UserList,ref Object AssignUserList,ref int TaskKindList,Boolean reassignFlag)任務(wù)分配后時刻函數(shù)override public void wm_afterAssignTask(Object assignTaskID,Object UserOID) base.wm_afterAs
39、signTask(assignTaskID,UserOID);任務(wù)分配前時刻函數(shù)override public void wm_beforeAssignTask(SysDBModel.AssignTaskInfo AssignTaskInfo)任務(wù)完成時刻函數(shù)override public void wm_afterTaskFinish(Object taskTicketID,TTaskResolution TaskResolution)任務(wù)超時時刻函數(shù)override public void wm_deadline(Object taskTicketID)任務(wù)完成規(guī)則函數(shù)override p
40、ublic bool wm_finishTaskRule(SysDBModel.TaskTicketInfo taskTicketInfo) return false;任務(wù)創(chuàng)建函數(shù)override public void wm_createTask(SysDBModel.TaskTicketInfo taskTicketInfo)任務(wù)回滾前函數(shù)override public void wm_beforerollback(Object taskTicketID)任務(wù)回滾后函數(shù)override public void wm_afterrollback(Object taskTicketID)ove
41、rride public void wm_onactivate()override public void wm_willtimeout(SysDBModel.TaskTicketInfo taskTicketInfo)override public bool wm_activityInComeCondi() return false; 四 集成方案在采用客戶已有的人員權(quán)限體系時,主要用到UCML工作流系統(tǒng)的可視化流程設(shè)計環(huán)境、工作流引擎服務(wù)、工作流標(biāo)準(zhǔn)表結(jié)構(gòu)、流程API、可視化的流程監(jiān)控(可選)等。在集成時可能需要修改客戶已有的Web系統(tǒng)或表的結(jié)構(gòu),主要是修改以下地方:l 修改人員信息表l
42、引入流程接口(UCML工作流API)l 客戶登陸會話的改變l 加入工作流引擎需要的初始化程序l 增加一個待辦事宜模塊l 引入平臺中的可視化的流程監(jiān)控模塊(如果需要可視化流程監(jiān)控那么就需要引入)在平臺中主要有以下注意點:l 在平臺中設(shè)計工作流模型l 添加流程狀態(tài)數(shù)據(jù)l 在任務(wù)分配函數(shù)-wm_assign()中設(shè)置任務(wù)的執(zhí)行人l 修改人工節(jié)點上的業(yè)務(wù)標(biāo)識符為為自己的頁面1、 l修改人員信息表需要在客戶現(xiàn)有的用戶表(存儲登錄帳號、密碼表)中增加一個Guid類型的字段,這個字段的值唯一標(biāo)記一個用戶,不影響客戶現(xiàn)有的應(yīng)用體系,起到與UCML工作流銜接作用。這個字段的字段名命名規(guī)范為:客戶表名+OID,即
43、“客戶表名OID”,字段類型為GUID類型,在MSSQL Server中是Uniqueidentifier,Oracle中為VARCHAR類型。在客戶業(yè)務(wù)系統(tǒng)中客戶的登錄ID代表客戶的身份,如果整合中客戶表中有現(xiàn)存的數(shù)據(jù)需要手工給“客戶表名OID”賦值;另外,在增加用戶的程序中要同時給“客戶表名OID”賦值。2、 l引入流程接口(UCML工作流API)l 在客戶現(xiàn)有系統(tǒng)的工程文件中引入UCML工作流API,并引用一個專門為第三方業(yè)務(wù)開發(fā)包裝的接口源程序WorkflowClient.cs。l 相關(guān)工作流API:DBLayer.dll,SysDBModel.dll,UCMLBase.dll,Wor
44、kFlow.dlll 把Workflowbin 目錄下的UCMLConf.xml,DBLayer.xml文件拷貝到客戶工程的bin目錄下,注意:如果不是在客戶工程的本機(jī)運(yùn)行工作流引擎,則需要把UCMLConf.xml文件中引用工作流引擎地址的IP改為運(yùn)行工作流引擎主機(jī)的IP地址。3、 l客戶登陸會話的改變在用戶登陸的程序中,在取得用戶表中各項數(shù)據(jù)時,把用戶表中新增的字段也讀出來,并把該項也放入用戶登陸會話中。4、 l加入工作流引擎需要的初始化程序在使用客戶的應(yīng)用程序中與工作流引擎打交道之前的任意時刻加入如下程序:UCMLCommon.UCMLInitEnv.fInServer=true;UCM
45、LCommon.UCMLInitEnv.LoadEnvVariable();new DBLayer.LogicDBModel();UCMLCommon.UCMLLogicDBModelApp x = new UCMLCommon.UCMLLogicDBModelApp();x.PrepareModel();5、 l增加一個待辦事宜模塊待辦事宜也叫待辦任務(wù)。需要客戶自己新增一個待辦事宜模塊,其數(shù)據(jù)來源是UCML提供的任務(wù)分配表AssignTask,開發(fā)者可根據(jù)記錄(任務(wù))的完成與否狀態(tài)過濾數(shù)據(jù)到待辦任務(wù)模塊內(nèi)。6、 l引入平臺中的可視化的流程監(jiān)控模塊(如果需要可視化流程監(jiān)控那么就需要引入)可視化
46、流程監(jiān)控的頁面在平臺中的業(yè)務(wù)模塊是:BPO_FlowTrace可以將BPO_FlowTrace相關(guān)文件拷貝到項目下:BPO_FlowTrace.aspxBPO_FlowTrace.aspx.csBPO_FlowTrace.asmxBPO_FlowTrace.asmx.csBPO_FlowTrace.htc7、 l在平臺中設(shè)計工作流模型在平臺中設(shè)計工作流模型,可以參考“工作流設(shè)計手冊”。8、 l添加流程狀態(tài)數(shù)據(jù)UCML工作流引擎和業(yè)務(wù)之間是松耦合處理模式,工作流和業(yè)務(wù)之間是通過流程狀態(tài)數(shù)據(jù)進(jìn)行交互。流程狀態(tài)數(shù)據(jù)是指工作流在運(yùn)轉(zhuǎn)過程中流程流轉(zhuǎn)所需要的保存在流程實例中的數(shù)據(jù),一般有三類業(yè)務(wù)數(shù)據(jù)要保存
47、在流程中,一是業(yè)務(wù)單據(jù)的關(guān)鍵字段,用它可以決定一個任務(wù)對應(yīng)的業(yè)務(wù)單據(jù)號,在UCML里一般把表單主鍵存到流程里;二是決定流程分支走向的數(shù)據(jù),有可能是領(lǐng)導(dǎo)意見,也有可能是單據(jù)金額,這些數(shù)據(jù)是為了工作流引擎內(nèi)部調(diào)用的;三是流程執(zhí)行人信息。流程和業(yè)務(wù)之間的狀態(tài)數(shù)據(jù)交互方法很簡單,如下所示:寫入流程狀態(tài)數(shù)據(jù):即把業(yè)務(wù)的數(shù)據(jù)寫入到流程中去,調(diào)用的方法是WriteFlowData;讀出流程狀態(tài)數(shù)據(jù):即把流程狀態(tài)讀出來賦給業(yè)務(wù),調(diào)用的方法是ReadFlowData。寫入流程狀態(tài)數(shù)據(jù)一般在數(shù)據(jù)提交時進(jìn)行,讀出流程狀態(tài)數(shù)據(jù)一般在初始化時進(jìn)行,讀時可以把流程狀態(tài)數(shù)據(jù)賦給業(yè)務(wù)中的某個屬性,以方便業(yè)務(wù)中調(diào)用。9、 在任
48、務(wù)分配函數(shù)-wm_assign()中設(shè)置任務(wù)的執(zhí)行人在工作流中任務(wù)分配的方式有幾種:通過群組配置分配任務(wù)回調(diào)函數(shù)分配任務(wù)手工執(zhí)行執(zhí)行人由于組織機(jī)構(gòu)等均不采用平臺自帶的組織框架,所以無法采用“通過群組配置分配任務(wù)”的方式,只能采用“回調(diào)函數(shù)分配任務(wù)”或10、 自己實現(xiàn)執(zhí)行人群組解析接口,可以繼續(xù)使用基于配置的任務(wù)分配基于流程模型的執(zhí)行人配置可以避免在wm_assign里寫程序做任務(wù)分配,但必須必需特定某個組織機(jī)構(gòu),在這個組織機(jī)構(gòu)基礎(chǔ)之上可以定義群組,來描述人員、部門和崗位集合,也可以定義相對執(zhí)行人如申請人的部門主管、申請人公司總經(jīng)理等,只要實現(xiàn)自己的群組解析接口,就可以自己的群組串配置UCML的
49、工作流執(zhí)行人的字段里,就可以實現(xiàn)基于配置的任務(wù)分配實現(xiàn)步驟如下:u 自定義類實現(xiàn)如下接口 public interface IGroupParser Object UserOIDList(string GroupStr, Object Starter, Object StartPostn, Object StartDivision, Object StartORG, Object Performer, Object PerformerPostn, Object PerformerDivision, Object PerformerORG); Object UserOIDList(string
50、GroupStr); / <summary> / 根據(jù)組定義獲取用戶列表/ </summary>/ <param name="GroupStr">群組字符串</param>/ <param name="Starter">流程啟動者GUID</param> / <param name="StartPostn">流程啟動崗位GUID</param> / <param name="StartDivision">流程
51、啟動部門GUID</param> / <param name="StartORG">流程啟動企業(yè)GUID</param> / <param name="Performer">當(dāng)前執(zhí)行人GUID</param> / <param name="PerformerPostn">當(dāng)前執(zhí)行人崗位GUID</param> / <param name="PerformerDivision">當(dāng)前執(zhí)行人部門GUID</param&
52、gt; / <param name="PerformerORG">當(dāng)前執(zhí)行人企業(yè)GUID</param>/ <returns>返回GUID類型的用戶ID</returns>u 在UCMLCONF.XML文件里添加如下節(jié)點:<fCustomGroupParser>true</fCustomGroupParser><GroupParserAssembly>dll名稱</GroupParserAssembly><GroupParserClass>類名稱</GroupP
53、arserClass>11、 修改人工節(jié)點上的業(yè)務(wù)標(biāo)識符為為自己的頁面12、 工作流計算工作日客戶自定義接口1. 自定義類實現(xiàn)如下接口 public interface IWorkDay / <summary> / 計算任務(wù)完成期限,用于擴(kuò)展節(jié)假日等非工作日的完成時間的計算 / </summary> / <param name="startTime">任務(wù)開始時間</param> / <param name="delayTime">任務(wù)計劃用時,單位為秒</param> / &
54、lt;param name="UserOID">任務(wù)執(zhí)行人OID</param> / <returns>返回任務(wù)最終完成時間</returns> DateTime GetLimitDateTime(DateTime startTime, long delayTime, Guid UserOID); 2. 在UCMLCONF.XML文件里添加如下節(jié)點:< fCustomWorkDay>true</ fCustomWorkDay>< WorkDayAssembly>dll名稱</ WorkDayAssembly>< WorkDayClass>類名稱</ WorkDayClass>13、 工作流時刻切面接口1. 自定義類實現(xiàn)如下接口 / <summary> /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力行業(yè)員工薪酬福利合同
- 勞動合同 月度范文
- 大型商業(yè)綜合體裝修合同
- 建筑工地安全施工合同書
- 廢舊物資循環(huán)利用合同項目2025
- 生產(chǎn)制造合同合作書
- 商品房購回合同條款
- 房地產(chǎn)租賃管理合同范本
- 訂單班人才培養(yǎng)協(xié)議(范本)
- 無機(jī)鹽產(chǎn)品在農(nóng)業(yè)領(lǐng)域的應(yīng)用考核試卷
- 部編人教版道德與法治五年級下冊全冊課時練習(xí)講解課件
- 廉政鑒定書(院內(nèi)廉政意見書)
- 《潘姓源于固始,是不爭的史實》的考辨
- 園林景觀工程細(xì)節(jié)
- 焊接技師培訓(xùn)教材(釬焊)課件
- 2022年中級注冊安全工程師(安全生產(chǎn)法及相關(guān)法律知識)考試題庫模考300題及答案下載(四川省專用)
- 《未成年人保護(hù)法》課件
- 原發(fā)性肝癌經(jīng)皮肝動脈化療栓塞術(shù)(TACE)臨床路徑
- 成品檢驗部在線抽檢記錄表
- 化工工藝學(xué)-第二章-化工原料及其初步加工
- 全國水資源綜合規(guī)劃技術(shù)細(xì)則(水利部文件)
評論
0/150
提交評論