EMOSS2流程引擎开发指南

上传人:唐****1 文档编号:113294750 上传时间:2022-06-24 格式:DOC 页数:34 大小:1.10MB
收藏 版权申诉 举报 下载
EMOSS2流程引擎开发指南_第1页
第1页 / 共34页
EMOSS2流程引擎开发指南_第2页
第2页 / 共34页
EMOSS2流程引擎开发指南_第3页
第3页 / 共34页
资源描述:

《EMOSS2流程引擎开发指南》由会员分享,可在线阅读,更多相关《EMOSS2流程引擎开发指南(34页珍藏版)》请在装配图网上搜索。

1、EMOSS2流程引擎开发指南 中博信息技术研究院有限公司版本历史版本号更改描述更改日期修订人是否基线版本(Y/N)评审记录#评审通过日期V1.0建立文档2012-7-30余志淼Y目 录1.概述51.1.流程引擎说明51.2.流程引擎架构52.开发前准备62.1.建立组织架构视图62.1.1.公司(CORE_COMPANY)62.1.2.部门(CORE_DEPARTMENT)62.1.3.员工(CORE_EMPLOYEE)62.1.4.用户(CORE_USER)72.1.5.角色(CORE_ROLE)72.1.6.用户流程角色表(CORE_USER_ROLES)82.2.建立流程数据表82.3.

2、安装流程设计工具82.3.1.安装JDK82.3.2.安装流程设计工具92.4.将流程编程接口加入到项目代码中93.开发指南93.1.流程设计工具使用93.1.1.新增流程103.1.2.设计流程图103.1.2.1.流程属性设置12A.流程属性说明12B.流程变量定义13C.流程数据属性14D.高级属性143.1.2.2.流程节点属性设置15A.属性说明16B.按钮信息17C.审批用户范围设置18D.转办用户范围设置21E.传阅用户范围设置223.1.2.3.连接属性设置233.1.3.保存流程图253.1.4.设置流程图253.1.5.删除流程图253.1.6.导出流程图253.1.7.导

3、入流程图263.2.流程编程接口使用263.2.1.流程引擎数据源初始化263.2.1.1.不使用连接池方式:263.2.1.2.使用C3P0连接池方式263.2.2.流程配置的加载273.2.3.用户登录的改造(可选)273.2.4.流程处理283.2.4.1.点击发起流程按钮:283.2.4.2.点击审批通过按钮:293.2.4.3.服务端实现业务处理293.2.5.常用JAVA类说明.zbiti.core.config.wf.WorkFlowC.zbiti.core.config.wf.WorkFlowConfigP.zbiti.core.config.wf.WorkFlowO.zbit

4、i.core.config.wf.WFI.zbiti.core.vo.ParameterO.zbiti.core.config.wf.WorkFlowProxy313.2.5.7.ponents.UserC.zbiti.core.ResourceP.zbiti.core.consts.T.zbiti.core.consts.Sequences324.附件321. 概述1.1. 流程引擎说明EMOSS2流程引擎是EMOSS2开发平台的一部分,主要完成流程发起,审批,监控等功能,是较轻量级的流程引擎,但完全可以满足企业的业务流程需求。流程引擎目前支持的数据库有:oracle、mysql、sybas

5、e。主要的组成部分有:1, 组织架构视图:流程引擎需要基于组织架构才能实现审批人的选择、工作项的生成、流转条件的判断等。2, 流程数据表:用于保存流程图、流程实例、工作项等流程相关的数据。3, 流程设计工具:用于设计流程图,分配不同的版本给不同的公司。JDK要求必须是1.6及以上。4, 流程编程接口:提供流程的发起、审批、参与者计算等接口给外部程序调用。主要是jar包形式,JDK的版本必须是1.5及以上。 1.2. 流程引擎架构外部Jsp、java程序组织架构视图流程设计工具流程编程接口流程数据表:流程图流程数据表:流程实例、工作项.2. 开发前准备2.1. 建立组织架构视图根据字段列表建立各

