U8工作流开发手册_第1页
U8工作流开发手册_第2页
U8工作流开发手册_第3页
U8工作流开发手册_第4页
U8工作流开发手册_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z. 工作流开发手册功能介绍:工作流系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态,并在人和应用之间分派活动、最终到达协同多人或效劳共同完成工作任务的目的。使用过程:工作流系统的使用过程分为三个阶段:设计时、配置时、运行时;设计时阶段需要完成流程模型设计;配置时阶段需要完成工作流系统运行环境的配置、工作流模型发布及版本管理等工作;运行时阶段需要负责发起和完成流程实例等工作。U8系统安装完毕后,首先需要进入工作流环境配置模块设置MOM效劳器和工作流引擎信息;配置的信息会通知到对应的MOM效劳器,使得MOM效劳器感知与其协同工作的工作流引擎信息。配置时涉及的功能模块及运行时的流程实例管理模块存在于工作流管理控制台中。环境配置完毕后,可以进展流程模型设计工作。通过流程设计器,设计过程中结合UAP工具中设计出来的业务对象和注册在MOM效劳器上的消息和效劳信息,生成流程模型。流程设计器设计出来的流程模型还不能直接投入使用,需要通过重定位模块对其消息和效劳地址信息从设计时环境的地址转化为运行时地址后,才能正式使用。重定位模块通过“流程发布〞动作来完成该动作的。流程模型发布后,业务应用就可通过消息发送接口发送特定类型的消息,消息通过MOM效劳器通知工作流引擎,生成对应的流程实例,在流程实例处理过程中调用业务效劳、生成需要人工交互的任务项、并最终协调完成流程实例的处理。流程实例可以被流程实例管理模块加以管理、修改。开发帮助基于新的工作流平台之上的审批流应用,利用UAP的数据引擎、MOM消息发布订阅和消息转发功能来完成审批这一类特殊流程的管理、配置、设计、使用、维护、监视操作。下列图是工作流系统使用流程图:在上述流程涉及到业务系统开发人员的活动中,效劳开发、效劳注册、预制业务对象、编写预制运行时活动插件、编写客户端审批提交代码等工作是在业务模块中实现审批功能都可能涉及的动作。开发与注册效劳本处效劳是指业务部门提供能、为了能满足特定业务功能而实现的组件中的方法;这些效劳可在流程设计过程中运用于流程模型,表达为流程模型中的自动效劳。效劳开发效劳开发无特别约定,效劳部如果需要CallConte*t、发起人等工作流系统置变量信息,可以在流程设计过程中,指定变量->效劳传入参数的映射方式来获得。流程模型置变量:变量名类型说明ActivityNamestring[活动名称]StartPerformerstring[流程发起人工号]CurrentPerformerstring[执行者工号]StartTimestring[流程发起时间]ActivityStartTimestring[活动开场时间]ActivityDelaystring[延迟时间]StartPerformerNamestring[流程发起人]CurrentPerformerNamestring[执行者]KeySetstring[人工活动UNDO接口参数KeySet]CalledConte*tobject[人工活动UNDO接口参数CalledConte*t]CallResultstring[人工活动UNDO接口返回值]LoginConte*tobject[工作流构造LoginConte*t对象]效劳注册在工作流模型中,自动活动所调用的效劳需要预先注册到MOM效劳器上,注册过程如下:1.如果MOM上没建立所属子产品功能点,则首先建立该子产品功能点;建立方法:翻开MOM集成工具,在集成目录-U8ERP下参加子产品功能点,如下列图:2.在所属子产品功能点的“集成接口〞节点上,注册集成接口,如下列图:进入注册集成接口界面后,首先设置集成注册码和集成接口名,集成接口注册吗是用于识别该注册效劳的,要求在同一子产品节点下注册码惟一。然后需要设置效劳调用端点〔如果是本地调用,需要考虑调用路径问题!〕:设置效劳路径时可以使用MOM预置的三个宏变量:%U8SOFT%表示U8安装目录%UFSQL%表示ufsql目录%U8APPSRV%表示u8应用效劳器例如:注册:D:\U8SOFT\SA\MyLib.DLL组件,使用宏变量后应该为:%U8SOFT%\SA\MyLib.DLL自动效劳开发中的参数约束1、所有参数类型必须是根本类型和可SOAP序列化的类型;2、非根本类型的参数必须部署在GAC中;3、对于部署在本地的效劳,支持ref,out参数〔VB的ByRef同ref〕;4、对于VB中声明为ByRef的参数,必须是Variant类型。支持的根本类型包括: "void", "string",〔对应设计器变量类型string〕 "short",〔对应设计器变量类型float〕 "int",〔对应设计器变量类型int〕 "long",〔对应设计器变量类型int〕 "double",〔对应设计器变量类型double〕 "bool",〔对应设计器变量类型bool〕 "datetime",〔对应设计器变量类型datetime〕 "object"〔对应设计器变量类型object〕如果工作流实例中,对该效劳调用后,由于*些原因,流程实例回滚〔Rollback〕时,该效劳也需要回滚,则该效劳还需要注册对应的Undo接口信息。约定Undo接口方法名为Un+方法名,参数、返回值同原注册的效劳方法一致。为了能正确描述Undo接口,需要在扩展属性中增加3个属性:undo_class:如果是就表示为progid,是.Net表示为类的完全限定名 undo_type:assembly,undo_location:当是.Net程序的时候表示为程序集的名如下列图:效劳例代码usingusingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;namespaceEployeeSelfSevice{publicclassEmployee{///<summary>///申请休假///</summary>///<paramname="EmployeeID">员工号</param>///<paramname="HolidayType">假期类型</param>///<paramname="ApplyDateNumber">申请数量</param>///<returns>申请是否成功</returns>publicboolApplyHoliday(stringEmployeeID,intHolidayType,intApplyDateNumber){//TODO:如果符合申请条件,扣减该员工的可用假期数returntrue;}///<summary>///ApplyHoliday的Undo方法///</summary>///<paramname="EmployeeID">员工号</param>///<paramname="HolidayType">假期类型</param>///<paramname="ApplyDateNumber">申请数量</param>///<returns>申请是否成功</returns>publicboolUnApplyHoliday(stringEmployeeID,intHolidayType,intApplyDateNumber){returntrue;}}}人工活动插件开发插件必须包含如下三个方法,名称可以不同,但参数必须一致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, //转签 Reject=4, //打回 Revocation=5, //撤销 Return=6, //退回 Abandon=7, //弃审 }Bizdata:业务需要传出的参数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插件的开发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预制业务对象业务对象是指审批流程处理的各种类型业务对象〔比方:采购订单、材料出库单、出口订单等〕。新的审批流利用UAP的数据引擎来定义这些业务对象,这样就可以通过修改数据引擎中的业务对象的查询结果来形成不同的业务对象的Schema,从而可以将这些对象的Schema用作流程定义的条件并在流程运行时获取业务对象实例的属性值来进展相应的处理。UAP数据引擎进展业务对象设计审批流中用到的是UAP数据引擎中查询结果的数据,具体设计步骤及其与预置数据之间的关系如下:在数据引擎中添加业务对象设置业务对象根本属性为业务对象添加功能设置业务功能根本属性为功能添加业务实体关系查询设置实体关系查询根本属性为查询添加根底业务实体为查询添加列。查询结果中必须包含结果列VoucherId,VoucherCode,VoucherType。这三列在审批流中是关键业务数据,会在任务项的扩展属性中出现,可以作为任务项显示名称、发送消息模版的数据提供者。命名必须注意完全匹配〔注意大小写〕为查询添加计算结果列为查询添加查询条件测试新增业务对象审批业务对象注册数据引擎中设计完毕业务对象后,就可提供应审批流系统使用。使用前,需要先注册审批业务对象〔注意:与数据引擎中所描述的业务对象是两不同概念〕。注册过程使用位于U8SOFT\Workflow目录下的工具AuditBusinessServiceTool.e*e来完成。审批业务对象注册步骤如下:建立分类关系注册审批业务对象增加业务事件业务事件可理解为对审批对象所可以进展的审批操作,如对请假单这一审批业务对象,可以进展提交、审批、打回等操作。业务事件URL中包含响应该业务事件的业务模块定位信息,在运行期间,门户将根据该信息加载相应的业务模块来完成该业务事件的响应。URL预置格式如下:<"*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>上述各参数值与UFSystem.UA_Menu中的字段存在对应关系,id->UA_Menu.cMenu_Id,name->UA_Menu.cMenu_Name,authID->UA_Menu.cAuth_Id,SubFunction->UA_Menu.cSub_ID,其他参数保存,可不预置。如来料报检单:<"*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>上图中支持插件选项通常需要勾上。任务类型中,一般情况下,需填“1〞〔说明为审批类型的任务工程〕,但如果是为了说明为打回重做的任务类型,需要填入“2〞。指定业务事件对应的业务实体本处的业务实体可对应到数据引擎中的业务对象下的功能中包含的*特定查询。设置界面如下:5.指定业务事件所需要的关键业务参数关键业务参数将会在设计器中指定从业务实体中取数据的规则〔*Path〕,流程实例运行时从符合业务实体格式描述的业务单据取得数据,并在调用业务模块处理该业务事件时传递给业务模块。通常业务事件均应至少包含三个参数:VoucherId,VoucherCode,VoucherType。设置业务事件插件通过菜单项选择项-"业务插件进入插件注册界面,如下列图:然后在业务对象事件下注册该事件处理后调用的插件。审批提交客户端编程提交流程图判断是否启用工作流,分别提供了存储过程和接口存储过程:Usp_WF_IsFlowControlledcBizObjectIdnvarchar(40),cBizEventIdnvarchar(40),iYearsmallint,cAcc_Idnvarchar(3),bControlledbitout程序接口:提供应业务产品发起提交的接口UFIDA.U8.Audit.ServicePro*y.dllVB代码DimoAuditasObjectSetoAudit=CreateObject(“UFIDA.U8.Audit.ServicePro*y.AuditServicePro*y〞)接口PublicFunctionSubmitApplicationMessage(primBizDataAsString,calledCt*AsCalledConte*t,ByRefisWFControledAsBoolean,ByReferrMsgAsString)AsBooleanprimBizData:关键业务数据*ML串,*ML串的Schema如下<KeySet><!--业务对象id--><Keyname="BizObjectId"value=""/><!—业务事件--><Keyname="BizEventId"value=""/><!--单据号--><Keyname="VoucherId"value=""/><!—时间戳--><Keyname="TimeStamp"value=""/><!—其他插件或效劳需要用到的参数,如AuthId--></KeySet>calledCt*:Login中的登陆上下文isWFControlled:是否通过了发起条件errMsg:错误信息重载方法2PublicFunctionSubmitApplicationMessage_2(bizObjectIdAsString,eventidAsString,voucherIdAsString,calledCt*AsCalledConte*t,ByRefisWFControledAsBoolean,ByReferrMsgAsString)AsBooleanbizObjectId:业务对象Ideventid:业务事件IdvoucherId:单据id例如:1.VB客户端调用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'业务对象的标识,与与审批预置表〔AuditBizObjects〕中的业务对象主键一样DimstrBizObjectIdAsString'业务事件的标识,与审批预置表〔AuditBizEvents〕中的业务事件主键一样DimstrBizEventIdAsString'单据标识,也就是业务对象的实例标识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*"请选择选择业务对象或业务事件!"Else'业务进展自己的处理,可能需要发起自己的事务ret=auditSvc.SubmitApplicationMessage_2(strBizObjectId,strBizEventId,iVoucherId,calledCt*,bControlled,errMsg)If(ret=True)ThenIfbControlled=TrueThenMsgBo*("提交成功")'如果发起事务,执行其他业务逻辑,并提交事务 EndIfElseMsgBo*("提交失败,失败原因:"&errMsg)'如果发起事务,回滚事务,并做其他处理EndIfEndIfReturnerrHandler:'业务自己的异常处理逻辑 2..NET客户端调用publicboolSubmitApplicationMessage(stringbizObjectId,stringeventId,stringvoucherId,stringconte*t,CalledConte*tcalledCt*)参数说明:///<summary> ///提交审批消息 ///</summary> ///<paramname="bizObjectId">业务对象标识</param> ///<paramname="eventId">业务事件标识</param> ///<paramname="voucherId">单据唯一标识</param> ///<paramname="conte*t">用户登录信息</param> ///<returns>返回提交调用结果,成功返回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; //子系统标识privateconststringSubId="DP"; //需要根据各业务子系统进展替换 try {//创立审批效劳的客户端代理AuditServicePro*yauditSvc=newAuditServicePro*y();//构造Login的CalledConte*t对象CalledConte*tcalledCt*=newCalledConte*t(); calledCt*.subId=SubId; calledCt*.TaskID=_login.GetTaskID(SubId); calledCt*.token=_login.userToken; //业务对象标识stringbizObjectId="PU88";//业务事件标识stringbizEventId="PU88.Submit";//单据号intvoucherId=1;if(bizEventId==string.Empty||bizObjectId==string.Empty){MessageBo*.Show("请选择选择业务对象或业务事件!");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功能:显示批量处理界面,返回批量处理参数。〔注意:本版对批审的处理分两个步骤,先显示界面,返回选择参数,然后逐次调用3.10的审核接口进展批量处理〕显示批审界面///<paramname="calledCt*">登陆上下文</param>///<paramname="action">审批动作,传出参数</param>///<paramname="state">审批状态,传出参数</param>///<paramname="opinion">审批意见,传出参数</param>///<returns>用户点击同意返回True;点击取消则返回False</returns>FunctionShowAuditSimpleUI(calledCt*AsCalledConte*t,byrefactionAsInteger,byrefstateAsInteger,byrefopinionAsString)AsBoolean显示批弃界面///<paramname="calledCt*">登陆上下文</param>///<paramname="state">审批状态,传出参数</param>///<paramname="opinion">审批意见,传出参数</param>///<returns>用户点击同意返回True;点击取消则返回False</returns>FunctionShowAuditAbandonUI(calledCt*AsCalledConte*t,byrefstateAsInteger,byrefopinionAsString)AsBoolean显示自定义界面///<paramname="flags">窗体的显示组合枚举</param>///<paramname="calledCt*">登陆上下文</param>///<paramname="action">审批动作,传出参数</param>///<paramname="state">审批状态,传出参数</param>///<paramname="opinion">审批意见,传出参数</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}该接口提供了自定义的界面显示风格,前两个接口是该接口的封装。如ShowAuditSimpleUI可用该接口表示为:o.ShowAuditUI(AuditUIItemFlags.AuditUIItemFlags_AgreeButtonOrAuditUIItemFlags.AuditUIItemFlags_CheckedInteraction,ct*,action,state,opinion);3.10 批审审核接口程序集:UFIDA.U8.Audit.ServicePro*y.dll功能:根据批审界面返回的参数,逐次调用该接口进展审批处理审核接口///<paramname="keySet">关键业务数据</param>///<paramname="action">审批动作</param>///<paramname="state">审批状态</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关键业务数据格式同插件中的格式:<KeySet><Keyname="VoucherId"value==""/><Keyname="VoucherType"valuse=""/><Keyname="VoucherCode"value=""/><Keyname="AuditAuthId"value=""/></KeySet>auditResult审批返回信息格式如下:<ResultVoucherId="单据号"VoucherType="单据类型"VoucherCode="单据编号"AuditResult="审批执行结果,成功返回true;失败返回false"AuditAction="审批意见,同意:Agree、不同意:Disagree"AuditOpinion="审批意见,审批界面输入的意见"errMsg="审批错误时返回的错误信息"><BizData>业务插件执行时,有业务插件形成的信息</BizData></Result>弃审接口///<paramname="keySet">关键业务数据</param>///<paramname="opinion">审批意见</param>///<paramname="state">审批状态</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">业务对象ID</param>///<paramname="eventID">业务事件ID</param>///<paramname="VoucherId">单据ID</param>///<paramname="VoucherType">单据类型</param>///<paramname="cVoucherCode">单据Code</param>///<paramname="sBizdata">业务参数</param>///<paramname="callerCt*">用户登录信息</param>///<paramname="strErr">错误描述</param>///<returns>返回提交调用结果,成功返回true,否则返回false。</returns>PublicboolRevokeAudition(stringbizObjectID,stringeventID,stringVou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论