版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-.z. 工作流開發(fā)手冊功能介紹:工作流系統(tǒng)是以規(guī)格化的流程描述作為輸入的軟件組件,它維護(hù)流程的運行狀態(tài),并在人和應(yīng)用之間分派活動、最終到達(dá)協(xié)同多人或效勞共同完成工作任務(wù)的目的。使用過程:工作流系統(tǒng)的使用過程分為三個階段:設(shè)計時、配置時、運行時;設(shè)計時階段需要完成流程模型設(shè)計;配置時階段需要完成工作流系統(tǒng)運行環(huán)境的配置、工作流模型發(fā)布及版本管理等工作;運行時階段需要負(fù)責(zé)發(fā)起和完成流程實例等工作。U8系統(tǒng)安裝完畢后,首先需要進(jìn)入工作流環(huán)境配置模塊設(shè)置MOM效勞器和工作流引擎信息;配置的信息會通知到對應(yīng)的MOM效勞器,使得MOM效勞器感知與其協(xié)同工作的工作流引擎信息。配置時涉及的功能模塊及運行時的流程實例管理模塊存在于工作流管理控制臺中。環(huán)境配置完畢后,可以進(jìn)展流程模型設(shè)計工作。通過流程設(shè)計器,設(shè)計過程中結(jié)合UAP工具中設(shè)計出來的業(yè)務(wù)對象和注冊在MOM效勞器上的消息和效勞信息,生成流程模型。流程設(shè)計器設(shè)計出來的流程模型還不能直接投入使用,需要通過重定位模塊對其消息和效勞地址信息從設(shè)計時環(huán)境的地址轉(zhuǎn)化為運行時地址后,才能正式使用。重定位模塊通過“流程發(fā)布〞動作來完成該動作的。流程模型發(fā)布后,業(yè)務(wù)應(yīng)用就可通過消息發(fā)送接口發(fā)送特定類型的消息,消息通過MOM效勞器通知工作流引擎,生成對應(yīng)的流程實例,在流程實例處理過程中調(diào)用業(yè)務(wù)效勞、生成需要人工交互的任務(wù)項、并最終協(xié)調(diào)完成流程實例的處理。流程實例可以被流程實例管理模塊加以管理、修改。開發(fā)幫助基于新的工作流平臺之上的審批流應(yīng)用,利用UAP的數(shù)據(jù)引擎、MOM消息發(fā)布訂閱和消息轉(zhuǎn)發(fā)功能來完成審批這一類特殊流程的管理、配置、設(shè)計、使用、維護(hù)、監(jiān)視操作。下列圖是工作流系統(tǒng)使用流程圖:在上述流程涉及到業(yè)務(wù)系統(tǒng)開發(fā)人員的活動中,效勞開發(fā)、效勞注冊、預(yù)制業(yè)務(wù)對象、編寫預(yù)制運行時活動插件、編寫客戶端審批提交代碼等工作是在業(yè)務(wù)模塊中實現(xiàn)審批功能都可能涉及的動作。開發(fā)與注冊效勞本處效勞是指業(yè)務(wù)部門提供能、為了能滿足特定業(yè)務(wù)功能而實現(xiàn)的組件中的方法;這些效勞可在流程設(shè)計過程中運用于流程模型,表達(dá)為流程模型中的自動效勞。效勞開發(fā)效勞開發(fā)無特別約定,效勞部如果需要CallConte*t、發(fā)起人等工作流系統(tǒng)置變量信息,可以在流程設(shè)計過程中,指定變量->效勞傳入?yún)?shù)的映射方式來獲得。流程模型置變量:變量名類型說明ActivityNamestring[活動名稱]StartPerformerstring[流程發(fā)起人工號]CurrentPerformerstring[執(zhí)行者工號]StartTimestring[流程發(fā)起時間]ActivityStartTimestring[活動開場時間]ActivityDelaystring[延遲時間]StartPerformerNamestring[流程發(fā)起人]CurrentPerformerNamestring[執(zhí)行者]KeySetstring[人工活動UNDO接口參數(shù)KeySet]CalledConte*tobject[人工活動UNDO接口參數(shù)CalledConte*t]CallResultstring[人工活動UNDO接口返回值]LoginConte*tobject[工作流構(gòu)造LoginConte*t對象]效勞注冊在工作流模型中,自動活動所調(diào)用的效勞需要預(yù)先注冊到MOM效勞器上,注冊過程如下:1.如果MOM上沒建立所屬子產(chǎn)品功能點,則首先建立該子產(chǎn)品功能點;建立方法:翻開MOM集成工具,在集成目錄-U8ERP下參加子產(chǎn)品功能點,如下列圖:2.在所屬子產(chǎn)品功能點的“集成接口〞節(jié)點上,注冊集成接口,如下列圖:進(jìn)入注冊集成接口界面后,首先設(shè)置集成注冊碼和集成接口名,集成接口注冊嗎是用于識別該注冊效勞的,要求在同一子產(chǎn)品節(jié)點下注冊碼惟一。然后需要設(shè)置效勞調(diào)用端點〔如果是本地調(diào)用,需要考慮調(diào)用路徑問題!〕:設(shè)置效勞路徑時可以使用MOM預(yù)置的三個宏變量:%U8SOFT%表示U8安裝目錄%UFSQL%表示ufsql目錄%U8APPSRV%表示u8應(yīng)用效勞器例如:注冊:D:\U8SOFT\SA\MyLib.DLL組件,使用宏變量后應(yīng)該為:%U8SOFT%\SA\MyLib.DLL自動效勞開發(fā)中的參數(shù)約束1、所有參數(shù)類型必須是根本類型和可SOAP序列化的類型;2、非根本類型的參數(shù)必須部署在GAC中;3、對于部署在本地的效勞,支持ref,out參數(shù)〔VB的ByRef同ref〕;4、對于VB中聲明為ByRef的參數(shù),必須是Variant類型。支持的根本類型包括: "void", "string",〔對應(yīng)設(shè)計器變量類型string〕 "short",〔對應(yīng)設(shè)計器變量類型float〕 "int",〔對應(yīng)設(shè)計器變量類型int〕 "long",〔對應(yīng)設(shè)計器變量類型int〕 "double",〔對應(yīng)設(shè)計器變量類型double〕 "bool",〔對應(yīng)設(shè)計器變量類型bool〕 "datetime",〔對應(yīng)設(shè)計器變量類型datetime〕 "object"〔對應(yīng)設(shè)計器變量類型object〕如果工作流實例中,對該效勞調(diào)用后,由于*些原因,流程實例回滾〔Rollback〕時,該效勞也需要回滾,則該效勞還需要注冊對應(yīng)的Undo接口信息。約定Undo接口方法名為Un+方法名,參數(shù)、返回值同原注冊的效勞方法一致。為了能正確描述Undo接口,需要在擴(kuò)展屬性中增加3個屬性:undo_class:如果是就表示為progid,是.Net表示為類的完全限定名 undo_type:assembly,undo_location:當(dāng)是.Net程序的時候表示為程序集的名如下列圖:效勞例代碼usingusingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;namespaceEployeeSelfSevice{publicclassEmployee{///<summary>///申請休假///</summary>///<paramname="EmployeeID">員工號</param>///<paramname="HolidayType">假期類型</param>///<paramname="ApplyDateNumber">申請數(shù)量</param>///<returns>申請是否成功</returns>publicboolApplyHoliday(stringEmployeeID,intHolidayType,intApplyDateNumber){//TODO:如果符合申請條件,扣減該員工的可用假期數(shù)returntrue;}///<summary>///ApplyHoliday的Undo方法///</summary>///<paramname="EmployeeID">員工號</param>///<paramname="HolidayType">假期類型</param>///<paramname="ApplyDateNumber">申請數(shù)量</param>///<returns>申請是否成功</returns>publicboolUnApplyHoliday(stringEmployeeID,intHolidayType,intApplyDateNumber){returntrue;}}}人工活動插件開發(fā)插件必須包含如下三個方法,名稱可以不同,但參數(shù)必須一致publicinterfaceIAuditPlugin {boolUndoAudition(stringprimBizData,stringauditAction,refstringbizdata,objectcalledCt*,refstringerrMsg);boolDoAudition(stringprimBizData,stringauditAction,refstringbizdata,objectcalledCt*,refstringerrMsg);boolHandleBizE*ception(stringprimBizData,stringauditAction,refstringhandleResult,refstringbizdata,objectcalledCt*,refstringerrMsg); }primBizData:KeySetauditAction的取值///<summary> ///審批動作枚舉類型 ///</summary> [Serializable] publicenumAuditAction { Submit=0, //提交 Agree=1, //同意 Disagree=2, //不同意 Dispatch=3, //轉(zhuǎn)簽 Reject=4, //打回 Revocation=5, //撤銷 Return=6, //退回 Abandon=7, //棄審 }Bizdata:業(yè)務(wù)需要傳出的參數(shù)handleResult:是否需要重做,取值ReHandle/UnHandleusingSystem;
usingSystem.Collections.Generic;
usingSystem.Te*t;
usingUFSoft.U8.Framework.LoginConte*t;
usingUFIDA.U8.Audit.Interface;
usingUFSoft.U8.E*.mon;
usingUFSoft.U8.E*.mon.Args;
usingUFSoft.U8.E*.Server.BusinessObject;
usingUFSoft.U8.E*.Framework.DataModel;namespaceUFSoft.U8.E*.CreditPlugins
{
classFinalAuditPlugin:IAuditPlugin
{
*regionIAuditPlugin成員
publicboolDoAudition(stringprimBizData,stringauditAction,refstringbizdata,objectcalledCt*,refstringerrMsg)
{
LoginServicelogin=newLoginService((CalledConte*t)calledCt*);
OrderBObo=newOrderBO(login);
AuditArgsauditArg=newAuditArgs();
intid=int.Parse(GetVoucherId(primBizData));
bo.GetData(id);
Orderorder=bo.dataasOrder;
auditArg.ID=order.orderHeader.id;
auditArg.Guid=order.orderHeader.guid;
auditArg.ufts=order.orderHeader.ufts;
auditArg.cCode=order.orderHeader.ccode;
auditArg.VarifyState=order.orderHeader.iverifystate;
auditArg.Version=order.orderHeader.iversion;
auditArg.UserName=login.UserInfo.UserName;
auditArg.VerifierDate=login.UserInfo.operDate;
auditArg.Verifier=login.UserInfo.UserName;
auditArg.Row=-1;
bo.BatchAudit(newAuditArgs[]{auditArg});
returntrue;
//thrownewE*ception("Themethodoroperationisnotimplemented.");
}
privatestringGetVoucherId(stringkeySetData)
{
KeySetDataReaderreader=newKeySetDataReader(keySetData);
returnreader["VoucherId"];
}
privatestringGetVoucherType(stringkeySetData)
{
KeySetDataReaderreader=newKeySetDataReader(keySetData);
returnreader["VoucherType"];
}
privatestringGetVoucherCode(stringkeySetData)
{
KeySetDataReaderreader=newKeySetDataReader(keySetData);
returnreader["VoucherCode"];
}
publicboolHandleBizE*ception(stringprimBizData,stringauditAction,stringconte*t,refstringhandleResult,refstringbizdata,objectcalledCt*,refstringerrMsg)
{
thrownewE*ception("Themethodoroperationisnotimplemented.");
}
publicboolUndoAudition(stringprimBizData,stringauditAction,stringconte*t,refstringbizdata,objectcalledCt*,refstringerrMsg)
{
LoginServicelogin=newLoginService((CalledConte*t)calledCt*);
OrderBObo=newOrderBO(login);
AuditArgsauditArg=newAuditArgs();
intid=int.Parse(GetVoucherId(primBizData));
bo.GetData(id);
Orderorder=bo.dataasOrder;
auditArg.ID=order.orderHeader.id;
auditArg.Guid=order.orderHeader.guid;
auditArg.ufts=order.orderHeader.ufts;
auditArg.cCode=order.orderHeader.ccode;
auditArg.VarifyState=order.orderHeader.iverifystate;
auditArg.Version=order.orderHeader.iversion;
auditArg.UserName=login.UserInfo.UserName;
auditArg.VerifierDate=login.UserInfo.operDate;
auditArg.Verifier=login.UserInfo.UserName;
auditArg.Row=-1;
bo.BatchUnAudit(newAuditArgs[]{auditArg});
returntrue;//
thrownewE*ception("Themethodoroperationisnotimplemented.");
}
*endregion
}
}VB插件的開發(fā)OptionE*plicitDimserviceAsPuServiceAdapterPublicFunctionDoAudition(keyDataAsString,auditActionAsString,ByRefbizDataAsString,calledCt*AsObject,ByReferrMsgAsString)AsBooleanSetservice=NewPuServiceAdapterDoAudition=service.VerifyVoucher(keyData,auditAction,conte*t,calledCt*,bizData)EndFunctionPublicFunctionUndoAudition(keyDataAsString,auditActionAsString,ByRefbizDataAsString,calledCt*AsObject,ByReferrMsgAsString)AsBooleanSetservice=NewPuServiceAdapterUndoAudition=service.UnVerifyVoucher(keyData,auditAction,calledCt*,bizData)EndFunctionPublicFunctionHandleBizE*ception(keyDataAsString,auditActionAsString,ByRefhandleResultAsString,ByRefbizDataAsString,calledCt*AsObject,ByReferrMsgAsString)AsBooleanHandleBizE*ception=TrueDimbizDataObjAsNewBizDataMapbizDataObj.Load*MLbizDataIfMsgBo*(bizDataObj.Value("Error"),vbRetryCancel)=vbRetryThenhandleResult="ReHandle"bizDataObj.Value("Action")="Retry"bizDataObj.Value("Check")="False"ElsehandleResult="UnHandle"bizDataObj.Value("Action")="Done"EndIfbizData=bizDataObj.*MLMsgBo*"BizData="&bizDataEndFunction預(yù)制業(yè)務(wù)對象業(yè)務(wù)對象是指審批流程處理的各種類型業(yè)務(wù)對象〔比方:采購訂單、材料出庫單、出口訂單等〕。新的審批流利用UAP的數(shù)據(jù)引擎來定義這些業(yè)務(wù)對象,這樣就可以通過修改數(shù)據(jù)引擎中的業(yè)務(wù)對象的查詢結(jié)果來形成不同的業(yè)務(wù)對象的Schema,從而可以將這些對象的Schema用作流程定義的條件并在流程運行時獲取業(yè)務(wù)對象實例的屬性值來進(jìn)展相應(yīng)的處理。UAP數(shù)據(jù)引擎進(jìn)展業(yè)務(wù)對象設(shè)計審批流中用到的是UAP數(shù)據(jù)引擎中查詢結(jié)果的數(shù)據(jù),具體設(shè)計步驟及其與預(yù)置數(shù)據(jù)之間的關(guān)系如下:在數(shù)據(jù)引擎中添加業(yè)務(wù)對象設(shè)置業(yè)務(wù)對象根本屬性為業(yè)務(wù)對象添加功能設(shè)置業(yè)務(wù)功能根本屬性為功能添加業(yè)務(wù)實體關(guān)系查詢設(shè)置實體關(guān)系查詢根本屬性為查詢添加根底業(yè)務(wù)實體為查詢添加列。查詢結(jié)果中必須包含結(jié)果列VoucherId,VoucherCode,VoucherType。這三列在審批流中是關(guān)鍵業(yè)務(wù)數(shù)據(jù),會在任務(wù)項的擴(kuò)展屬性中出現(xiàn),可以作為任務(wù)項顯示名稱、發(fā)送消息模版的數(shù)據(jù)提供者。命名必須注意完全匹配〔注意大小寫〕為查詢添加計算結(jié)果列為查詢添加查詢條件測試新增業(yè)務(wù)對象審批業(yè)務(wù)對象注冊數(shù)據(jù)引擎中設(shè)計完畢業(yè)務(wù)對象后,就可提供應(yīng)審批流系統(tǒng)使用。使用前,需要先注冊審批業(yè)務(wù)對象〔注意:與數(shù)據(jù)引擎中所描述的業(yè)務(wù)對象是兩不同概念〕。注冊過程使用位于U8SOFT\Workflow目錄下的工具AuditBusinessServiceTool.e*e來完成。審批業(yè)務(wù)對象注冊步驟如下:建立分類關(guān)系注冊審批業(yè)務(wù)對象增加業(yè)務(wù)事件業(yè)務(wù)事件可理解為對審批對象所可以進(jìn)展的審批操作,如對請假單這一審批業(yè)務(wù)對象,可以進(jìn)展提交、審批、打回等操作。業(yè)務(wù)事件URL中包含響應(yīng)該業(yè)務(wù)事件的業(yè)務(wù)模塊定位信息,在運行期間,門戶將根據(jù)該信息加載相應(yīng)的業(yè)務(wù)模塊來完成該業(yè)務(wù)事件的響應(yīng)。URL預(yù)置格式如下:<"*mlversion="1.0"encoding="utf-8""><mand>
<paramName="id"Value=""/>
<paramName="name"Value=""/>
<paramName="authID"Value=""/>
<paramName="cmdLine"Value=""/>
<paramName="docType"Value=""/>
<paramName="docID"Value=""/>
<paramName="subFunction"Value=""/>
<paramName="SubSysID"Value=""/></mand>上述各參數(shù)值與UFSystem.UA_Menu中的字段存在對應(yīng)關(guān)系,id->UA_Menu.cMenu_Id,name->UA_Menu.cMenu_Name,authID->UA_Menu.cAuth_Id,SubFunction->UA_Menu.cSub_ID,其他參數(shù)保存,可不預(yù)置。如來料報檢單:<"*mlversion="1.0"encoding="utf-8""><mand>
<paramName="id"Value="QM020101"/>
<paramName="name"Value="來料報檢單"/>
<paramName="authID"Value="QM02010101"/>
<paramName="cmdLine"Value=""/>
<paramName="docType"Value=""/>
<paramName="docID"Value=""/>
<paramName="subFunction"Value=""/>
<paramName="SubSysID"Value="QM"/></mand>上圖中支持插件選項通常需要勾上。任務(wù)類型中,一般情況下,需填“1〞〔說明為審批類型的任務(wù)工程〕,但如果是為了說明為打回重做的任務(wù)類型,需要填入“2〞。指定業(yè)務(wù)事件對應(yīng)的業(yè)務(wù)實體本處的業(yè)務(wù)實體可對應(yīng)到數(shù)據(jù)引擎中的業(yè)務(wù)對象下的功能中包含的*特定查詢。設(shè)置界面如下:5.指定業(yè)務(wù)事件所需要的關(guān)鍵業(yè)務(wù)參數(shù)關(guān)鍵業(yè)務(wù)參數(shù)將會在設(shè)計器中指定從業(yè)務(wù)實體中取數(shù)據(jù)的規(guī)則〔*Path〕,流程實例運行時從符合業(yè)務(wù)實體格式描述的業(yè)務(wù)單據(jù)取得數(shù)據(jù),并在調(diào)用業(yè)務(wù)模塊處理該業(yè)務(wù)事件時傳遞給業(yè)務(wù)模塊。通常業(yè)務(wù)事件均應(yīng)至少包含三個參數(shù):VoucherId,VoucherCode,VoucherType。設(shè)置業(yè)務(wù)事件插件通過菜單項選擇項-"業(yè)務(wù)插件進(jìn)入插件注冊界面,如下列圖:然后在業(yè)務(wù)對象事件下注冊該事件處理后調(diào)用的插件。審批提交客戶端編程提交流程圖判斷是否啟用工作流,分別提供了存儲過程和接口存儲過程:Usp_WF_IsFlowControlledcBizObjectIdnvarchar(40),cBizEventIdnvarchar(40),iYearsmallint,cAcc_Idnvarchar(3),bControlledbitout程序接口:提供應(yīng)業(yè)務(wù)產(chǎn)品發(fā)起提交的接口UFIDA.U8.Audit.ServicePro*y.dllVB代碼DimoAuditasObjectSetoAudit=CreateObject(“UFIDA.U8.Audit.ServicePro*y.AuditServicePro*y〞)接口PublicFunctionSubmitApplicationMessage(primBizDataAsString,calledCt*AsCalledConte*t,ByRefisWFControledAsBoolean,ByReferrMsgAsString)AsBooleanprimBizData:關(guān)鍵業(yè)務(wù)數(shù)據(jù)*ML串,*ML串的Schema如下<KeySet><!--業(yè)務(wù)對象id--><Keyname="BizObjectId"value=""/><!—業(yè)務(wù)事件--><Keyname="BizEventId"value=""/><!--單據(jù)號--><Keyname="VoucherId"value=""/><!—時間戳--><Keyname="TimeStamp"value=""/><!—其他插件或效勞需要用到的參數(shù),如AuthId--></KeySet>calledCt*:Login中的登陸上下文isWFControlled:是否通過了發(fā)起條件errMsg:錯誤信息重載方法2PublicFunctionSubmitApplicationMessage_2(bizObjectIdAsString,eventidAsString,voucherIdAsString,calledCt*AsCalledConte*t,ByRefisWFControledAsBoolean,ByReferrMsgAsString)AsBooleanbizObjectId:業(yè)務(wù)對象Ideventid:業(yè)務(wù)事件IdvoucherId:單據(jù)id例如:1.VB客戶端調(diào)用FunctionSubmitApplicationMessage_2(bizObjectIdAsString,eventIdAsString,voucherIdAsString,calledCt*AsCalledConte*t,ByRefisWFControledAsBoolean,ByReferrMsgAsString)AsBoolean'DimloginAsU8Login.clsLogin'審批效勞客戶端代理'DimauditSvcAsNewUFIDA_U8_Audit_ServicePro*y'Login效勞的LoginConte*t對象DimcalledCt*AsNewUFSoft_U8_Framework_LoginConte*t'業(yè)務(wù)對象的標(biāo)識,與與審批預(yù)置表〔AuditBizObjects〕中的業(yè)務(wù)對象主鍵一樣DimstrBizObjectIdAsString'業(yè)務(wù)事件的標(biāo)識,與審批預(yù)置表〔AuditBizEvents〕中的業(yè)務(wù)事件主鍵一樣DimstrBizEventIdAsString'單據(jù)標(biāo)識,也就是業(yè)務(wù)對象的實例標(biāo)識DimiVoucherIdAsIntegerDimretAsBoolean‘是否滿足開場條件DimbControlledAsBoolean‘錯誤信息auditSvcOnErrorGoToerrHandler:auditSvcstrBizObjectId="PU88"strBizEventId="PU88.Submit"strConte*t=""iVoucherId=1calledCt*.SubId="DP"calledCt*.TaskID=login.GetTaskID(SubId)calledCt*.token=login.userTokenIf(strBizObjectId="")Or(strBizEventId="")ThenMsgBo*"請選擇選擇業(yè)務(wù)對象或業(yè)務(wù)事件!"Else'業(yè)務(wù)進(jìn)展自己的處理,可能需要發(fā)起自己的事務(wù)ret=auditSvc.SubmitApplicationMessage_2(strBizObjectId,strBizEventId,iVoucherId,calledCt*,bControlled,errMsg)If(ret=True)ThenIfbControlled=TrueThenMsgBo*("提交成功")'如果發(fā)起事務(wù),執(zhí)行其他業(yè)務(wù)邏輯,并提交事務(wù) EndIfElseMsgBo*("提交失敗,失敗原因:"&errMsg)'如果發(fā)起事務(wù),回滾事務(wù),并做其他處理EndIfEndIfReturnerrHandler:'業(yè)務(wù)自己的異常處理邏輯 2..NET客戶端調(diào)用publicboolSubmitApplicationMessage(stringbizObjectId,stringeventId,stringvoucherId,stringconte*t,CalledConte*tcalledCt*)參數(shù)說明:///<summary> ///提交審批消息 ///</summary> ///<paramname="bizObjectId">業(yè)務(wù)對象標(biāo)識</param> ///<paramname="eventId">業(yè)務(wù)事件標(biāo)識</param> ///<paramname="voucherId">單據(jù)唯一標(biāo)識</param> ///<paramname="conte*t">用戶登錄信息</param> ///<returns>返回提交調(diào)用結(jié)果,成功返回true,否則返回false。</returns>例如:usingUFIDA.U8.Audit.BusinessInfo;usingUFIDA.U8.Audit.BusinessService;usingUFIDA.U8.Audit.WorkList;usingUFIDA.U8.Audit.ServicePro*y;usingUFSoft.U8.Framework.Login.UI;usingUFSoft.U8.Framework.LoginConte*t; //子系統(tǒng)標(biāo)識privateconststringSubId="DP"; //需要根據(jù)各業(yè)務(wù)子系統(tǒng)進(jìn)展替換 try {//創(chuàng)立審批效勞的客戶端代理AuditServicePro*yauditSvc=newAuditServicePro*y();//構(gòu)造Login的CalledConte*t對象CalledConte*tcalledCt*=newCalledConte*t(); calledCt*.subId=SubId; calledCt*.TaskID=_login.GetTaskID(SubId); calledCt*.token=_login.userToken; //業(yè)務(wù)對象標(biāo)識stringbizObjectId="PU88";//業(yè)務(wù)事件標(biāo)識stringbizEventId="PU88.Submit";//單據(jù)號intvoucherId=1;if(bizEventId==string.Empty||bizObjectId==string.Empty){MessageBo*.Show("請選擇選擇業(yè)務(wù)對象或業(yè)務(wù)事件!");return;}boolret=auditSvc.SubmitApplicationMessage(bizObjectId,bizEventId,voucherId,calledCt*,refbControlled,referrMsg);if(ret==true&&bControlled)MessageBo*.Show("提交成功"); elseMessageBo*.Show("提交失敗,失敗原因:"+errMsg); }catch(E*ceptione*) {MessageBo*.Show(e*.Message); }3.9 批審審批界面接口程序集:UFIDA.U8.Audit.ServicePro*y.dll功能:顯示批量處理界面,返回批量處理參數(shù)?!沧⒁猓罕景鎸ε鷮彽奶幚矸謨蓚€步驟,先顯示界面,返回選擇參數(shù),然后逐次調(diào)用3.10的審核接口進(jìn)展批量處理〕顯示批審界面///<paramname="calledCt*">登陸上下文</param>///<paramname="action">審批動作,傳出參數(shù)</param>///<paramname="state">審批狀態(tài),傳出參數(shù)</param>///<paramname="opinion">審批意見,傳出參數(shù)</param>///<returns>用戶點擊同意返回True;點擊取消則返回False</returns>FunctionShowAuditSimpleUI(calledCt*AsCalledConte*t,byrefactionAsInteger,byrefstateAsInteger,byrefopinionAsString)AsBoolean顯示批棄界面///<paramname="calledCt*">登陸上下文</param>///<paramname="state">審批狀態(tài),傳出參數(shù)</param>///<paramname="opinion">審批意見,傳出參數(shù)</param>///<returns>用戶點擊同意返回True;點擊取消則返回False</returns>FunctionShowAuditAbandonUI(calledCt*AsCalledConte*t,byrefstateAsInteger,byrefopinionAsString)AsBoolean顯示自定義界面///<paramname="flags">窗體的顯示組合枚舉</param>///<paramname="calledCt*">登陸上下文</param>///<paramname="action">審批動作,傳出參數(shù)</param>///<paramname="state">審批狀態(tài),傳出參數(shù)</param>///<paramname="opinion">審批意見,傳出參數(shù)</param>///<returns>用戶點擊同意返回True;點擊取消則返回False</returns>FunctionShowAuditUI(flagsAsInteger,calledCt*AsCalledConte*t,byrefactionAsInteger,byrefstateAsInteger,byrefopinionAsString)AsBoolean備注:flags為組合枚舉EnumAuditUIItemFlags{AuditUIItemFlags_None=0,AuditUIItemFlags_AgreeButton=1,AuditUIItemFlags_DisagreeButton=2,AuditUIItemFlags_AbandonButton=4,AuditUIItemFlags_CheckedBatch=8,AuditUIItemFlags_CheckedInteraction=16}該接口提供了自定義的界面顯示風(fēng)格,前兩個接口是該接口的封裝。如ShowAuditSimpleUI可用該接口表示為:o.ShowAuditUI(AuditUIItemFlags.AuditUIItemFlags_AgreeButtonOrAuditUIItemFlags.AuditUIItemFlags_CheckedInteraction,ct*,action,state,opinion);3.10 批審審核接口程序集:UFIDA.U8.Audit.ServicePro*y.dll功能:根據(jù)批審界面返回的參數(shù),逐次調(diào)用該接口進(jìn)展審批處理審核接口///<paramname="keySet">關(guān)鍵業(yè)務(wù)數(shù)據(jù)</param>///<paramname="action">審批動作</param>///<paramname="state">審批狀態(tài)</param>///<paramname="opinion">審批意見</param>///<paramname="calledCt*">登陸上下文</param>///<paramname="auditResult">審批返回信息</param>///<returns>true-成功false-失敗</returns>FunctionAudit(keySetAsString,actionAsInteger,stateAsInteger,opinionAsString,calledCt*AsCalledConte*t,auditResultAsString)AsBoolean備注:keySet關(guān)鍵業(yè)務(wù)數(shù)據(jù)格式同插件中的格式:<KeySet><Keyname="VoucherId"value==""/><Keyname="VoucherType"valuse=""/><Keyname="VoucherCode"value=""/><Keyname="AuditAuthId"value=""/></KeySet>auditResult審批返回信息格式如下:<ResultVoucherId="單據(jù)號"VoucherType="單據(jù)類型"VoucherCode="單據(jù)編號"AuditResult="審批執(zhí)行結(jié)果,成功返回true;失敗返回false"AuditAction="審批意見,同意:Agree、不同意:Disagree"AuditOpinion="審批意見,審批界面輸入的意見"errMsg="審批錯誤時返回的錯誤信息"><BizData>業(yè)務(wù)插件執(zhí)行時,有業(yè)務(wù)插件形成的信息</BizData></Result>棄審接口///<paramname="keySet">關(guān)鍵業(yè)務(wù)數(shù)據(jù)</param>///<paramname="opinion">審批意見</param>///<paramname="state">審批狀態(tài)</param>///<paramname="calledCt*">登陸上下文</param>///<paramname="auditResult">審批返回信息</param>///<returns>true-成功false-失敗</returns>FunctionAbandon(keySetAsString,opinionAsString,stateAsInteger,calledCt*AsCalledConte*t,auditResultAsString)AsBoolean備注:其中keySet和auditResult的格式同上。3.11 撤銷行為客戶端編程.///<summary>///撤銷提交接口///</summary>///<paramname="bizObjectID">業(yè)務(wù)對象ID</param>///<paramname="eventID">業(yè)務(wù)事件ID</param>///<paramname="VoucherId">單據(jù)ID</param>///<paramname="VoucherType">單據(jù)類型</param>///<paramname="cVoucherCode">單據(jù)Code</param>///<paramname="sBizdata">業(yè)務(wù)參數(shù)</param>///<paramname="callerCt*">用戶登錄信息</param>///<paramname="strErr">錯誤描述</param>///<returns>返回提交調(diào)用結(jié)果,成功返回true,否則返回false。</returns>PublicboolRevokeAudition(stringbizObjectID,stringeventID,stringVou
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版綠色能源項目水電設(shè)施承包合同3篇
- 二零二五年架子工工程綠色施工技術(shù)指導(dǎo)合同模板2篇
- 2025版人工智能項目提成協(xié)議書(技術(shù)成果轉(zhuǎn)化提成合同)3篇
- 二零二五年度太陽能光伏電站安裝與運營管理合同3篇
- 2025年度深井鉆井工程環(huán)保驗收合同4篇
- 二零二五年度房地產(chǎn)交易風(fēng)險預(yù)警協(xié)議3篇
- 2025餐飲業(yè)三人合作開發(fā)新菜品協(xié)議2篇
- 2025年度水庫魚塘漁業(yè)養(yǎng)殖與漁業(yè)保險合作承包合同4篇
- 泥工包工2025年度合同范本2篇
- 二零二五年車牌指標(biāo)租賃與汽車租賃服務(wù)合同3篇
- 《健康體檢知識》課件
- 部編版語文五年級下冊 第一單元 專項訓(xùn)練課外閱讀(含答案)
- 蘇少版七年級美術(shù)下冊 全冊
- 名表買賣合同協(xié)議書
- JTG-T-F20-2015公路路面基層施工技術(shù)細(xì)則
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 中西方校服文化差異研究
- 《子宮肉瘤》課件
- 《準(zhǔn)媽媽衣食住行》課件
- 給男友的道歉信10000字(十二篇)
- 客人在酒店受傷免責(zé)承諾書范本
評論
0/150
提交評論