6、个视图。字段列表只列出必要字段,也可以根据需要扩展其他字段。2.1.1. 公司(CORE_COMPANY)字段字段名称类型说明COMPANY_ID公司IDNUMBER(16)公司的唯一标识COMPANY_CID公司变更序号NUMBER(16)固定值:1COMPANY_CODE公司编码VARCHAR2(50)P_COMPANY_ID上级公司IDNUMBER(16)COMPANY_NAME公司名称VARCHAR2(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:12.1.2. 部门(CORE_DE

7、PARTMENT)字段字段名称类型说明DEP_ID部门IDNUMBER(16)部门的唯一标识DEP_CID部门变更序号NUMBER(16)固定值:1COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYCOMPANY_CID所属公司变更序号NUMBER(16)固定值:1DEP_CODE部门编码VARCHAR2(50)P_DEP_ID上级部门IDNUMBER(16)DEP_NAME部门名称VARCHAR2(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:12.1.3.

8、 员工(CORE_EMPLOYEE)字段字段名称类型说明EMP_ID员工IDNUMBER(16)员工的唯一标识EMP_CID员工变更序号NUMBER(16)固定值:1DEP_ID所属部门IDNUMBER(16)关联到CORE_DEPARTMENTDEP_CID所属部门变更序号NUMBER(16)固定值:1COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYCOMPANY_CID所属公司变更序号NUMBER(16)固定值:1EMP_CODE员工编码VARCHAR2(50)EMP_NAME姓名VARCHAR2(50)SORT_ID排序号NUMBER(16)可空IS_L

9、AST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:12.1.4. 用户(CORE_USER)字段字段名称类型说明USER_ID用户IDNUMBER(16)用户的唯一标识DEP_ID所属部门IDNUMBER(16)关联到CORE_DEPARTMENTCOMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYEMP_ID所属员工IDNUMBER(16)关联到CORE_EMPLOYEEMAIN_ROLE_CODE主要角色编码VARCHAR2(30)该用户的主要角色(权限角色)LOGIN_ID登录账号VARCHAR2(50)该用户登录到系

10、统的账号USER_NAME用户姓名VARCHAR2(50)可以与员工姓名一致SORT_ID排序号NUMBER(16)可空STATE是否有效NUMBER(1)固定值:12.1.5. 角色(CORE_ROLE)字段字段名称类型说明ROLE_CODE角色编码VARCHAR2(30)角色的唯一标识ROLE_NAME角色名称VARCHAR2(50)COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANY。空表示全部公司可使用的角色。ROLE_TYPE角色类型CAHR(1)0:权限角色;1:流程角色;2:权限流程角色。默认为:2。SORT_ID排序号NUMBER(16)可空PAR

11、ENT_CODE父角色编码VARCHAR2(30)可空IS_LEAF是否末级CAHR(1)1:是,0:否IS_INNER是否内置CAHR(1)1:是,0:否。默认为:0。2.1.6. 用户流程角色表(CORE_USER_ROLES)字段字段名称类型说明ROLE_CODE角色编码VARCHAR2(30)角色的唯一标识USER_ID用户IDNUMBER(16)用户的唯一标识2.2. 建立流程数据表根据流程数据表.pdm建立各个流程数据表。各数据表说明如下:1) CORE_WF_CONFIG:流程配置表。用于保存设计工具设计出来的流程图。2) CORE_WF_INSTANCE:流程实例表。用于保存系

12、统中发起的流程实例。3) CORE_WF_INSTANCE_VARIABLE:流程实例变量表。用于保存每个流程实例的变量。4) CORE_WF_WORKITEM:流程工作项表。用于保存用户发起一个流程或审批完一个待办后,产生出的待办工作项。5) CORE_WF_WORKITEM_RELATION:工作项的转移关系表。用于保存每个工作项的来源工作项。6) CORE_WF_REASSIGN_RELATION:流程委托关系表。用于保存用户委托其他用户处理自己的流程待办。7) CORE_SYSTEM_BIG_DATA:系统专用大数据表。用于保存流程图的XML源代码。8) 序列:SEQ_COMMON_B

