




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EMOSS2EMOSS2 流程引擎开发指南流程引擎开发指南 中博信息技术研究院中博信息技术研究院版版本本历历史史版本号更改描述更改日期修订人是否基线版本(Y/N)评审记录#评审通过日期V1.0建立文档2012-7-30余志淼Y目目 录录1.1.概述概述 .5 51.1.流程引擎说明.51.2.流程引擎架构.52.2.开发前准备开发前准备.6 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_R
2、OLE).72.1.6.用户流程角色表(CORE_USER_ROLES).82.2.建立流程数据表 .82.3.安装流程设计工具 .82.3.1.安装JDK .82.3.2.安装流程设计工具 .92.4.将流程编程接口加入到项目代码中 .93.3.开发指南开发指南 .9 93.1.流程设计工具使用 .93.1.1.新增流程.103.1.2.设计流程图..流程属性设置.12A.流程属性说明.12B.流程变量定义.13C.流程数据属性.14D.高级属性..流程节点属性设置 .15A.属性说明.16B.按钮信息.17C.审批用户围设置 .18D.转办用户围设置 .
3、21E.传阅用户围设置 ..连接属性设置.233.1.3.保存流程图.253.1.4.设置流程图.253.1.5.删除流程图.253.1.6.导出流程图.253.1.7.导入流程图.263.2.流程编程接口使用 .263.2.1.流程引擎数据源初始化 .2.不使用连接池方式: .2.使用C3P0连接池方式 .263.2.2.流程配置的加载.273.2.3.用户登录的改造(可选).273.2.4.流程处理.2.点击发起流程按钮: .2.点击审批通过按钮: .2.服务端实现业务处理 .293.2.5.
4、常用JAVA类说明 .30.ZBITI.CORE.CONFIG.WF.WORKFLOWCOMPONENT.30.ZBITI.CORE.CONFIG.WF.WORKFLOWCONFIGPROVIDER.30.ZBITI.CORE.CONFIG.WF.WORKFLOWOBJECT.3.ZBITI.CORE.CONFIG.WF.WFIMAGE.3.ZBITI.CORE.VO.PARAMETEROBJECT.3.ZBITI.CORE.CONFIG.WF.WORKFLOWPROXY.3.ZBITI.
5、CORE.COMPONENTS.USERCOMPONENT.3.ZBITI.CORE.RESOURCEPOOL.3.ZBITI.CORE.CONSTS.TABLES.30.ZBITI.CORE.CONSTS.SEQUENCES.324.4.附件附件.32321.1.概述概述. 流程引擎说明流程引擎说明EMOSS2 流程引擎是 EMOSS2 开发平台的一部分,主要完成流程发起,审批,监控等功能,是较轻量级的流程引擎,但完全可以满足企业的业务流程需求。流程引擎目前支持的数据库有:oracle、mysql、sybase。主要的组成部分有:
6、1,组织架构视图:流程引擎需要基于组织架构才能实现审批人的选择、工作项的生成、流转条件的判断等。2,流程数据表:用于保存流程图、流程实例、工作项等流程相关的数据。3,流程设计工具:用于设计流程图,分配不同的版本给不同的公司。JDK要求必须是 1.6 及以上。4,流程编程接口:提供流程的发起、审批、参与者计算等接口给外部程序调用。主要是 jar 包形式,JDK 的版本必须是 1.5 及以上。 . 流程引擎架构流程引擎架构外部外部JspJsp、javajava程序程序组织架构视图组织架构视图流程编程接口流程编程接口流程设计工具流程设计工具流程数据表流程数据表: :流程图流程图流程数据
7、表流程数据表: :流程实流程实例、工作项例、工作项.2.2.开发前准备开发前准备. 建立组织架构视图建立组织架构视图根据字段列表建立各个视图。字段列表只列出必要字段,也可以根据需要扩展其他字段。.1.1. 公司(公司(CORE_COMPANYCORE_COMPANY)字段字段字段名称字段名称类型类型说明说明COMPANY_ID公司IDNUMBER(16)公司的唯一标识COMPANY_CID公司变更序号NUMBER(16)固定值:1COMPANY_CODE公司编码VARCHAR2(50)P_COMPANY_ID上级公司IDNUMBER(16)COMPANY_NAME公
8、司名称VARCHAR2(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:.1.2. 部门(部门(CORE_DEPARTMENTCORE_DEPARTMENT)字段字段字段名称字段名称类型类型说明说明DEP_ID部门IDNUMBER(16)部门的唯一标识DEP_CID部门变更序号NUMBER(16)固定值:1COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYCOMPANY_CID所属公司变更序号NUMBER(16)固定值:1DEP_CODE部门编码
9、VARCHAR2(50)P_DEP_ID上级部门IDNUMBER(16)DEP_NAME部门名称VARCHAR2(200)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:.1.3. 员工(员工(CORE_EMPLOYEECORE_EMPLOYEE)字段字段字段名称字段名称类型类型说明说明EMP_ID员工IDNUMBER(16)员工的唯一标识EMP_CID员工变更序号NUMBER(16)固定值:1DEP_ID所属部门IDNUMBER(16)关联到CORE_DEPARTMENTDEP_CI
10、D所属部门变更序号NUMBER(16)固定值:1COMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYCOMPANY_CID所属公司变更序号NUMBER(16)固定值:1EMP_CODE员工编码VARCHAR2(50)EMP_NAMEVARCHAR2(50)SORT_ID排序号NUMBER(16)可空IS_LAST是否最新记录NUMBER(1)固定值:1STATE是否有效NUMBER(1)固定值:.1.4. 用户(用户(CORE_USERCORE_USER)字段字段字段名称字段名称类型类型说明说明USER_ID用户IDNUMBER(16)用户的唯一标
11、识DEP_ID所属部门IDNUMBER(16)关联到CORE_DEPARTMENTCOMPANY_ID所属公司IDNUMBER(16)关联到CORE_COMPANYEMP_ID所属员工IDNUMBER(16)关联到CORE_EMPLOYEEMAIN_ROLE_CODE主要角色编码VARCHAR2(30)该用户的主要角色(权限角色)LOGIN_ID登录账号VARCHAR2(50)该用户登录到系统的账号USER_NAME用户VARCHAR2(50)可以与员工一致SORT_ID排序号NUMBER(16)可空STATE是否有效NUMBER(1)固定值:.1.5. 角色(角色(CORE_
12、ROLECORE_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)可空PARENT_CODE父角色编码VARCHAR2(30)可空IS_LEAF是否末级CAHR(1)1:是,0:否IS_INNER是否置CAHR(1)1:是,0:否。默
13、认为:0。.1.6. 用户流程角色表(用户流程角色表(CORE_USER_ROLESCORE_USER_ROLES)字段字段字段名称字段名称类型类型说明说明ROLE_CODE角色编码VARCHAR2(30)角色的唯一标识USER_ID用户IDNUMBER(16)用户的唯一标识. 建立流程数据表建立流程数据表根据流程数据表.pdm建立各个流程数据表。各数据表说明如下:1)CORE_WF_CONFIG:流程配置表。用于保存设计工具设计出来的流程图。2)CORE_WF_INSTANCE:流程实例表。用于保存系统中发起的流程实例。3)CORE_WF_INSTANCE_VAR
14、IABLE:流程实例变量表。用于保存每个流程实例的变量。4)CORE_WF_WORKITEM:流程工作项表。用于保存用户发起一个流程或审批完一个待办后,产生出的待办工作项。5)CORE_WF_WORKITEM_RELATION:工作项的转移关系表。用于保存每个工作项的来源工作项。6)CORE_WF_REASSIGN_RELATION:流程委托关系表。用于保存用户委托其他用户处理自己的流程待办。7)CORE_SYSTEM_BIG_DATA:系统专用大数据表。用于保存流程图的XML源代码。8)序列:SEQ_COMMON_BASE,长度为16。用于设置CORE_WF_INSTANCE、CORE_SY
15、STEM_BIG_DATA等表的主键值。如果数据库不支持序列,则要创建平台的序列表(CORE_SEQUENCE):字段字段字段名称字段名称类型类型说明说明SEQ序列名VARCHAR2(30)序列唯一标识,流程引擎使用:SEQ_COMMON_BASEMAX_ID当前值NUMBER(16)初始值为:. 安装流程设计工具安装流程设计工具.3.1. 安装安装 JDKJDK流程设计工具需要JDK1.6或以上版本才能运行。安装完之后要指定JAVA_HOME,确认当前使用的JDK是1.6版本。.3.2. 安装流程设计工具安装流程设计工具1) ,将“流程设计工具”目
16、录拷贝到一个无空格的路径中, 。2) ,运行“imp_run32.bat” (32位操作系统使用)或“imp_run64.bat” (64位操作系统使用) 。点击主界面上的“设置”按钮,设置数据库连接(流程数据表所在的数据库) ,如下图所示:点击“确认”即完成了流程设计工具的设置。. 将流程编程接口加入到项目代码中将流程编程接口加入到项目代码中将“流程编程接口”目录下的文件拷贝到项目中即可。文件目录已经是安装web工程的要求建立,如有特殊目录要求请自行修改。流程编程接口需要JDK1.5或以上版本才能运行。3.3.开发指南开发指南. 流程设计工具使用流程设计工具使用运
17、行流程设计工具“imp_run32.bat”或“imp_run64.bat” 。点击菜单“流程-流程自定义”即可进入流程设计界面。如下图所示:界面上部是工具条。左侧的上面一个列表是系统中已存在的流程图,下面一个列表是每个流程图的明细版本(每个流程图可以有多个版本,每个版本的流程代码都相同) 。界面的右侧是流程图的设计区域。.1.1. 新增流程新增流程点击界面工具条的“新增”按钮,弹出“新增流程”对话框:输入新流程代码(流程图的标识)和新流程名称,点击“确定”即可创建一个新流程图(新创建的流程版本为1,只有“开始” 、 “结束”2个节点) 。在界面的流程列表中可以查询到刚创建的流程
18、。.1.2. 设计流程图设计流程图选择左侧的流程图列表中的一个流程图,在下面的“版本明细”列表就会显示该流程图的所有版本。选择需要设计的一个版本,在右侧的流程设计区域即可显示该版本的流程图。如图所示:流程设计区域的上部是流程图设计的工具条。左侧是流程图中的节点列表以及连接(节点之间的连接线)列表。操作说明:1)点击工具条的“开始”按钮,再点击流程图指定地方,可以在指定地方增加一个“开始节点” 。一个流程图只能有一个“开始节点” 。2)点击工具条的“中间”按钮,再点击流程图指定地方,可以在指定地方增加一个“中间节点” 。连续点击流程图,可以连续增加“中间节点” 。点击右键可以返回到
19、“选择”状态。3)点击工具条的“结束”按钮,再点击流程图指定地方,可以在指定地方增加一个“结束节点” 。4)点击工具条的“连接”按钮,再点击流程图指定的一个节点,鼠标左键不放,将连线连接到另外一个节点,放开左键,即可在两个节点中增加一个连接线。连续的操作可以连续增加连接线。点击右键可以返回到“选择”状态。5)点击工具条的“选择”按钮,可以使鼠标返回到“选择”状态(可以选择节点或连接线) 。6)选中流程图中的节点或连接线(可以使用鼠标选择一个区域中的节点或连接线) ,再点击工具条的“删除”按钮,可以删除选中的节点或连接线。7)点击工具条的“刷新”按钮,可以刷新当前流程图(有时候由于画布没有重画,
20、会导致流程图显示不全) 。8)点击工具条的“查看XML”按钮,弹出当前流程图的XML容窗口:在XML源代码窗口中文本框显示的是当前流程图的XML容。可以修改XML或拷贝其他版本流程图的XML,然后点击“设置XML”按钮来改变当前流程图。设置的XML中的流程代码值必须与当前流程图的代码值一致,并且版本不能低于当前流程图的版本。..流程属性设置流程属性设置在流程图的空白地方双击或者点击工具条的“属性”按钮,弹出当前流程图的属性设置窗口:A.A.流程属性说明流程属性说明流程编码流程编码:即当前流程图的代码,不可修改。版本号版本号:即当前流程图的版本号,不可修改。每次保存版
21、本号自动递增(也可以使用覆盖保存,不增加版本号) 。流程名称流程名称:当前流程的名称,每个版本的流程图名称可以不一样。有效天数有效天数:流程引擎只记录该属性,尚未未使用。待办待办URLURL:显示一个流程待办工作项时,使用的页面URL。待办查询待办查询URLURL:查询该流程的待办工作项时,使用的页面URL。已办已办URLURL:显示一个流程已办流程实例时,使用的页面URL。已办查询已办查询URLURL:查询该流程的已办流程实例时,使用的页面URL。我的申请查询我的申请查询URLURL:查询该流程的“我的申请”流程实例(登录人发起的流程实例)时,使用的页面URL。已办界面数据权限已办界面数据权
22、限:可以是:none-不控制权限,login-使用当前登录用户的权限,starter-使用发起人的权限。该属性只在EMOSS2平台使用。流程结束方式流程结束方式:可以设置有几个人(或者百分之几的人)审批通过达到结束节点时,流程算是正式结束,剩下未审批的工作项不再需要审批。说明说明:记录流程图的说明信息。B.B.流程变量定义流程变量定义在“流程变量”选项卡,可以定义流程变量(流程发起的时候可以设置流程变量的值,供业务操作或流程图使用) 。流程变量定义如下图:可以在列表中直接修改已有的变量。点击“增加”按钮,可以在变量列表中增加一个流程变量。选择列表中的某个流程变量,再点击“删除”按钮,可以删除该
23、变量。注:datetime类型的变量暂不支持。C.C.流程数据属性流程数据属性在“流程数据”选项卡,可以定义流程的数据相关属性。如下图所示:1)流程主题SQL:是发起流程或审批待办工作项时流程引擎调用的SQL,用来更新流程实例表的主题字段(CORE_WF_INSTANCE.SUBJECT) 。2)流程金额SQL:是发起流程或审批待办工作项时流程引擎调用的SQL,用来更新流程实例表的金额字段(CORE_WF_INSTANCE.MONEY) 。3)流程数据表:是EMOSS2平台使用的。在JAVA代码中使用DDProxy类增删改查数据时,会自动设置PROCESS_ID(流程实例ID)和AUDIT_S
24、TATUS(审批状态)字段。D.D. 高级属性高级属性在“高级”选项卡,可以设置流程的一些高级属性。如下图所示:1)流程结束/否决时发送消息的设置:可以在流程结束或被否决时向流程相关的用户发送消息(通知某个流程已经结束/被否决) 。该设置在EMOSS2平台才使用。2)常用审批意见:可以设置审批该流程时使用的常用审批意见有哪些。该设置在EMOSS2平台才使用。3)流程业务组件:用来设置一个JAVA类,重写父类(.zbiti.core.config.wf.WorkFlowComponent)的某些方法,可以将流程的状态变化与业务操作的联系起来。如:审批通过后要做某些业务处理,可以重写父类的afte
25、rApprove方法实现。流程结束后要做某些业务处理,可以重写父类的instanceEnded方法实现.等。具体的父类说明可以参见“JAVA_DOCS”目录下的javaDoc。..流程节点属性设置流程节点属性设置双击流程图中的节点或选择节点列表中的某个节点,点击工具条的“属性”按钮,弹出选中节点的属性设置窗口:A.A.属性说明属性说明节点节点IDID:节点在当前流程图中的唯一标识,创建节点时会自动生成。节点名称节点名称:该节点的显示名称。X X坐标坐标:流程节点在流程图的X坐标值。Y Y坐标坐标:流程节点在流程图的Y坐标值。长度长度:流程节点在流程图中显示的长度。宽
26、度宽度:流程节点在流程图中显示的宽度。有效天数有效天数:流程引擎只记录该属性,尚未未使用。待办待办URLURL:显示该节点的一个流程待办工作项时,使用的页面URL。如果未设置,则使用流程的“待办URL”属性。数据权限数据权限:可以是:none-不控制权限,login-使用当前登录用户的权限,starter-使用发起人的权限。该属性只在EMOSS2平台使用。审批方式审批方式:可以设置有几个人(或者百分之几的人)审批通过(负数表示回退,如人数设置-1表示有一个人退回,百分比设置-33表示有33%的人退回)时,该节点算是审批通过(被退回) ,剩下未审批的工作项不再需要审批。可以取回可以取回:该节点的
27、工作项审批通过后是否可以被取回。可以自动提交可以自动提交:该节点的工作项与前一节点的工作项属于同一个人的时候,如果前一节点的工作项被审批通过了,该节点的工作项是否可以自动设置为审批通过。审批后是否提示打印审批后是否提示打印:该节点的工作项被审批通过后是否会提示打印流程。该属性只在EMOSS2平台使用。常用审批意见常用审批意见:可以设置审批该节点的工作项时使用的常用审批意见有哪些,审批时的常用审批意见也包含流程属性的“常用审批意见” 。该设置在EMOSS2平台才使用。说明:说明:记录流程节点的说明信息。B.B.按钮信息按钮信息在“按钮信息”选项卡,可以定义该节点的审批界面有哪些审批按钮。如下图:
28、“驳回” 、 “退回发起人” 、 “否决” 、 “废弃”按钮每个界面只能有一个,其中“废弃”按钮只能设置在“发起节点” 。“批量审批使用的按钮”用于指定一个审批通过的按钮,当使用批量审批时,相当于点击该按钮。“批量驳回使用的按钮”用于指定一个驳回的按钮,当使用批量驳回时,相当于点击该按钮。点击“添加”按钮,弹出添加按钮对话框:在窗口上填写必要的信息:按钮ID、标题、显示顺序、是否可见后点击“确认”即可添加一个审批按钮。注:按钮ID在一个节点中不能重复。双击按钮列表中的某个按钮或者点击“编辑”按钮,弹出该按钮的编辑窗口。与添加窗口一样。点击“删除”按钮,可以删除按钮列表中选中的按钮。C.C.审批
29、用户围设置审批用户围设置在“审批用户围”选项卡,可以定义该节点的审批用户有哪些。如下图:待办人员选择方式待办人员选择方式:指提交给该节点时,选择人员是单选还是多选。 “自动全选”是指选择全部指定围的用户, “自动选择第一个”是指在指定围的用户中选择第一个用户(用户是根据CORE_SUER的SORT_ID字段排序的) 。SQLSQL说明说明:C(XXX)C(XXX)表示公司编码为XXX的公司,流程引擎会转换为SQL条件:C.COMPANY_CODE=XXX (C是CORE_COMPANY的别名) ;D(XXX)D(XXX)表示部门编码为XXX的部门,流程引擎会转换为SQL条件:D.DEP_COD
30、E=XXX (C是CORE_DEPARTMENT的别名) ;U(XXX)U(XXX)表示用户登录账号为XXX的用户,流程引擎会转换为SQL条件:U.LOGIN_ID=XXX (U为CORE_USER的别名) ;R(XXX)R(XXX)表示角色编码为XXX的角色,流程引擎会转换为SQL条件:UR.ROLE_CODE=XXX (UR为CORE_USER_ROLES的别名) ;starter:XXXstarter:XXX或currentUser:XXXcurrentUser:XXX表示取发起人或当期用户的XXX属性的值。XXX可以是DepartmentCode、ParentDepartmentCod
31、e、CompanyCode、ParentCompanyCode、MainRoleCode、loginId之一,也可以是company_YYY、department_YYY表示公司或部门的某个字段(YYY字段)的属性值。XXXXXX表示取流程变量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.ROLE_CODE=B
32、MFZR点击“公司”按钮将弹出公司编码的选择窗口,如下图所示:点击“部门”按钮将弹出部门编码的选择窗口,如下图所示:点击“用户”按钮将弹出用户账号的选择窗口,如下图所示:点击“角色”按钮将弹出角色编码的选择窗口,如下图所示:点击弹出窗口的“确定”按钮,即可以在SQL文本框中光标位置插入相应的SQL。D.D. 转办用户围设置转办用户围设置在“转办用户围”选项卡,可以定义该节点的工作项可以转交给哪些用户处理。如下图:SQL的设置参照“审批用户围设置” 。E.E.传阅用户围设置传阅用户围设置在“传阅用户围”选项卡,可以定义该节点的工作项可以传阅给哪些用户查看。如下图:SQL的设置参照“审批用户围设置
33、” 。..连接属性设置连接属性设置双击流程图中的连接或选择连接列表中的某个连接,点击工具条的“属性”按钮,弹出选中连接的属性设置窗口:设置该连接的“转移条件” ,即满足这个条件时,流程会从该连接的“源节点”提交到“目标节点” 。点击“添加”参数,弹出“流程参数”选择窗口:可以选择流程中定义的流程变量作为参数,也可以选择发起人当前提交人的某个属性作为参数,也可以使用当前审批界面的按钮(源节点定义的按钮,批量审批或批量退回时的按钮使用节点“按钮信息”的“批量审批时使用的按钮”或“批量驳回时使用的按钮” )作为参数。XXX表示一个string型的参数,n:XXX表示一个n
34、umber型的参数,b:XXX表示一个bool型的参数。.1.3. 保存流程图保存流程图点击工具条上的“保存”按钮可以保存当前流程图,并且自动将当前流程图的版本递增(所有同一编码的流程版本最大值加1) ,即会生成一个新版本的流程图(如果当前流程版本没有被使用则把当前流程图删除) 。点击工具条上的“覆盖保存”按钮可以保存当前流程图,并且流程版本不变。流程图保存到CORE_WF_CONFIG表中,实际的XML代码保存在CORE_SYSTEM_BIG_DATA表中,通过CORE_WF_CONFIG的DATA_ID与CORE_SYSTEM_BIG_DATA的DATA_ID关联。3.1.4
35、.3.1.4. 设置流程图设置流程图双击流程版本明细列表中的某个版本或点击工具条上的“设置”按钮,弹出流程设置窗口:在窗口上可以设置该版本启用时间(有效开始时间) 、所属公司(如果是父子公司,可以只设置父公司,子公司将使用父公司的流程图)和状态。要发起某个编码XXX的流程时,流程引擎检查当前CORE_WF_CONFIG的WF_CODE=XXX并且未停用的所有版本,按照有效开始时间倒序,取得当前登录人所在公司能使用(流程图的所属公司为本公司或上级公司或为空的)的最新(有效开始时间小于当前时间)流程图版本,使用该版本发起流程。.1.5. 删除流程图删除流程图选择流程版本明细中的某个流
36、程版本,点击工具条的“删除”按钮,即可删除该流程版本。.1.6. 导出流程图导出流程图选择流程列表中的某几个流程图或流程版本明细列表中的某几个版本,点击工具条的“导出”按钮,即可将选中的流程图或版本导出成zip文件。.1.7. 导入流程图导入流程图点击工具条的“导入”按钮,选择导出流程的zip文件,即可将文件中的所有流程导入到当前数据库。注:导入的流程启用时间(有效开始时间)为当前时间。. 流程编程接口使用流程编程接口使用要使用流程编程接口,必须将“流程编程接口”目录下的代码加入到项目代码中,文件的目录结构可以根据实际需要修改。.2.1.
37、 流程引擎数据源初始化流程引擎数据源初始化要使用流程引擎首先要初始化一个专用的数据源,该数据源为流程配置加载、组织架构信息获取、流程图片生成等功能使用。数据源的初始化示例代码如下:..不使用连接池方式:不使用连接池方式:.import .zbiti.core.util.db.DataSource;import .zbiti.core.util.db.DirectFactory;.DirectFactory f = new DirectFactory();Properties properties = new Properties();properties.setPr
38、operty(jdbc.driver, “oracle.jdbc.driver.OracleDriver”);properties.setProperty(jdbc.url,“jdbc:oracle:thin::1521:orcl”);properties.setProperty(jdbc.username, “test”);properties.setProperty(jdbc.password, “1”);f.init(properties, DataSource.CORE_DATASOURCE);DataSource.addDBConnectionFactory(D
39、ataSource.CORE_DATASOURCE, f);...使用使用 C3P0C3P0 连接池方式连接池方式.import .zbiti.core.util.db.DataSource;import .zbiti.core.util.db.C3P0Factory;.C3P0Factory f = new C3P0Factory();Properties properties = new Properties();properties.setProperty(jdbc.driver, “oracle.jdbc.driver.OracleDriver”);prop
40、erties.setProperty(jdbc.url,“jdbc:oracle:thin::1521:orcl”);properties.setProperty(jdbc.username, “test”);properties.setProperty(jdbc.password, “1”);properties.setProperty(maxPoolSize, “10”);properties.setProperty(initPoolSize, “1”);properties.setProperty(waitTimeout, “10000”);properties.s
41、etProperty(maxIdleTime, “1000000”);f.init(properties, DataSource.CORE_DATASOURCE);DataSource.addDBConnectionFactory(DataSource.CORE_DATASOURCE, f);..2.2. 流程配置的加载流程配置的加载流程配置保存在CORE_WF_CONFIG表中,在系统启动时或流程图被修改后,必须重新加载流程配置。需要执行的代码如下:.zbiti.core.config.wf.WorkFlowConfigProvider.load();..2.3.
42、 用户登录的改造(可选)用户登录的改造(可选)流程引擎使用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().setAttribute
43、(KEY_USER_BIND_SESSION,u);..2.4. 流程处理流程处理EMOSS2流程引擎提供了流程处理的封装源代码(WFInvoker.js,WFInvoker.jsp,WFSelectUsers.jsp,WFInvoker.java.) ,各项目可以根据自己的需要做一定的修改。流程处理的一次典型过程如下:以下给出了发起和审批通过的示例代码:2:AJAX提交WFInvoker.jsWFInvoker.js客户端(js、jsp)WFInvoker.jspWFInvoker.jsp1:调用doXXX方法发起或审批流程WFInvoker.javaWFInvoker.jav
44、a3:预处理:计算流程变量、下一结点及审批参与人.流程业务组件流程业务组件XXX.javaXXX.java4:返回JSON格式的预处理结果SelectUsers.jspSelectUsers.jsp或或SelectUsers2.jspSelectUsers2.jsp5:选择审批人或转办人(该步骤可能是自动完成)6:AJAX提交(已选择审批人或转别人)7:正式处理:保存流程变量、发起流程、生成新待办.8:返回JSON格式的正式处理结果..点击发起流程按钮:点击发起流程按钮:./发起test1流程var datas = zbiti.WFInvoker.doStart(“
45、test1”,”form1”);if(datas) alert(“发起成功,流程ID为:”+datas.instanceId);..点击审批通过按钮:点击审批通过按钮:./审批通过工作项ID为111var datas = zbiti.WFInvoker.doApprove(“111”,”form1”);if(datas) alert(“审批成功!”);..服务端实现业务处理服务端实现业务处理./*test1流程的业务组件*/public class Test1WFComponent extends WorkFlowComponent pu
46、blic 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();map.put
47、(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./* * 流程审批结
48、束 */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..2.5. 常用常用 JAVAJAVA 类说明类说明..zbiti.co
49、re.config.wf.WorkFlowComponent.zbiti.core.config.wf.WorkFlowComponent该类是流程业务组件的父类,所有的流程业务组件必须继承该类,重写该类的方法,实现流程状态变动与业务操作的联动。..zbiti.core.config.wf.WorkFlowConfigProvider.zbiti.core.config.wf.WorkFlowConfigProvider流程配置提供类。可以加载CORE_WF_CONFIG中所有的流程图,并且提供获取指定流程图信息的方法。..zbiti.c
50、ore.config.wf.WorkFlowObject.zbiti.core.config.wf.WorkFlowObject流程定义信息类。该类保存流程图中的全部信息,可以通过其中的方法取得流程图的节点、按钮、连接、流程变量等信息。..zbiti.core.config.wf.WFImage.zbiti.core.config.wf.WFImage流程图生成类。该类可以生成某一个流程实例的流程图。..zbiti.core.vo.ParameterObject.zbiti.core.vo.ParameterObject输入参数类。该类用来保存request中的参数以及当前的登录用户。..zbiti.core.config.wf.WorkFlowProxy.zbiti.core.config.wf.WorkFlowProxy流程操作类。该类是流程引擎操作流程的核心类,提供发起、审批、驳回、转办、否决、恢复流程等操作方法。调用该类的方法前,需要输入参数来创建该类(参数区分大小写):参数参数含义含义说明说明_WF_isStart是否发起流程的操作true/false。默认为false_WF_isPreprocess是否预处理true/false。默认为fa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业展览馆设计建设合同范本
- 2025供用电合同协议范本
- 2025个体健身房器材租赁合同样式
- 2025年钢材购销合同范本
- 浙江省浙南名校联盟2024-2025学年高二下学期4月期中考试 生物 含答案
- 患者康复护理
- 金属活动性顺序教学
- 职场魔方培训体系构建
- 急性放射病的临床护理
- 办公室内勤年终总结模版
- 2025年公务员面试试题及答案全解析
- 2025届云南省昆明市“三诊一模”高考模拟考试历史试题(含答案)
- 择校入学合同协议
- 演出补充合同协议
- 食堂从业人员培训内容
- 2024年广西物流职业技术学院单招综合素质考试题库及答案1套
- 公安机关对旅馆业培训
- 2025届八省八校T8联考高三下学期3月联合测评英语试题及答案
- 中国垃圾渗滤液处理行业市场深度分析及发展前景预测报告
- 2025年广东省出版集团数字出版有限公司招聘笔试参考题库含答案解析
- 2025年河北承德中考试题及答案
评论
0/150
提交评论