工作流培训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工作流培训版本:1.0
作者:Simon
创建日期:2004-2-5
一.工作流简介
●工作流的定义
根据 WfMC 的定义,工作流(Workflow)就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。
简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务.(WfMC: Workflow Management Coalition,工作流管理联盟)
●工作流管理系统定义(WFMS)
●一般WFMS共同特性:
工作流系统作为一个公共的模型,不管如何实现这个模型,都会包含以下这些相同的特性,即以下3个功能提供支持:
1)建立时期(Build-time)功能,定义,模拟工作流过程,及其组成活动。
2)运行时期(Run-time)控制功能,在运行环境中管理工作流过程,管
理不同活动执行顺序。
3)运行时期与用户,IT应用程序(工具)的交互,来处理各种活动的执
行。
二.AIC工作流介绍
AIC的工作流系统(AICWFMS)是基于金蝶BOS的工作流组件的,这个组件相对于如IBM的MQ,BEA的Integration,是一个很简单的工作流产品(只能说是半成品);但改造后,基本可以满足工商业务的需求。
2.1 AICWFMS定义介绍
2.1.1 Adobe 公司SVG介绍
SVG是一种定义工作流流程的图形化的工具,
说明:
1)我们常用的有开始,结束,手工节点等。
2)节点转换路线(transition)是节点转换时候,规则定义的地方,在下面会提到的。
3)要在IE上看到这样定义图,需要在机器安装svg.exe2.0.
2.1.2定义流程的规则
规则的定义在%BOS_HOME%\bin\rulebuilder.cmd,生成的文件默认
在%BOS_HOME%\ruledir下:
●RuleBuilder的工具界面
图表 1
图表 2
说明:
首先我们需要选择一个规则类,如我们企业登记里就采用
com.aic.reg.ActivityModel里面两个参数:acttypeid与statusid,通过这两个参数的数值来定义规则,如上图中审查通过对应===》活动类型编号(acttypeid)为3,活动状态编号(statusid)为1。
规则类可以任意的JAVA对象类,为了便于定义与理解,对应规则名称与关联可以采用中文。
上述定义的规则在定义模板时候,在||transition||中会出现。
2.1.3定义工作流程模板例子:
下面以配置一个年检流程模板例子,首先在我们aic 系统中: ● 打开定义界面:
图表 3
● 定义模板,配置流程: 从上图读出来是模板的名称跟uuid,可以编辑原有的模板,可以新增新的模板。
这些模板一般放在%BOS_HOME%\wfmodel \下。
文件都是UUID ,为了保持唯一。
图表
节点说明:
图表 5
说明:上述定义工作流流程过程中,首先要在用户管理中,定义好组与相应的权限;关于怎样定义组与机构,查看相应的文档。
2.2 AICWFMS数据结构简介
2.2.1工作流定义表
说明:
上图对应的数据表是t_+entityName,如t_wfActivity;其中t_orgUnits与
t_orgEmployees是用户管理的表,这里记录是执行者UUID。
2.2.2扩展工作流定义表
这两个表是根据AIC项目扩展的表,为了更方便定义工作流程的模板;这个调整,使权限分配与模板定义分离,大大减少模板的数量,并且可以把这个配置交给客户来维护。
这个改变,相应的API作些许的改动。
2.2.3运行中的工作流表
说明:
1)t_wfrProcess中workflowid对应定义表中的workflowid.
2)T_wfrtasklist中的performer对应t_orgEmployees中的empid.
2.2.4 AICWFMS 扩展的工作流运行表:
表:tasklist
●bizSequence:业务流水号 varchar(36) PK
●historyInfoID: varchar(36) 业务历史流水号
● entityNo: varchar(36) 变更,注销或者查询正式表的对应企业的内部
标示符,就是存放内部的企业唯一码
●registerID: varchar(256) 注册号,由于动产抵押时候比较长
●entityType: varchar(8) 企业类型,可以把其他的业务编码形式 ---对应
EnterpriseType表,大企业登记中把市场,广告,抵押等也编码到表
中。
●entityName: varchar(128) 实体名称,如企业,市场
●acceptID: varchar(8) 受理号
●acceptType: varchar(2) 业务类型 ----acceptType
●actType: varchar(2) 当前环节类型 ------------activityType
●actStatus: varchar(2) 当前环节状态------------activeStatus
●taskStartDate datetime 启动代办事宜的时间,上一个环节结束时间
●acceptDept varchar(8) 受理机关 ---GdAicCode
●applyDate datetime 申请日期/案发时间/受理时间
● ActShouldEndDate datetime 当前环节应该结束时间/每启动下一个流程从
配置中提取
● BizShouldEndDate datetime 业务应该结束时间
● BizEndDate datetime 业务实际结束时间
●AcceptorName,varch(30)受理人
●ApplicantName ,varch(30)被委托人
●BizFlag char(1),如被驳回、过期不领证等, 事务类型标志位(正讨论是否
采用8位的标志位)
●isSignIn char(1) 是否签收
●signInOp varchar(32) 签收人名称,
●bizContent varchar(512) 业务内容,
●workflowID varchar(36) 工作流ID,
●sender varchar(36) 发送者
●senderID varchar(250) 发送者UUID
● relBizSequence varchar(36) 监管时候跟业务相关的业务流水号
preBizStatus varchar(2) 前业务状态,在没做这个业务前状态
2.3AICWFMS APIS
2.3.1定义AICWFMS APIS
定义模板,规则,扩展模板都有对应的操作界面;关于模板定义界面及规则界面在上面已经阐述了,这就不详说了;下面说说扩展模板使用了:
列出定义了扩展模板:
图表 6
图表 7
说明:
扩展的模板定义就是把原来企业登记模板定义整合一起;通过这个界面,在流程模板定义中,对于企业登记只要一个就成了;然后在这个界面给不同的分局,不同的业务赋予权限。
相关的API:com.chd.workflow.wfdefine.*
我们系统中,监管与案件部分,由于组相对来说,不稳定的,所以是通过即时产生临时组,完成业务后,再删除的。
此扩展也是后面的分布式工作流,分布式业务做准备的。
2.3.2 运行工作流的APIS
客户端的工作流API主要以下这个类:com.chd.workflow.WorkflowHelper
●public static String startProcess(String workflowId,String uuid,
Object model, String nextPerformerUuid)说明:workflowId:工作流模板ID(在企业登记中用一个XML进行配置) uuid:业务ID,对应我们系统的bizSequence.
model:业务规则对象(com.aic.reg.ActivityModel)
nextPerformerUuid:环节的执行者
start a workflow instance and process the start node.
●WorkflowHelper.processNodeSession
(com.chd.workflow.todolist.BosWorkflowModel bosModel,
Object model, String nextPerformer)
这里:bosModel其中一个属性就是actionID就是上述的节点名称了。
model:业务规则对象
nextPerformerUuid:下一个环节的执行者
●getWorkflowID(deptID : String, entityType : String, acceptType : String,
aicType : String) : com.chd.workflow.wfdefine.WfAicTypeModel
在启动工作流前,提出对应模板ID,新的方法:
getWorkflowID(deptID : String, entityType : String, acceptType : String) : String
此方法:@deprecated will be removed later
注意:新版本中,把WfAicTypeModel.的Typeid,作为原来的workflowid,详细见:com.aic.reg.activitysys. PreAcceptSysControllerBean
●getNodePerformers(workflowId : String, nodeName : String) :
java.util.Collection
获取某个环节的执行者. UserInfo集合。
2.3.3 显示与推进待办的APIS
说明:
上述文件在com.chd.workflow.*下
tasklist.jsp作为显示,TodoListControler提取显示的待办事宜:这里需要组装显示URL
对tasklist进行操作使用com.aic.reg.bo.ActivityBO
1)void addTaskList(TaskListModel model):增加记录
主键为bizsequence
2)void updateTaskList(TaskListModel model):更新这条记录
说明:在调用这个方法前,除了要设置这个对象的数据项外,需要
特别注意是,需要设置pkValue,就是对应这笔业务的bizSequence
例如:
bo.udateTaskList(model);
3)checkIsSignIn(TasklistModel mdoel)
/* @return:String:"0":表示还没有人签收,本人立刻签收。
* userID:表示有人签收了,但不是本人。
* "2":表示有人签收了,是本人
*/
三.其他
3.1配置
%BOS_HOME%\configuration:
#工作流的配置信息
jms_factory=jms/QueueConnectionFactory
queue=jms.myQueue
workflow_history=KEEP
wf_jndi_factory=com.apusic.jndi.InitialContextFactory
wf_jms_factory=jms/QueueConnectionFactory
wf_jms_queue=jms.myQueue
wf_jms_srv_url=rmi://localhost:6888
wf_jms_reply=notRequired
#请配置此处的JDBC Driver名称及URL, 用户名, 密码
#if you use Sybase, you can config these parameters like this:
wf_drivername=com.sybase.jdbc2.jdbc.SybXADataSource
wf_url=jdbc:sybase:Tds:192.168.88.147:4000/aicbiz
#wf_url=jdbc:sybase:Tds:192.168.88.211:4000/aicbiz
#wf_drivername=com.apusic.bos.jdbc.sqlserver.SQLServerDriver
#wf_url=jdbc:apusic:sqlserver://ebizser:1433;DatabaseName=bosfinal;SelectMet hod=cursor;Charset=GBK
wf_username=aicbiz
wf_password=supper
#wf_password=v89t15
wf_props=charset=cp936
#You MUST change [D:\\BOS] to BOS_HOME
wf_modeling_dir=D:\\BOS\\wfmodel
#You MUST change [D:\\BOS] to BOS_HOME
rules_dir=D:\\BOS\\ruledir
3.2分布式工作流
这里只是简单介绍下一步我们要弄的东西,由于前面开发,没有仔细考虑分布式的问题,所以我们以前开发的代码相应需要改造;这下面,是对分布式工作流一种方案。
详细见Vss上的《跨机构分布式方案》。
1.跨机关的业务
场地勘察
下级机关
跨机关有以下的情况:
●两个机关用一个应用服务器的
如中山市局与它的分局
●两个机关不在同一应用服务器的
如省局与中山市局
●场地勘察与属地认领可以是本部
及下级机关;案件线索转移可上一级,也可以下一级机关。
●逐级上报的原则,也就是说不能越级转递。
2.数据关系
审核
Remote bos subSys 上级机关
(from 公用)
3.3问题汇总
1.JMSException
2.BusinessException。