13、ASE,长度为16。用于设置CORE_WF_INSTANCE、CORE_SYSTEM_BIG_DATA等表的主键值。如果数据库不支持序列,则要创建平台的序列表(CORE_SEQUENCE):字段字段名称类型说明SEQ序列名VARCHAR2(30)序列唯一标识,流程引擎使用:SEQ_COMMON_BASEMAX_ID当前值NUMBER(16)初始值为:12.3. 安装流程设计工具2.3.1. 安装JDK流程设计工具需要JDK1.6或以上版本才能运行。安装完之后要指定JAVA_HOME,确认当前使用的JDK是1.6版本。2.3.2. 安装流程设计工具1),将“流程设计工具”目录拷贝到一个无空格的路

14、径中,。2),运行“imp_run32.bat”(32位操作系统使用)或“imp_run64.bat”(64位操作系统使用)。点击主界面上的“设置”按钮,设置数据库连接(流程数据表所在的数据库),如下图所示:点击“确认”即完成了流程设计工具的设置。2.4. 将流程编程接口加入到项目代码中将“流程编程接口”目录下的文件拷贝到项目中即可。文件目录已经是安装web工程的要求建立,如有特殊目录要求请自行修改。流程编程接口需要JDK1.5或以上版本才能运行。3. 开发指南3.1. 流程设计工具使用运行流程设计工具“imp_run32.bat”或“imp_run64.bat”。点击菜单“流程-流程自定义”

15、即可进入流程设计界面。如下图所示:界面上部是工具条。左侧的上面一个列表是系统中已存在的流程图,下面一个列表是每个流程图的明细版本(每个流程图可以有多个版本,每个版本的流程代码都相同)。界面的右侧是流程图的设计区域。3.1.1. 新增流程点击界面工具条的“新增”按钮,弹出“新增流程”对话框:输入新流程代码(流程图的标识)和新流程名称,点击“确定”即可创建一个新流程图(新创建的流程版本为1,只有“开始”、“结束”2个节点)。在界面的流程列表中可以查询到刚创建的流程。3.1.2. 设计流程图选择左侧的流程图列表中的一个流程图,在下面的“版本明细”列表就会显示该流程图的所有版本。选择需要设计的一个版本

16、,在右侧的流程设计区域即可显示该版本的流程图。如图所示:流程设计区域的上部是流程图设计的工具条。左侧是流程图中的节点列表以及连接(节点之间的连接线)列表。操作说明:1) 点击工具条的“开始”按钮,再点击流程图指定地方,可以在指定地方增加一个“开始节点”。一个流程图只能有一个“开始节点”。2) 点击工具条的“中间”按钮,再点击流程图指定地方,可以在指定地方增加一个“中间节点”。连续点击流程图,可以连续增加“中间节点”。点击右键可以返回到“选择”状态。3) 点击工具条的“结束”按钮,再点击流程图指定地方,可以在指定地方增加一个“结束节点”。4) 点击工具条的“连接”按钮,再点击流程图指定的一个节点

17、,鼠标左键不放,将连线连接到另外一个节点,放开左键,即可在两个节点中增加一个连接线。连续的操作可以连续增加连接线。点击右键可以返回到“选择”状态。5) 点击工具条的“选择”按钮,可以使鼠标返回到“选择”状态(可以选择节点或连接线)。6) 选中流程图中的节点或连接线(可以使用鼠标选择一个区域中的节点或连接线),再点击工具条的“删除”按钮,可以删除选中的节点或连接线。7) 点击工具条的“刷新”按钮,可以刷新当前流程图(有时候由于画布没有重画,会导致流程图显示不全)。8) 点击工具条的“查看XML”按钮,弹出当前流程图的XML内容窗口:在XML源代码窗口中文本框显示的是当前流程图的XML内容。可以修

18、改XML或拷贝其他版本流程图的XML,然后点击“设置XML”按钮来改变当前流程图。设置的XML中的流程代码值必须与当前流程图的代码值一致,并且版本不能低于当前流程图的版本。3.1.2.1. 流程属性设置在流程图的空白地方双击或者点击工具条的“属性”按钮,弹出当前流程图的属性设置窗口:A. 流程属性说明l 流程编码:即当前流程图的代码,不可修改。l 版本号:即当前流程图的版本号,不可修改。每次保存版本号自动递增(也可以使用覆盖保存,不增加版本号)。l 流程名称:当前流程的名称,每个版本的流程图名称可以不一样。l 有效天数:流程引擎只记录该属性,尚未未使用。l 待办URL:显示一个流程待办工作项时

