1、流程引擎开发指南模板492020年4月19日资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。EMOSS2流程引擎开发指南 中博信息技术研究院有限公司版本历史版本号更改描述更改日期修订人是否基线版本(Y/N)评审记录#评审经过日期V1.0建立文档 -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.角色(
2、 CORE_ROLE) 72.1.6.用户流程角色表( CORE_USER_ROLES) 82.2.建立流程数据表82.3.安装流程设计工具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.连接属性设
3、置233.1.3.保存流程图253.1.4.设置流程图253.1.5.删除流程图253.1.6.导出流程图253.1.7.导入流程图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
4、.core.config.wf.WorkFlowConfigP.zbiti.core.config.wf.WorkFlowO.zbiti.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开发平台的一部分, 主要完成流程发起,
5、审批, 监控等功能, 是较轻量级的流程引擎, 但完全能够满足企业的业务流程需求。流程引擎当前支持的数据库有: oracle、 mysql、 sybase。主要的组成部分有: 1, 组织架构视图: 流程引擎需要基于组织架构才能实现审批人的选择、 工作项的生成、 流转条件的判断等。2, 流程数据表: 用于保存流程图、 流程实例、 工作项等流程相关的数据。3, 流程设计工具: 用于设计流程图, 分配不同的版本给不同的公司。JDK要求必须是1.6及以上。4, 流程编程接口: 提供流程的发起、 审批、 参与者计算等接口给外部程序调用。主要是jar包形式, JDK的版本必须是1.5及以上。 1.2. 流程
6、引擎架构外部Jsp、 java程序组织架构视图流程设计工具流程编程接口流程数据表:流程图流程数据表:流程实例、 工作项.2. 开发前准备2.1. 建立组织架构视图根据字段列表建立各个视图。字段列表只列出必要字段, 也能够根据需要扩展其它字段。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
7、(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值: 1STATE是否有效NUMBER(1)固定值: 12.1.2. 部门( CORE_DEPARTMENT) 字段字段名称类型说明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
8、_NAME部门名称VARCHAR2(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值: 1STATE是否有效NUMBER(1)固定值: 12.1.3. 员工( CORE_EMPLOYEE) 字段字段名称类型说明EMP_ID员工IDNUMBER(16)员工的唯一标识EMP_CID员工变更序号NUMBER(16)固定值: 1DEP_ID所属部门IDNUMBER(16)关联到CORE_DEPARTMENTDEP_CID所属部门变更序号NUMBER(16)固定值: 1COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANY
9、COMPANY_CID所属公司变更序号NUMBER(16)固定值: 1EMP_CODE员工编码VARCHAR2(50)EMP_NAME姓名VARCHAR2(50)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录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_
10、ID所属员工IDNUMBER(16)关联到CORE_EMPLOYEEMAIN_ROLE_CODE主要角色编码VARCHAR2(30)该用户的主要角色( 权限角色) LOGIN_ID登录账号VARCHAR2(50)该用户登录到系统的账号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所属公司
11、IDNUMBER(16)关联到CORE_COMPANY。空表示全部公司可使用的角色。ROLE_TYPE角色类型CAHR(1)0: 权限角色; 1: 流程角色; 2: 权限流程角色。默认为: 2。SORT_ID排序号NUMBER(16)可空PARENT_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用户ID
12、NUMBER(16)用户的唯一标识2.2. 建立流程数据表根据流程数据表.pdm建立各个流程数据表。各数据表说明如下: 1) CORE_WF_CONFIG: 流程配置表。用于保存设计工具设计出来的流程图。2) CORE_WF_INSTANCE: 流程实例表。用于保存系统中发起的流程实例。3) CORE_WF_INSTANCE_VARIABLE: 流程实例变量表。用于保存每个流程实例的变量。4) CORE_WF_WORKITEM: 流程工作项表。用于保存用户发起一个流程或审批完一个待办后,产生出的待办工作项。5) CORE_WF_WORKITEM_RELATION: 工作项的转移关系表。用于保存
13、每个工作项的来源工作项。6) CORE_WF_REASSIGN_RELATION: 流程委托关系表。用于保存用户委托其它用户处理自己的流程待办。7) CORE_SYSTEM_BIG_DATA: 系统专用大数据表。用于保存流程图的XML源代码。8) 序列: SEQ_COMMON_BASE, 长度为16。用于设置CORE_WF_INSTANCE、 CORE_SYSTEM_BIG_DATA等表的主键值。如果数据库不支持序列, 则要创立平台的序列表(CORE_SEQUENCE): 字段字段名称类型说明SEQ序列名VARCHAR2(30)序列唯一标识, 流程引擎使用: SEQ_COMMON_BASEMA
14、X_ID当前值NUMBER(16)初始值为: 12.3. 安装流程设计工具2.3.1. 安装JDK流程设计工具需要JDK1.6或以上版本才能运行。安装完之后要指定JAVA_HOME, 确认当前使用的JDK是1.6版本。2.3.2. 安装流程设计工具1) , 将”流程设计工具”目录拷贝到一个无空格的路径中, 。2) , 运行”imp_run32.bat”( 32位操作系统使用) 或”imp_run64.bat”( 64位操作系统使用) 。点击主界面上的”设置”按钮, 设置数据库连接( 流程数据表所在的数据库) , 如下图所示: 点击”确认”即完成了流程设计工具的设置。2.4. 将流程编程接口加入
15、到项目代码中将”流程编程接口”目录下的文件拷贝到项目中即可。文件目录已经是安装web工程的要求建立, 如有特殊目录要求请自行修改。流程编程接口需要JDK1.5或以上版本才能运行。3. 开发指南3.1. 流程设计工具使用运行流程设计工具”imp_run32.bat”或”imp_run64.bat”。点击菜单”流程-流程自定义”即可进入流程设计界面。如下图所示: 界面上部是工具条。左侧的上面一个列表是系统中已存在的流程图, 下面一个列表是每个流程图的明细版本( 每个流程图能够有多个版本, 每个版本的流程代码都相同) 。界面的右侧是流程图的设计区域。3.1.1. 新增流程点击界面工具条的”新增”按钮
16、, 弹出”新增流程”对话框: 输入新流程代码( 流程图的标识) 和新流程名称, 点击”确定”即可创立一个新流程图( 新创立的流程版本为1, 只有”开始”、 ”结束”2个节点) 。在界面的流程列表中能够查询到刚创立的流程。3.1.2. 设计流程图选择左侧的流程图列表中的一个流程图, 在下面的”版本明细”列表就会显示该流程图的所有版本。选择需要设计的一个版本, 在右侧的流程设计区域即可显示该版本的流程图。如图所示: 流程设计区域的上部是流程图设计的工具条。左侧是流程图中的节点列表以及连接( 节点之间的连接线) 列表。操作说明: 1) 点击工具条的”开始”按钮, 再点击流程图指定地方, 能够在指定地
17、方增加一个”开始节点”。一个流程图只能有一个”开始节点”。2) 点击工具条的”中间”按钮, 再点击流程图指定地方, 能够在指定地方增加一个”中间节点”。连续点击流程图, 能够连续增加”中间节点”。点击右键能够返回到”选择”状态。3) 点击工具条的”结束”按钮, 再点击流程图指定地方, 能够在指定地方增加一个”结束节点”。4) 点击工具条的”连接”按钮, 再点击流程图指定的一个节点, 鼠标左键不放, 将连线连接到另外一个节点, 放开左键, 即可在两个节点中增加一个连接线。连续的操作能够连续增加连接线。点击右键能够返回到”选择”状态。5) 点击工具条的”选择”按钮, 能够使鼠标返回到”选择”状态(
18、 能够选择节点或连接线) 。6) 选中流程图中的节点或连接线( 能够使用鼠标选择一个区域中的节点或连接线) , 再点击工具条的”删除”按钮, 能够删除选中的节点或连接线。7) 点击工具条的”刷新”按钮, 能够刷新当前流程图( 有时候由于画布没有重画, 会导致流程图显示不全) 。8) 点击工具条的”查看XML”按钮, 弹出当前流程图的XML内容窗口: 在XML源代码窗口中文本框显示的是当前流程图的XML内容。能够修改XML或拷贝其它版本流程图的XML, 然后点击”设置XML”按钮来改变当前流程图。设置的XML中的流程代码值必须与当前流程图的代码值一致, 而且版本不能低于当前流程图的版本。3.1.
19、2.1. 流程属性设置在流程图的空白地方双击或者点击工具条的”属性”按钮, 弹出当前流程图的属性设置窗口: A. 流程属性说明l 流程编码: 即当前流程图的代码, 不可修改。l 版本号: 即当前流程图的版本号, 不可修改。每次保存版本号自动递增( 也能够使用覆盖保存, 不增加版本号) 。l 流程名称: 当前流程的名称, 每个版本的流程图名称能够不一样。l 有效天数: 流程引擎只记录该属性, 尚未未使用。l 待办URL: 显示一个流程待办工作项时, 使用的页面URL。l 待办查询URL: 查询该流程的待办工作项时, 使用的页面URL。l 已办URL: 显示一个流程已办流程实例时, 使用的页面UR
20、L。l 已办查询URL: 查询该流程的已办流程实例时, 使用的页面URL。l 我的申请查询URL: 查询该流程的”我的申请”流程实例( 登录人发起的流程实例) 时, 使用的页面URL。l 已办界面数据权限: 能够是: none-不控制权限, login-使用当前登录用户的权限, starter-使用发起人的权限。该属性只在EMOSS2平台使用。l 流程结束方式: 能够设置有几个人( 或者百分之几的人) 审批经过达到结束节点时, 流程算是正式结束, 剩下未审批的工作项不再需要审批。l 说明: 记录流程图的说明信息。B. 流程变量定义在”流程变量”选项卡, 能够定义流程变量( 流程发起的时候能够设
21、置流程变量的值, 供业务操作或流程图使用) 。流程变量定义如下图: 能够在列表中直接修改已有的变量。点击”增加”按钮, 能够在变量列表中增加一个流程变量。选择列表中的某个流程变量, 再点击”删除”按钮, 能够删除该变量。注: datetime类型的变量暂不支持。C. 流程数据属性在”流程数据”选项卡, 能够定义流程的数据相关属性。如下图所示: 1) 流程主题SQL: 是发起流程或审批待办工作项时流程引擎调用的SQL, 用来更新流程实例表的主题字段( CORE_WF_INSTANCE.SUBJECT) 。2) 流程金额SQL: 是发起流程或审批待办工作项时流程引擎调用的SQL, 用来更新流程实例
22、表的金额字段( CORE_WF_INSTANCE.MONEY) 。3) 流程数据表: 是EMOSS2平台使用的。在JAVA代码中使用DDProxy类增删改查数据时, 会自动设置PROCESS_ID( 流程实例ID) 和AUDIT_STATUS( 审批状态) 字段。D. 高级属性在”高级”选项卡, 能够设置流程的一些高级属性。如下图所示: 1) 流程结束/否决时发送消息的设置: 能够在流程结束或被否决时向流程相关的用户发送消息( 通知某个流程已经结束/被否决) 。该设置在EMOSS2平台才使用。2) 常见审批意见: 能够设置审批该流程时使用的常见审批意见有哪些。该设置在EMOSS2平台才使用。3
23、) 流程业务组件: 用来设置一个JAVA类, 重写父类( com.zbiti.core.config.wf.WorkFlowComponent) 的某些方法, 能够将流程的状态变化与业务操作的联系起来。如: 审批经过后要做某些业务处理, 能够重写父类的afterApprove方法实现。流程结束后要做某些业务处理, 能够重写父类的instanceEnded方法实现.等。具体的父类说明能够参见”JAVA_DOCS”目录下的javaDoc。3.1.2.2. 流程节点属性设置双击流程图中的节点或选择节点列表中的某个节点, 点击工具条的”属性”按钮, 弹出选中节点的属性设置窗口: A. 属性说明l 节点
24、ID: 节点在当前流程图中的唯一标识, 创立节点时会自动生成。l 节点名称: 该节点的显示名称。l X坐标: 流程节点在流程图的X坐标值。l Y坐标: 流程节点在流程图的Y坐标值。l 长度: 流程节点在流程图中显示的长度。l 宽度: 流程节点在流程图中显示的宽度。l 有效天数: 流程引擎只记录该属性, 尚未未使用。l 待办URL: 显示该节点的一个流程待办工作项时, 使用的页面URL。如果未设置, 则使用流程的”待办URL”属性。l 数据权限: 能够是: none-不控制权限, login-使用当前登录用户的权限, starter-使用发起人的权限。该属性只在EMOSS2平台使用。l 审批方式
25、: 能够设置有几个人( 或者百分之几的人) 审批经过( 负数表示回退, 如人数设置-1表示有一个人退回, 百分比设置-33表示有33%的人退回) 时, 该节点算是审批经过( 被退回) , 剩下未审批的工作项不再需要审批。l 能够取回: 该节点的工作项审批经过后是否能够被取回。l 能够自动提交: 该节点的工作项与前一节点的工作项属于同一个人的时候, 如果前一节点的工作项被审批经过了, 该节点的工作项是否能够自动设置为审批经过。l 审批后是否提示打印: 该节点的工作项被审批经过后是否会提示打印流程。该属性只在EMOSS2平台使用。l 常见审批意见: 能够设置审批该节点的工作项时使用的常见审批意见有
26、哪些, 审批时的常见审批意见也包含流程属性的”常见审批意见”。该设置在EMOSS2平台才使用。l 说明: 记录流程节点的说明信息。B. 按钮信息在”按钮信息”选项卡, 能够定义该节点的审批界面有哪些审批按钮。如下图: ”驳回”、 ”退回发起人”、 ”否决”、 ”废弃”按钮每个界面只能有一个, 其中”废弃”按钮只能设置在”发起节点”。”批量审批使用的按钮”用于指定一个审批经过的按钮, 当使用批量审批时, 相当于点击该按钮。”批量驳回使用的按钮”用于指定一个驳回的按钮, 当使用批量驳回时, 相当于点击该按钮。点击”添加”按钮, 弹出添加按钮对话框: 在窗口上填写必要的信息: 按钮ID、 标题、 显
27、示顺序、 是否可见后点击”确认”即可添加一个审批按钮。注: 按钮ID在一个节点中不能重复。双击按钮列表中的某个按钮或者点击”编辑”按钮, 弹出该按钮的编辑窗口。与添加窗口一样。点击”删除”按钮, 能够删除按钮列表中选中的按钮。C. 审批用户范围设置在”审批用户范围”选项卡, 能够定义该节点的审批用户有哪些。如下图: l 待办人员选择方式: 指提交给该节点时, 选择人员是单选还是多选。”自动全选”是指选择全部指定范围的用户, ”自动选择第一个”是指在指定范围的用户中选择第一个用户( 用户是根据CORE_SUER的SORT_ID字段排序的) 。l SQL说明: C(XXX)表示公司编码为XXX的公
28、司, 流程引擎会转换为SQL条件: C.COMPANY_CODE=XXX( C是CORE_COMPANY的别名) ; 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或c
29、urrentUser:XXX表示取发起人或当期用户的XXX属性的值。XXX能够是DepartmentCode、 ParentDepartmentCode、 CompanyCode、 ParentCompanyCode、 MainRoleCode、 loginId之一, 也能够是company_YYY、 department_YYY表示公司或部门的某个字段( YYY字段) 的属性值。 XXX表示取流程变量XXX的值。SQL示例: C(starter:CompanyCode) AND D(starter:DepartmentCode) AND R(BMFZR)将转换为( 设发起人公司编码为A100
30、1, 发起人部门编码为A1001_01) : C.COMPANY_CODE=A1001 AND D.DEP_CODE=A1001_01 AND UR.ROLE_CODE=BMFZR点击”公司”按钮将弹出公司编码的选择窗口, 如下图所示: 点击”部门”按钮将弹出部门编码的选择窗口, 如下图所示: 点击”用户”按钮将弹出用户账号的选择窗口, 如下图所示: 点击”角色”按钮将弹出角色编码的选择窗口, 如下图所示: 点击弹出窗口的”确定”按钮, 即能够在SQL文本框中光标位置插入相应的SQL。D. 转办用户范围设置在”转办用户范围”选项卡, 能够定义该节点的工作项能够转交给哪些用户处理。如下图: SQ
31、L的设置参照”审批用户范围设置”。E. 传阅用户范围设置在”传阅用户范围”选项卡, 能够定义该节点的工作项能够传阅给哪些用户查看。如下图: SQL的设置参照”审批用户范围设置”。3.1.2.3. 连接属性设置双击流程图中的连接或选择连接列表中的某个连接, 点击工具条的”属性”按钮, 弹出选中连接的属性设置窗口: 设置该连接的”转移条件”, 即满足这个条件时, 流程会从该连接的”源节点”提交到”目标节点”。点击”添加”参数, 弹出”流程参数”选择窗口: 能够选择流程中定义的流程变量作为参数, 也能够选择发起人当前提交人的某个属性作为参数, 也能够使用当前审批界面的按钮( 源节点定义的按钮, 批量
32、审批或批量退回时的按钮使用节点”按钮信息”的”批量审批时使用的按钮”或”批量驳回时使用的按钮”) 作为参数。XXX表示一个string型的参数, n:XXX表示一个number型的参数, b:XXX表示一个bool型的参数。3.1.3. 保存流程图l 点击工具条上的”保存”按钮能够保存当前流程图, 而且自动将当前流程图的版本递增( 所有同一编码的流程版本最大值加1) , 即会生成一个新版本的流程图( 如果当前流程版本没有被使用则把当前流程图删除) 。l 点击工具条上的”覆盖保存”按钮能够保存当前流程图, 而且流程版本不变。l 流程图保存到CORE_WF_CONFIG表中, 实际的XML代码保存
33、在CORE_SYSTEM_BIG_DATA表中, 经过CORE_WF_CONFIG的DATA_ID与CORE_SYSTEM_BIG_DATA的DATA_ID关联。3.1.4. 设置流程图双击流程版本明细列表中的某个版本或点击工具条上的”设置”按钮, 弹出流程设置窗口: 在窗口上能够设置该版本启用时间( 有效开始时间) 、 所属公司( 如果是父子公司, 能够只设置父公司, 子公司将使用父公司的流程图) 和状态。要发起某个编码XXX的流程时, 流程引擎检查当前CORE_WF_CONFIG的WF_CODE=XXX而且未停用的所有版本, 按照有效开始时间倒序, 取得当前登录人所在公司能使用( 流程图的
34、所属公司为本公司或上级公司或为空的) 的最新( 有效开始时间小于当前时间) 流程图版本, 使用该版本发起流程。3.1.5. 删除流程图选择流程版本明细中的某个流程版本, 点击工具条的”删除”按钮, 即可删除该流程版本。3.1.6. 导出流程图选择流程列表中的某几个流程图或流程版本明细列表中的某几个版本, 点击工具条的”导出”按钮, 即可将选中的流程图或版本导出成zip文件。3.1.7. 导入流程图点击工具条的”导入”按钮, 选择导出流程的zip文件, 即可将文件中的所有流程导入到当前数据库。注: 导入的流程启用时间( 有效开始时间) 为当前时间。3.2. 流程编程接口使用要使用流程编程接口,
35、必须将”流程编程接口”目录下的代码加入到项目代码中, 文件的目录结构能够根据实际需要修改。3.2.1. 流程引擎数据源初始化要使用流程引擎首先要初始化一个专用的数据源, 该数据源为流程配置加载、 组织架构信息获取、 流程图片生成等功能使用。数据源的初始化示例代码如下: 3.2.1.1. 不使用连接池方式: .import com.zbiti.core.util.db.DataSource;import com.zbiti.core.util.db.DirectFactory;.DirectFactory f = new DirectFactory();Properties properties
36、 = 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”);properties.setProperty(jdbc.password, ”1”);f.init(properties, DataSource.CORE_DATASOURCE)
37、;DataSource.addDBConnectionFactory(DataSource.CORE_DATASOURCE, f);.3.2.1.2. 使用C3P0连接池方式.import com.zbiti.core.util.db.DataSource;import com.zbiti.core.util.db.C3P0Factory;.C3P0Factory f = new C3P0Factory();Properties properties = new Properties();properties.setProperty(jdbc.driver, ”oracle.jdbc.driv
38、er.OracleDriver”);properties.setProperty(jdbc.url,”jdbc:oracle:thin:192.168.1.1:1521:orcl”);properties.setProperty(jdbc.username, ”test”);properties.setProperty(jdbc.password, ”1”);properties.setProperty(maxPoolSize, ”10”);properties.setProperty(initPoolSize, ”1”);properties.setProperty(waitTimeout,
39、 ”10000”);properties.setProperty(maxIdleTime, ”1000000”);f.init(properties, DataSource.CORE_DATASOURCE);DataSource.addDBConnectionFactory(DataSource.CORE_DATASOURCE, f);.3.2.2. 流程配置的加载流程配置保存在CORE_WF_CONFIG表中, 在系统启动时或流程图被修改后, 必须重新加载流程配置。需要执行的代码如下: .com.zbiti.core.config.wf.WorkFlowConfigProvider.load
40、();.3.2.3. 用户登录的改造( 可选) 流程引擎使用ponents.User保存登录用户信息, 能够在用户登录的时候创立ponents.User实例保存在session中, 这样不需要每次与流程引擎交互时都创立一次ponents.User。登录时执行的示例代码如下: import ponents.User;import ponents.UserComponent;.User u = UserComponent.getUser(123456);/123456为CORE_USER的USER_IDu.setLogined(true);request.getSession().setAttri
41、bute(KEY_USER_BIND_SESSION,u);.3.2.4. 流程处理EMOSS2流程引擎提供了流程处理的封装源代码( WFInvoker.js, WFInvoker.jsp, WFSelectUsers.jsp, WFInvoker.java.) , 各项目能够根据自己的需要做一定的修改。流程处理的一次典型过程如下: 5: 选择审批人或转办人( 该步骤可能是自动完成) WFInvoker.js客户端( js、 jsp) WFInvoker.java1: 调用doXXX方法发起或审批流程SelectUsers.jsp或SelectUsers2.jsp8: 返回JSON格式的正式处
42、理结果6: AJAX提交( 已选择审批人或转别人) 2: AJAX提交4: 返回JSON格式的预处理结果WFInvoker.jsp7: 正式处理: 保存流程变量、 发起流程、 生成新待办.3: 预处理: 计算流程变量、 下一结点及审批参与人.流程业务组件XXX.java以下给出了发起和审批经过的示例代码: 3.2.4.1. 点击发起流程按钮: ./发起test1流程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 WorkFlowComponent public Test1WFComponent(DBCo