U8工作流开发手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工作流开发手册
1 功能介绍:
工作流系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态,并在人和应用之间分派活动、最终达到协同多人或服务共同完成工作任务的目的。
2 使用过程:
工作流系统的使用过程分为三个阶段:设计时、配置时、运行时;设计时阶段需要完成流程模型设计;配置时阶段需要完成工作流系统运行环境的配置、工作流模型发布及版本管理等工作;运行时阶段需要负责发起和完成流程实例等工作。
U8系统安装完毕后,首先需要进入工作流环境配置模块设置MOM服务器和工作流引擎信息;配置的信息会通知到对应的MOM服务器,使得MOM服务器感知与其协同工作的工作流引擎信息。配置时涉及的功能模块及运行时的流程实例管理模块存在于工作流管理控制台中。
环境配置完毕后,可以进行流程模型设计工作。通过流程设计器,设计过程中结合UAP工具中设计出来的业务对象和注册在MOM服务器上的消息和服务信息,生成流程模型。流程设计器设计出来的流程模型还不能直接投入使用,需要通过重定位模块对其消息和服务地址信息从设计时环境的地址转化为运行时地址后,才能正式使用。重定位模块通过“流程发布”动作来完成该动作的。
流程模型发布后,业务应用就可通过消息发送接口发送特定类型的消息,消息通过MOM服务器通知工作流引擎,生成对应的流程实例,在流程实例处理过程中调用业务服务、生成需要人工交互的任务项、并最终协调完成流程实例的处理。流程实例可以被流程实例管理模块加以管理、修改。
3 开发帮助
基于新的工作流平台之上的审批流应用,利用UAP的数据引擎、MOM消息发布订阅和消息转发功能来完成审批这一类特殊流程的管理、配置、设计、使用、维护、监视操作。下图是工作流系统使用流程图:
在上述流程涉及到业务系统开发人员的活动中,服务开发、服务注册、预制业务对象、编写预制运行时活动插件、编写客户端审批提交代码等工作是在业务模块中实现审批功能都可能涉及的动作。
3.1
开发与注册服务
本处服务是指业务部门提供能、为了能满足特定业务功能而实现的组件中的方法;这些服务可在流程设计过程中运用于流程模型,体现为流程模型中的自动服务。
3.2 服务开发
服务开发无特别约定,服务内部如果需要CallContext 、发起人等工作流系统内置变量信息,可以在流程设计过程中,指定变量-> 服务传入参数的映射方式来获得。
流程模型内置变量:
3.3服务注册
在工作流模型中,自动活动所调用的服务需要预先注册到MOM服务器上,注册过程如下:
1.如果MOM上没建立所属子产品功能点,则首先建立该子产品功能点;建立方法:打开MOM集成工具,在集成目录-U8ERP下加入子产品功能点,如下图:
2.在所属子产品功能点的“集成接口”节点上,注册集成接口,如下图:
该注册服务的,要求在同一子产品节点下注册码惟一。
然后需要设置服务调用端点(如果是本地调用,需要考虑调用路径问题!):
设置服务路径时可以使用MOM预置的三个宏变量:
%U8SOFT% 表示U8安装目录
%UFCOMSQL% 表示ufcomsql目录
%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:如果是COM就表示为progid,是.Net表示为类的完全限定名undo_type:assembly,com
undo_location:当是.Net程序的时候表示为程序集的名
如下图:
服务例代码
3.4人工活动插件开发
插件必须包含如下三个方法,名称可以不同,但参数必须一致
public interface IAuditPlugin
{
bool UndoAudition(string primBizData,string auditAction,ref string bizdata,object
calledCtx, ref string errMsg);
bool DoAudition(string primBizData,string auditAction,ref string bizdata,object calledCtx, ref string errMsg);
bool HandleBizException(string primBizData,string auditAction,ref string handleResult,ref string bizdata,object calledCtx, ref string errMsg);
}
primBizData:KeySet
auditAction的取值
///
/// 审批动作枚举类型
///
[Serializable]
public enum AuditAction
{
Submit = 0, //提交
Agree = 1, //同意
Disagree = 2, //不同意
Dispatch = 3, //转签
Reject = 4, //打回
Revocation = 5, //撤销
Return = 6, //退回
Abandon = 7, //弃审
}
Bizdata:业务需要传出的参数
handleResult:是否需要重做,取值ReHandle/UnHandle
using System;
using System.Collections.Generic;
using System.Text;
using UFSoft.U8.Framework.LoginContext;
using UFIDA.U8.Audit.Interface;
using mon;
using mon.Args;
using UFSoft.U8.EX.Server.BusinessObject;
using UFSoft.U8.EX.Framework.DataModel;
namespace UFSoft.U8.EX.CreditPlugins
{
class FinalAuditPlugin:IAuditPlugin
{