19、,使用的页面URL。l 待办查询URL:查询该流程的待办工作项时,使用的页面URL。l 已办URL:显示一个流程已办流程实例时,使用的页面URL。l 已办查询URL:查询该流程的已办流程实例时,使用的页面URL。l 我的申请查询URL:查询该流程的“我的申请”流程实例(登录人发起的流程实例)时,使用的页面URL。l 已办界面数据权限:可以是:none-不控制权限,login-使用当前登录用户的权限,starter-使用发起人的权限。该属性只在EMOSS2平台使用。l 流程结束方式:可以设置有几个人(或者百分之几的人)审批通过达到结束节点时,流程算是正式结束,剩下未审批的工作项不再需要审批。l

20、说明:记录流程图的说明信息。B. 流程变量定义在“流程变量”选项卡,可以定义流程变量(流程发起的时候可以设置流程变量的值,供业务操作或流程图使用)。流程变量定义如下图:可以在列表中直接修改已有的变量。点击“增加”按钮,可以在变量列表中增加一个流程变量。选择列表中的某个流程变量,再点击“删除”按钮,可以删除该变量。注:datetime类型的变量暂不支持。C. 流程数据属性在“流程数据”选项卡,可以定义流程的数据相关属性。如下图所示:1) 流程主题SQL:是发起流程或审批待办工作项时流程引擎调用的SQL,用来更新流程实例表的主题字段(CORE_WF_INSTANCE.SUBJECT)。2) 流程金

21、额SQL:是发起流程或审批待办工作项时流程引擎调用的SQL,用来更新流程实例表的金额字段(CORE_WF_INSTANCE.MONEY)。3) 流程数据表:是EMOSS2平台使用的。在JAVA代码中使用DDProxy类增删改查数据时,会自动设置PROCESS_ID(流程实例ID)和AUDIT_STATUS(审批状态)字段。D. 高级属性在“高级”选项卡,可以设置流程的一些高级属性。如下图所示:1) 流程结束/否决时发送消息的设置:可以在流程结束或被否决时向流程相关的用户发送消息(通知某个流程已经结束/被否决)。该设置在EMOSS2平台才使用。2) 常用审批意见:可以设置审批该流程时使用的常用审

22、批意见有哪些。该设置在EMOSS2平台才使用。3) 流程业务组件:用来设置一个JAVA类,重写父类(com.zbiti.core.config.wf.WorkFlowComponent)的某些方法,可以将流程的状态变化与业务操作的联系起来。如:审批通过后要做某些业务处理,可以重写父类的afterApprove方法实现。流程结束后要做某些业务处理,可以重写父类的instanceEnded方法实现.等。具体的父类说明可以参见“JAVA_DOCS”目录下的javaDoc。3.1.2.2. 流程节点属性设置双击流程图中的节点或选择节点列表中的某个节点,点击工具条的“属性”按钮,弹出选中节点的属性设置窗

23、口:A. 属性说明l 节点ID:节点在当前流程图中的唯一标识,创建节点时会自动生成。l 节点名称:该节点的显示名称。l X坐标:流程节点在流程图的X坐标值。l Y坐标:流程节点在流程图的Y坐标值。l 长度:流程节点在流程图中显示的长度。l 宽度:流程节点在流程图中显示的宽度。l 有效天数:流程引擎只记录该属性,尚未未使用。l 待办URL:显示该节点的一个流程待办工作项时,使用的页面URL。如果未设置,则使用流程的“待办URL”属性。l 数据权限:可以是:none-不控制权限,login-使用当前登录用户的权限,starter-使用发起人的权限。该属性只在EMOSS2平台使用。l 审批方式:可以

24、设置有几个人(或者百分之几的人)审批通过(负数表示回退,如人数设置-1表示有一个人退回,百分比设置-33表示有33%的人退回)时,该节点算是审批通过(被退回),剩下未审批的工作项不再需要审批。l 可以取回:该节点的工作项审批通过后是否可以被取回。l 可以自动提交:该节点的工作项与前一节点的工作项属于同一个人的时候,如果前一节点的工作项被审批通过了,该节点的工作项是否可以自动设置为审批通过。l 审批后是否提示打印:该节点的工作项被审批通过后是否会提示打印流程。该属性只在EMOSS2平台使用。l 常用审批意见:可以设置审批该节点的工作项时使用的常用审批意见有哪些,审批时的常用审批意见也包含流程属性

25、的“常用审批意见”。该设置在EMOSS2平台才使用。l 说明:记录流程节点的说明信息。B. 按钮信息在“按钮信息”选项卡,可以定义该节点的审批界面有哪些审批按钮。如下图:“驳回”、“退回发起人”、“否决”、“废弃”按钮每个界面只能有一个,其中“废弃”按钮只能设置在“发起节点”。“批量审批使用的按钮”用于指定一个审批通过的按钮,当使用批量审批时,相当于点击该按钮。“批量驳回使用的按钮”用于指定一个驳回的按钮,当使用批量驳回时,相当于点击该按钮。点击“添加”按钮,弹出添加按钮对话框:在窗口上填写必要的信息:按钮ID、标题、显示顺序、是否可见后点击“确认”即可添加一个审批按钮。注:按钮ID在一个节点

26、中不能重复。双击按钮列表中的某个按钮或者点击“编辑”按钮,弹出该按钮的编辑窗口。与添加窗口一样。点击“删除”按钮,可以删除按钮列表中选中的按钮。C. 审批用户范围设置在“审批用户范围”选项卡,可以定义该节点的审批用户有哪些。如下图:l 待办人员选择方式:指提交给该节点时,选择人员是单选还是多选。“自动全选”是指选择全部指定范围的用户,“自动选择第一个”是指在指定范围的用户中选择第一个用户(用户是根据CORE_SUER的SORT_ID字段排序的)。l SQL说明: C(XXX)表示公司编码为XXX的公司,流程引擎会转换为SQL条件:C.COMPANY_CODE=XXX(C是CORE_COMPAN

27、Y的别名); D(XXX)表示部门编码为XXX的部门,流程引擎会转换为SQL条件:D.DEP_CODE=XXX (C是CORE_DEPARTMENT的别名); U(XXX)表示用户登录账号为XXX的用户,流程引擎会转换为SQL条件:U.LOGIN_ID=XXX(U为CORE_USER的别名); R(XXX)表示角色编码为XXX的角色,流程引擎会转换为SQL条件:UR.ROLE_CODE=XXX(UR为CORE_USER_ROLES的别名); starter:XXX或currentUser:XXX表示取发起人或当期用户的XXX属性的值。XXX可以是DepartmentCode、ParentDep

28、artmentCode、CompanyCode、ParentCompanyCode、MainRoleCode、loginId之一,也可以是company_YYY、department_YYY表示公司或部门的某个字段(YYY字段)的属性值。 XXX表示取流程变量XXX的值。SQL示例:C(starter:CompanyCode) AND D(starter:DepartmentCode) AND R(BMFZR)将转换为(设发起人公司编码为A1001,发起人部门编码为A1001_01):C.COMPANY_CODE=A1001 AND D.DEP_CODE=A1001_01 AND UR.ROL

29、E_CODE=BMFZR点击“公司”按钮将弹出公司编码的选择窗口,如下图所示:点击“部门”按钮将弹出部门编码的选择窗口,如下图所示:点击“用户”按钮将弹出用户账号的选择窗口,如下图所示:点击“角色”按钮将弹出角色编码的选择窗口,如下图所示:点击弹出窗口的“确定”按钮,即可以在SQL文本框中光标位置插入相应的SQL。D. 转办用户范围设置在“转办用户范围”选项卡,可以定义该节点的工作项可以转交给哪些用户处理。如下图:SQL的设置参照“审批用户范围设置”。E. 传阅用户范围设置在“传阅用户范围”选项卡,可以定义该节点的工作项可以传阅给哪些用户查看。如下图:SQL的设置参照“审批用户范围设置”。3.

30、1.2.3. 连接属性设置双击流程图中的连接或选择连接列表中的某个连接,点击工具条的“属性”按钮,弹出选中连接的属性设置窗口:设置该连接的“转移条件”,即满足这个条件时,流程会从该连接的“源节点”提交到“目标节点”。点击“添加”参数,弹出“流程参数”选择窗口:可以选择流程中定义的流程变量作为参数,也可以选择发起人当前提交人的某个属性作为参数,也可以使用当前审批界面的按钮(源节点定义的按钮,批量审批或批量退回时的按钮使用节点“按钮信息”的“批量审批时使用的按钮”或“批量驳回时使用的按钮”)作为参数。XXX表示一个string型的参数,n:XXX表示一个number型的参数,b:XXX表示一个bo

31、ol型的参数。3.1.3. 保存流程图l 点击工具条上的“保存”按钮可以保存当前流程图,并且自动将当前流程图的版本递增(所有同一编码的流程版本最大值加1),即会生成一个新版本的流程图(如果当前流程版本没有被使用则把当前流程图删除)。l 点击工具条上的“覆盖保存”按钮可以保存当前流程图,并且流程版本不变。l 流程图保存到CORE_WF_CONFIG表中,实际的XML代码保存在CORE_SYSTEM_BIG_DATA表中,通过CORE_WF_CONFIG的DATA_ID与CORE_SYSTEM_BIG_DATA的DATA_ID关联。3.1.4. 设置流程图双击流程版本明细列表中的某个版本或点击工具

32、条上的“设置”按钮,弹出流程设置窗口:在窗口上可以设置该版本启用时间(有效开始时间)、所属公司(如果是父子公司,可以只设置父公司,子公司将使用父公司的流程图)和状态。要发起某个编码XXX的流程时,流程引擎检查当前CORE_WF_CONFIG的WF_CODE=XXX并且未停用的所有版本,按照有效开始时间倒序,取得当前登录人所在公司能使用(流程图的所属公司为本公司或上级公司或为空的)的最新(有效开始时间小于当前时间)流程图版本,使用该版本发起流程。3.1.5. 删除流程图选择流程版本明细中的某个流程版本,点击工具条的“删除”按钮,即可删除该流程版本。3.1.6. 导出流程图选择流程列表中的某几个流

33、程图或流程版本明细列表中的某几个版本,点击工具条的“导出”按钮,即可将选中的流程图或版本导出成zip文件。3.1.7. 导入流程图点击工具条的“导入”按钮,选择导出流程的zip文件,即可将文件中的所有流程导入到当前数据库。注:导入的流程启用时间(有效开始时间)为当前时间。3.2. 流程编程接口使用要使用流程编程接口,必须将“流程编程接口”目录下的代码加入到项目代码中,文件的目录结构可以根据实际需要修改。3.2.1. 流程引擎数据源初始化要使用流程引擎首先要初始化一个专用的数据源,该数据源为流程配置加载、组织架构信息获取、流程图片生成等功能使用。数据源的初始化示例代码如下:3.2.1.1. 不使

34、用连接池方式:.import com.zbiti.core.util.db.DataSource;import com.zbiti.core.util.db.DirectFactory;.DirectFactory f = new DirectFactory();Properties properties = new Properties();properties.setProperty(jdbc.driver, “oracle.jdbc.driver.OracleDriver”);properties.setProperty(jdbc.url,“jdbc:oracle:thin:192.16

35、8.1.1:1521:orcl”);properties.setProperty(jdbc.username, “test”);properties.setProperty(jdbc.password, “1”);f.init(properties, DataSource.CORE_DATASOURCE);DataSource.addDBConnectionFactory(DataSource.CORE_DATASOURCE, f);.3.2.1.2. 使用C3P0连接池方式.import com.zbiti.core.util.db.DataSource;import com.zbiti.c

36、ore.util.db.C3P0Factory;.C3P0Factory f = new C3P0Factory();Properties properties = new Properties();properties.setProperty(jdbc.driver, “oracle.jdbc.driver.OracleDriver”);properties.setProperty(jdbc.url,“jdbc:oracle:thin:192.168.1.1:1521:orcl”);properties.setProperty(jdbc.username, “test”);propertie

37、s.setProperty(jdbc.password, “1”);properties.setProperty(maxPoolSize, “10”);properties.setProperty(initPoolSize, “1”);properties.setProperty(waitTimeout, “10000”);properties.setProperty(maxIdleTime, “1000000”);f.init(properties, DataSource.CORE_DATASOURCE);DataSource.addDBConnectionFactory(DataSourc

38、e.CORE_DATASOURCE, f);.3.2.2. 流程配置的加载流程配置保存在CORE_WF_CONFIG表中,在系统启动时或流程图被修改后,必须重新加载流程配置。需要执行的代码如下:.com.zbiti.core.config.wf.WorkFlowConfigProvider.load();.3.2.3. 用户登录的改造(可选)流程引擎使用ponents.User保存登录用户信息,可以在用户登录的时候创建ponents.User实例保存在session中,这样不需要每次与流程引擎交互时都创建一次ponents.User。登录时执行的示例代码如下:import ponents.Us

39、er;import ponents.UserComponent;.User u = UserComponent.getUser(123456);/123456为CORE_USER的USER_IDu.setLogined(true);request.getSession().setAttribute(KEY_USER_BIND_SESSION,u);.3.2.4. 流程处理EMOSS2流程引擎提供了流程处理的封装源代码(WFInvoker.js,WFInvoker.jsp,WFSelectUsers.jsp,WFInvoker.java.),各项目可以根据自己的需要做一定的修改。流程处理的一次典

40、型过程如下:5:选择审批人或转办人(该步骤可能是自动完成)WFInvoker.js客户端(js、jsp)WFInvoker.java1:调用doXXX方法发起或审批流程SelectUsers.jsp或SelectUsers2.jsp8:返回JSON格式的正式处理结果6:AJAX提交(已选择审批人或转别人)2:AJAX提交4:返回JSON格式的预处理结果WFInvoker.jsp7:正式处理:保存流程变量、发起流程、生成新待办.3:预处理:计算流程变量、下一结点及审批参与人.流程业务组件XXX.java以下给出了发起和审批通过的示例代码:3.2.4.1. 点击发起流程按钮:./发起test1流程

41、var datas = zbiti.WFInvoker.doStart(“test1”,”form1”);if(datas) alert(“发起成功,流程ID为:”+datas.instanceId);3.2.4.2. 点击审批通过按钮:./审批通过工作项ID为111var datas = zbiti.WFInvoker.doApprove(“111”,”form1”);if(datas) alert(“审批成功!”);3.2.4.3. 服务端实现业务处理./*test1流程的业务组件*/public class Test1WFComponent extends WorkFlowCompone

42、nt public Test1WFComponent(DBConnection dbc, ParameterObject po,WorkFlowObject wfo, String instanceId, String workItemId,String nodeId) super(dbc, po, wfo, instanceId, workItemId, nodeId);/* * 计算流程的变量 */public Map calcWorkFlowVariables(boolean isPreprocess)throws Exception Map map = new HashMap();ma

43、p.put(item1,po.getParameterValue(txtAAA);map.put(item2,aaa);return map;/* * 流程发起 */public void afterStart(List newWorkItems) throws Exception super.afterStart(newWorkItems);/TODO something./* * 流程被否决 */public void instanceTerminated() throws Exception super.instanceTerminated();/TODO something./* *

44、流程审批结束 */public void instanceEnded() throws Exception super.instanceEnded();/TODO something./* * 审批通过后 */public void afterApprove(List newWorkItems) throws Exceptionsuper.afterApprove(newWorkItems);if(CWSH.equals(this.currentNodeId)/TODO something.3.2.5. 常用JAVA类说明3.2.5.1. com.zbiti.core.config.wf.Wo

45、rkFlowComponent该类是流程业务组件的父类,所有的流程业务组件必须继承该类,重写该类的方法,实现流程状态变动与业务操作的联动。3.2.5.2. com.zbiti.core.config.wf.WorkFlowConfigProvider流程配置提供类。可以加载CORE_WF_CONFIG中所有的流程图,并且提供获取指定流程图信息的方法。3.2.5.3. com.zbiti.core.config.wf.WorkFlowObject流程定义信息类。该类保存流程图中的全部信息,可以通过其中的方法取得流程图的节点、按钮、连接、流程变量等信息。3.2.5.4. com.zbiti.cor

46、e.config.wf.WFImage流程图生成类。该类可以生成某一个流程实例的流程图。3.2.5.5. com.zbiti.core.vo.ParameterObject输入参数类。该类用来保存request中的参数以及当前的登录用户。3.2.5.6. com.zbiti.core.config.wf.WorkFlowProxy流程操作类。该类是流程引擎操作流程的核心类,提供发起、审批、驳回、转办、否决、恢复流程等操作方法。调用该类的方法前,需要输入参数来创建该类(参数区分大小写):参数含义说明_WF_isStart是否发起流程的操作true/false。默认为false_WF_isPrep

47、rocess是否预处理true/false。默认为falseisMobile是否移动客户端提交的流程Y/N。默认为N_WF_CODE要操作的流程编码CORE_WF_CONFIG表的WF_CODE。如果是发起流程该参数必填,其他情况可空。_WF_WORKITEM_ID要操作的工作项IDCORE_WF_WORKITEM表的WORKITEM_ID。如果不是对工作项进行操作该参数可空。_WF_INSTANCE_ID要操作的流程实例IDCORE_WF_INSTANCE表的INSTANCE_ID。如果不是对流程实例进行操作该参数可空(有_WF_WORKITEM_ID参数,该参数也可空)_WF_NODE当前

48、的流程节点ID如果是发起流程或有_WF_WORKITEM_ID参数,该参数可空。_WF_selectedUsers已选择的下一节点审批人如果是预处理或者不需要选择审批人(转办人),该参数可空_WF_autoApproveNodes已跳过的节点如果是预处理或者没有可跳过的节点,该参数可空_WF_comment审批意见可空该类的静态变量:1, SQL_GET_PARTICIPANTS_BY_CONDITION:根据条件查询审批人员的SQL(SQL中必须有p:condition参数)。SQL中使用的表固定别名:C代表CORE_COMPANY,D代表CORE_DEPARTMENT,U代表CORE_US

49、ER,UR代表CORE_USER_ROLES,这些别名不可修改。可以通过修改该变量值,达到使用自定义的SQL来查询审批人员的目的。查询结果必须包含USER_ID字段。2, SQL_GET_PARTICIPANTS_BY_USER_ID:根据USER_ID查询审批人员的SQL(SQL中必须有n:USER_ID参数)。SQL中使用的表固定别名:C代表CORE_COMPANY,D代表CORE_DEPARTMENT,U代表CORE_USER,这些别名不可修改。可以通过修改该变量值,达到使用自定义的SQL来查询审批人员的目的。查询结果必须包含USER_ID字段。3.2.5.7. ponents.User

50、Component用户组件类。该类通过查询组织架构视图取得指定用户的信息。3.2.5.8. com.zbiti.core.ResourcePool资源池。该类保存当前环境的信息(当前用户、当前数据库连接、线程信息等)。调用流程引擎前必须设置当前的用户以及操作的按钮ID,如:.ThreadObject to = ResourcePool.getCurrentThreadObject();to.setButtonId(po.getParameterValue(_current_button_id);ResourcePool.setCurrentUser(po.getUser();.3.2.5.9.

51、 com.zbiti.core.consts.Tables平台数据表名。该类定义平台使用到的全部数据表的名称。当项目用的表和平台用的表有冲突时,可以修改平台用的表名,同时修改该类里面定义的表名,如:.Tables.CORE_COMPANY=”CORE_COMPANY2”;.3.2.5.10. com.zbiti.core.consts.Sequences平台序列名。该类定义平台使用到的全部序列的名称。当项目用的表和平台用的序列有冲突时,可以修改平台用的序列名,同时修改该类里面定义的序列名,如:.Sequences.SEQ_COMMON_BASE=”SEQ_COMMON_BASE2”;.4. 附件本文档包含以下附件:1,流程数据表.pdm2,“流程设计工具”目录3,“流程编程接口”目录4,“JAVA_DOCS”目录

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!