jbpm4.4 系统设计文档(rogers技术文档系列)


RRooggeerrss 技技术术文文档档系系列列 JJBBPPMM44..44 系系统统设设计计文文档档 版本:1.1 编 制: Rogers.cui 审 核: 发布日期: 2011-08-18 文档审批单 版本:1.0 审批人 签字 日期 备注:此页签字另存。 文档修改记录 版本号 完成日期 主要作者 修改记录 V1.0 Rogers 创建初稿 V1.1 Rogers 加入 jbpm 开发和流程配置模块 参考文档 文件名 主要作者 版本号 完成日期 目录 1 JBPM 简介 ....................................................................................................................................................... 1 1.1 JBPM 概况 ............................................................................................................................................... 1 1.2 JBPM 特色与优势 .................................................................................................................................... 1 1.3 JBPM4 概述 ............................................................................................................................................. 1 2 JBPM4 环境搭建 ............................................................................................................................................. 2 2.1 必须安装的软件 ....................................................................................................................................... 2 2.2 图形化插件 GPD 安装步骤 ...................................................................................................................... 2 2.2.1 安装准备 .......................................................................................................................................... 2 2.3 JBPM4.4 集成: ........................................................................................................................................ 3 2.3.1 添加必要 jar 包: ............................................................................................................................ 3 2.3.2 拷贝必要的 xml 文件 ....................................................................................................................... 5 2.4 JBPM4 数据库设计.................................................................................................................................... 6 3 JBPM 开发与原理详解 .................................................................................................................................... 7 3.1 设计流程 XML,通过 GPD 插件进行图形化编辑 ..................................................................................... 7 3.1.1 图形编辑 .......................................................................................................................................... 7 3.1.2 节点属性配置 .................................................................................................................................. 9 3.1.3 xml 属性配置: .................................................................................................................................. 10 3.2 流程实现具体分析 ................................................................................................................................. 10 3.2.1 流程实现基础 ................................................................................................................................ 10 3.2.2 流程步骤开发与实现 ..................................................................................................................... 11 3.3 页面开发: ............................................................................................................................................ 12 4 流程配置模块的实现(草稿版) .................................................................................................................. 12 4.1 为什么需要实现流程配置模块 .............................................................................................................. 12 4.1.1 流程与模块的绑定问题 ................................................................................................................. 12 4.1.2 流程各个节点的角色分配问题 ...................................................................................................... 13 4.2 流程配置模块实现的原理...................................................................................................................... 13 4.2.1 业务流程配置模块 ......................................................................................................................... 13 4.2.2 流程角色配置模块 ......................................................................................................................... 13 4.3 模块实现之前的做法 ............................................................................................................................. 13 5 JBPM 开发业务详解 ..................................................................................................................................... 13 5.1 第一阶段—流程设计与流程图绘制 ...................................................................................................... 13 5.1.1 流程设计 ........................................................................................................................................ 13 5.1.2 流程图绘制 .................................................................................................................................... 14 5.2 第二阶段--流程处理 ACTION 的开发 ...................................................................................................... 14 5.2.1 概述 ................................................................................................................................................ 14 5.2.2 流程相关代码开发 ......................................................................................................................... 14 5.3 第三阶段--业务页面开发 ....................................................................................................................... 16 5.3.1 页面设计开发概述 ......................................................................................................................... 16 5.3.2 页面设计需要注意的问题.............................................................................................................. 17 5.4 第四阶段--流程节点角色配置 ............................................................................................................... 17 5.4.1 流程配置入口 ................................................................................................................................ 17 5.4.2 流程配置方法 ................................................................................................................................ 17 6 写在最后 ........................................................................................................................................................ 18 1 1 JBPM 简介 1.1 JBPM 概况 JBPM,全称是 Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、 工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM 是公开源代码项 目,它使用要遵循 LGPL(GNU Lesser General Public License )和 EULA(JBoss End User License Agreement)协议。 jBPM 在 2004 年 10 月 18 日,发布了 2.0 版本,并在同一天加入了 JBoss,成为了 JBoss 企业中间 件平台的一个组成部分,它的名称也改成 JBoss jBPM。随着 jBPM 加入 JBoss 组织,jBPM 也将进入一 个全新的发展时代,它的前景是十分光明的。 1.2 JBPM 特色与优势 JBPM突出的特色就是它的业务逻辑定义没有采用目前的一些规范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS 等,而是采用了它自己定义的 JBoss jBPM Process definition language (jPdl)。jPdl 认为一个业务流程可以被看作是一个 UML 状态图。jPdl 就是详细定义了这个状态图的每个部分,如起始、 结束状态,状态之间的转换,过图型化的流程定义,直观地描述业务流程。 jBPM 的另一个特色是它使用 Hibernate 来管理它的数据库。Hibernate 是目前 Java 领域最好的一种 数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。通过 Hibernate,jBPM 将数 据的管理职能分离出去,自己专注于业务逻辑的处理。 1.3 JBPM4 概述 JBoss的jBPM团队发布了其新一代的BPM 框架,新产品基于进程虚拟机(Process Virtual Machine) 技术。业务流程管理(Business Process Management)和工作流(Workflow)现在可通过 jBPM4 为主 数据流采用提供服务。jBPM 4 可在所有的 Java 开发环境中使用,从标准的 Java SE 应用程序,到独立 的 BPM 服务器。最新版本还附有全新的 BPMN Eclipse 开发器以及基于 GWT 的管理控制台。在众多的 改进中,最引人注意的是以下几点: ﹡一如往常的可嵌入到所有的 Java 环境中 ﹡在测试实验室中实现了持续继承矩阵 ﹡BPMN 进程图形 ﹡完全重新设计、简洁稳定的 API,包括一款易用的 Query API ﹡带有易于安装的 开箱即用体验演示,显示了新的开发器、API 使用,控制台以及进程示例 ﹡简化并经修订的数据库架构 ﹡自动安装脚本 ﹡性能改进 ﹡配置更抽象的层结构,减少出错的可能 ﹡将运行时数据与历史数据分离 ﹡本地支持与 Spring 框架的集成 ﹡改进的文档,包括将典型使用方案的用户指南和先进课题的开发指南分开 2 2 JBPM4 环境搭建 2.1 必须安装的软件 1) jbpm-4.4.zip 2) jdk 5 或者更高版本 3) 支持的数据库有 hsqldb、mysql、oracle、postgresql、sybase,本说明以 oracle 作为数据库。 4) GPD 插件(jbpm 在 IDE 中的流程设计器), eclipse(建议 3.6 版本以上)或者 myeclipse ( 建 议 8.1 版本以上) 安装插件所需的 zip 在解压后 jbpm-4.4\install\src\gpd 中的 jbpm-gpd-site.zip,本 说明以 MyEclipse8.6 为例。 2.2 图形化插件 GPD 安装步骤 2.2.1 安装准备 1、解压位于\jbpm-4.4\install\src\gpd 目录下的 jbpm-gpd-site.zip 压缩文件,解压后效果如下图: 2、新建一个文件夹,将文件夹 plugings,features 和其他两个 jar 包,以及 xml 都拷贝进去; 3、打开 MyEclipse8.6,进入 window->MyEclipse Configuration Center,如下图所示: 4、进入后,选择 Software Center,如下图所示: 5、点击 add site 链接,在出现的界面中,选择 Add from Local Folder,在 name 的地方输入 jbpmgpd, url 选择第二步中自己新建的文件夹,如下图: 3 6、点击“ok”,回到主界面,会看到多了如下图部分: 7、这个就是引入的所有插件所需的组件,这些组件需要逐一增加到 eclipse 中去,具体方法为右键 单击该组件,选择 Add to Porfile…添加到 eclipse 中去,如下图: 但是这里要非常注意,不要添加后缀为 source 的组件,这些组件对于开发没有影响,但是导入会报 一些莫名的错误; 8、全部添加好了以后,点击“修改更新”,会进入到 eclipse 的更新页面进行安装; 9、需要注意一点,为了更好更快的安装好插件,请先不要联网,我在联网的过程中会更新相关的插 件,速度非常慢; 2.3 Jbpm4.4 集成: 2.3.1 添加必要 jar 包: 1、在已经建立好的工程或者需要添加流程的工程中,需要加入 jbpm 所依赖的 jar 包,这些 jar 包都 集成在所下载的 jbpm4.4 文件夹中; 4 2、在已经建立好的工程名上单击右键,选择 Properties,如图: 3、选择好后进入到控制台,选择 java build path,右边选择 Library,如下图: 4、在右区的功能按钮中,选择 Add External JARs…按钮,点击后选择路径\jbpm-4.4\lib,吧下面的 所有 jar 包全部选择加入进来,然后继续如上操作,进入目录\jbpm-4.4,选择 jbpm.jar,也加入到当前工 5 程中来,这个时候要非常注意,jboss 或者 tomcat 可能都包含了其中的三个 jar 包,我们需要解决 jar 包 冲突问题,需要将这三个 jar 包移除工程,并且覆盖 jboss 或者 tomcat 中的相同的 jar 包,如下三个 jar 包: 5、经过上述步骤后,jar 包已经完全添加到我们工程中来了; 2.3.2 拷贝必要的 xml 文件 1、在 jbpm 中,包含了很多配置文件,在提供的包中我们可以找到这些配置文件,大概有以下的几 种主要的配置文件: jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml 五个 hibernate 映射文件 jbpm.default.cfg.xml ----> 流程引擎的默认配置文件 jbpm.identity.cfg.xml ----> 身份验证配置文件 jbpm.jbossremote.cfg.xml ----> 远程调用 jboss 实现命令模式 jbpm.jobexecutor.cfg.xml ----> 任务执行器的配置 jbpm.task.lifecycle.xml ----> 任务生命周期,包括启动,暂停,继续,完成,取消之类 jbpm.tx.hibernate.cfg.xml----> 默认的 hibernate 事务配置 jbpm.tx.jta.cfg.xml ----> jta 的事务配置 jbpm.variable.types.xml ----> 配置变量类型映射 jbpm.wire.bindings.xml ----> 依赖绑定映射 2、在配置文件中,有一个主要配置文件,为 jbpm.cfg.xml,我们需要将其引入到工程中来,该配置 文件内容如下图所示: 可以看到里面引入了很多配置文件,由于很多 xml 配置文件包含在了 jbpm4.4.jar 中,所以无须再引 入,但是我们需要配置连接池,所以还需要引入 jbpm.hibernate.cfg.xml,该配置文件内容如下: 6 可以看到,这个配置文件其实是 hibernate 的配置文件,并且里面配置了数据库方言,驱动,连接池 等数据库信息。 3、在工程中,需要将配置文件引入 src 目录下,与 struts,spring 等配置文件放置在一起,如下截 图: 2.4 Jbpm4 数据库设计 Jbpm 数据库表大致分为以下三个部分: 7 1、资源库和运行时表结构: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 (主要是存放 JBPM4 的执行信息,Execution 机制代 替了 JBPM3 的 Token 机制) JBPM4_JOB 定时表(存放的是 Timer 的定义) JBPM4_LOB 存储表 (流程定义相关的布署信息) JBPM4_PARTICIPATION 参与者表 (存放 Participation 的信息,Participation 的种类有 Candidate、 Client、Owner、 Replaced Assignee 和 Viewer。而具体的 Participation 既可以是单一用户,也可 以是用户组。) JBPM4_PROPERTY 引擎参数表 JBPM4_SWIMLANE 泳道表(Swim Lane 是一种 Runtime Process Role,多个 Task 可以一次分配到 同一 Actor 身上。) JBPM4_TASK 任务表 (存放需要人来完成的 Activities,需要人来参与完成的 Activity 被称 为 Task). JBPM4_VARIABLE 上下文表 (存的是进行时的临时变量) 2、历史数据表结构 JBPM4_HIST_ACTINST 流程活动(节点)实例表 (Activity Instance 的历史记录) JBPM4_HIST_DETAIL 流程历史详细表 (保存 Variable 的变更记录) JBPM4_HIST_PROCINST 流程实例历史表 (Process Instance 的历史记录) JBPM4_HIST_TASK 任务历史表(Task 的历史信息) JBPM4_HIST_VAR 流程变量(上下文)历史表 (保存历史的变量 ) 3、身份认证表结构: JBPM4_ID_GROUP 组表 JBPM4_ID_MEMBERSHIP 用户角色表 JBPM4_ID_USER 用户表 3 JBPM 开发与原理详解 3.1 设计流程 xml,通过 gpd 插件进行图形化编辑 3.1.1 图形编辑 如果安装了 gpd 插件的话,双击需要编辑的 jbpm 的 xml 文件,就会看到如下界面: 8 我们可以看到,左边工具栏中有很多节点的图示,每种状态加入进去后都有特殊的功能,在我们系 统的现在的简单流程中,我们只需要配置 task 节点就够了,还要注意,每种状态节点都会对应一张 xml 配置文件,也就是前面所提到的其他的 xml 配置文件,通过点击的方式可以将左边的状态节点加入到右 边的空白区域,注意,每个流程必须要配置一个 start 节点和不少于一个的 end 节点,根据彩种管理的流 程,我们画出如下图形: 声明:完成图形绘制以后,必须在图形界面进行保存,会自动生成一个 png 的图片,以供流程展示 9 使用,如果转换成 xml 编辑页面保存的话,图形生成会不完成,造成不必要的麻烦。 3.1.2 节点属性配置 1、变量配置方式:在完成图形后,需要打开 property 视图框,如下图所示: 2、编辑总体属性:如上图,是不选任何节点出来的 property 编辑框,各个属性如下所述: a)name:流程名称; b)key:流程标签; c)version:流程版本指定,这里是大流程版本,在流程执行过程中,会产生实例小版本信息; d)description:流程描述。 3、编辑节点详细信息:选中某个节点,property 视图框会变成如下图所示: a) general:主要编辑该节点的名称信息; b) assignment:主要编辑该节点的变量信息,如下图: 这里有两个选择项目: Type:有四个可选择项目,我们一般常用的是 assignee 和 candidate-group,分别代表处理该 节点用户和处理该节点的用户组(角色); Expression:使用类似于 EL 表达式的写法,写入变量,也可以指定具体的用户,此变量值可以 在流程处理过程中设置进去。 10 3.1.3 xml 属性配置: 1、 配置方法:在完成图形绘制和图形属性后,点击 source 标签后,会进入到 xml 编辑页面,如下 图: 2、 需要配置 task 的 form 属性: Form 属性代表了该流程节点具体访问的 action 路径,配置这个属性的原因是可以个性化处 理节点,这个路径也可以由页面指定,但是在这里会比较灵活,如果几个模块都要公用一个 流程的话,需要在页面中指定,如果一个模块对应一个流程的话,那么我们在这里配置会相 当方便。 3、 如果是指向信息有变化,则需要配置 assignee 属性; 4、 需要注意的一点是:其他属性都是由图形自动生成的,我们不用去关心。 3.2 流程实现具体分析 3.2.1 流程实现基础 1、 流程定义引擎:ProcessEngine ProcessEngine 是流程运行的根本,控制整个流程运行的基础,其获得方式为: 2、 管理和发布流程定义接口:RepositoryService RepositoryService 主要用来管理和发布流程定义,发布流程定义、删除流程定义、查看 流程定义,获得方式为: 3、 操作流程实例接口:ExecutionService ExecutionService 主要用来操作流程实例,启动流程实例,查看流程实例,删除流程实例和结束 流程实例,获得方式为: 4、 任务接口:TaskService TaskService 主要是用来控制任务,查找任务,完成任务,删除任务等,获得方式为: 5、 历史信息接口:HistoryService HistoryService 主要用来获得流程的历史信息以及写入的历史数据的关联查询和展示,获得方式 11 为: 3.2.2 流程步骤开发与实现 1、 发布新流程定义: 在发布新流程定义的时候,通常有两种方式: a) 只发布 xml 文件: b) 发布 zip 包,包含了 xml 文件和 png 图片: 2、 查看流程定义: Api 中提供了查看流程定义的方法,我们可以通过循环来取得流程定义的 list 列表: 3、 删除流程定义: 删除流程定义的时候,采取的是级联删除方式,也就是说删除流程定义后,流程定义下的所有 的流程实例,工作任务全都会被删除,传入的参数是流程定义 Id: 4、 启动流程实例: 流程实例的启动由操作流程实例接口去启动,传入的参数有两个,分别如下: a) 流程定义 id:主要是要指向该实例属于哪个流程定义; b) 结果集 map:主要装载启动的操作者。 5、 查看流程实例: 查看流程实例时,首先我们需要由控制流程实例接口去获得流程实例查询服务,调用查询服务 的 list 方法就可以得到流程实例的 list,我们遍历这个 list 就可以取得该流程定义下的流程实例: 6、 删除流程实例: 删除流程实例的方法与前面类似,也是级联删除,传入参数为流程实例的 id: 7、 结束流程实例: 结束流程实例也是使用 API 封装好的方法进行删除,传入参数为流程实例 id 和 key: 12 8、 查询任务信息: 查询任务信息的方式是根据任务信息服务,传入用户 id 来去取得该用户的任务信息,返回一 个 list: 9、 完成任务节点: 完成任务节点是指在该节点处理完所有业务信息后,结束此节点的处理工作,而根据流程图转 向下个流程环节,这个里面分为两种情况: a) 申请环节或者有业务值改变的情况:这个时候结束任务的时候需要把修改的值封装成 map 作为参数传递进去,流程会自动将该值进行保存: b) 审批环节不需要业务值改变的情况:这个时候结束任务,不需要带入改变值的 map, 而是需要指定流程图中的指向信息,如果没有指向信息,则不需要传递该参数: 10、 获得历史信息: 历史信息是由历史信息接口获得历史信息查询封装类进行查询,得到一个历史信息 list,我们 遍历这个 list 就可以取得所有的历史信息,历史信息在 jbpm3 中是不支持的,在 jbpm4 中加入的 新功能: 3.3 页面开发: 页面开发过程与现在我们的开发相类似,流程实现主要是后台的实现过程,关于页面开发以前已经 有了规范,这里再不做赘述。 4 流程配置模块的实现(草稿版) 4.1 为什么需要实现流程配置模块 众所周知,在流程运行的过程中,每个节点都需要对应相应的处理人员或者处理人员组来处理,并 不是所有的节点都是一个人进行处理,这就牵涉到了系统角色与权限的配置问题,那么流程配置模块主 要需要解决一下两个主要问题: 4.1.1 流程与模块的绑定问题 流程定义出来后,需要传入 zip 参数或者是 xml 参数进行流程与业务的绑定,指定该业务模块执行 13 过程中需要执行哪个流程,而这个关联参数必须存在于数据库中,如果有变动的情况下可以更新数据库; 4.1.2 流程各个节点的角色分配问题 流程流转的各个节点都是由特定的人或者是角色,组织机构来处理,那么我们就需要配置每个节点 的角色人员信息,在 jbpm4.4 中的 jpdl 配置文件中支持以变量方式来获取用户角色,那么我们需要在数 据库中有相关的数据,我们在流程中转的过程中需要动态从数据库中取得这些信息。 4.2 流程配置模块实现的原理 流程配置模块实现,必须分为两个模块进行处理,一个是模块与流程的绑定模块,一个是流程各个 节点的角色分配模块。 4.2.1 业务流程配置模块 此模块的主要任务是绑定业务模块与流程的关系,将两者的关系数据存进数据库,这个模块的操作 对象是流程定义与模块,那么我们需要的字段为: a) 主键 id:这个不用描述了; b) 流程定义 id:我们设计的流程中的一个,是流程表的主键 id c) 模块 id:系统中的需要绑定该流程的主键 id;我们执行流程时需要模块 id 去寻找流程定义 id; d) 绑定时间:记录操作时间,以便于日后升级; e) 操作者:记录绑定操作人员信息,以便于日后查找信息; f) 描述:简要概述需求内容。 4.2.2 流程角色配置模块 此模块主要任务是为流程各个节点分配用户角色信息,以便于在流程执行过程中读取相应节点的用 户和角色,但是这个部分实现难度较大,因为在 jbpm4 中是以图形方式展示的,而且 api 中没有任何方 法去抽取流程实例下面的子节点,需要实现此模块的话,必须要重写一部分 jbpm 源文件或者是重新开发 接口以实现这个功能,所以这里不再设计表结构,需要讨论或者说是选取一种好的方式,还有一种变通 的方式,可以不是先这个模块,而是通过配置文件来做,但是这个工作也需要读取源文件,从简易程度 上来说要比第一种方式稍微简单一点。 4.3 模块实现之前的做法 在上述两个模块没有实现之前,因为我们系统流程相对固定,所以暂时是抽象模板的方式,绑定流 程与模块,然后根据变量的方式和需求,从库中直接抽取出来相应的角色和权限设置到该变量中,日后 实现此模块后再进行改动,实现上述两模块的时间可能比较久一些,也需要涉及到权限角色方面的问题。 5 Jbpm 开发业务详解 5.1 第一阶段—流程设计与流程图绘制 5.1.1 流程设计 流程设计是最为关键的一步,我们在开发之前都要去设计,那流程设计就凸现重要,对于流程,业 务来说都是很重要,如果设计不好的话,到后面流程开发设计代码完成之后再变动就非常艰难和麻烦了, 有可能重新开发,以“彩种管理”为例,我们有申请和审批两个节点,那么我们在审批节点的时候,可 14 以通过使业务点生效,也可以驳回到提交者处进行修改信息再次提交,当我们结合具体的业务需求设计 完成流程之后,就可以进入下一个环节。 5.1.2 流程图绘制 具体的流程图绘制以及 xml 的属性配置在本文第三章中已经详细描述,这里不再多说,需要提到绘 制的时候需要注意的几点: 1、 在选择配置节点的处理方式时,我们需要选择 group 方式,因为我们系统的要求是多人下发, 单人处理的并发单点处理的流程处理方式,而且需要配合我们的配置模块进行人员分配,所 以必须选择 group 方式; 2、 在节点名称上我们最好命名的时候命名一些有意义的单词,这个节点名称我们需要在配置模块 中增加进去,如果没有意义的词语,我们将很难在配置模块中分辨; 3、 配置 form 的时候,我们可以直接配置路径,也可以脱离流程与业务的绑定关系,节点处需要设 置 request 或者 check,我们规定,除了最后一步以外,其他节点都声明为 request,因为 对于流程来说,前面的节点都是请求,请求返回上一节点或者请求进入下一结点。 5.2 第二阶段--流程处理 action 的开发 5.2.1 概述 流程处理的业务 action 中,我们大致将代码分为三个大的部分,分别是流程相关,业务相关和常量 声明,这样看起来比较简洁和整齐,也简化了我们流程操作的难度和复杂度。 5.2.2 流程相关代码开发 1、 概述: 从现在后台管理系统来看,我们的几个大流程大概分为列表查询方法,新增初始化,新增提交流 程,修改数据初始化,修改提交流程等这样几个部分,那么我们规定,点击提交为流程启动,当 启动以后,我们会在待办任务中看到处理任务节点,并且业务数据中的状态变为校对中。 2、 流程启动前操作: 在流程启动之前,有些业务模块需要做一些操作,比如将临时提交的数据存进到业务表中,以彩 种管理为例,看下面的例子代码: 在这个方法中,流程中需要一个表单的业务 id,这里需要将流程和业务 id 进行绑定,以便于以 15 后对于流程流转历史的查询。保存的操作这里不用开发者操作,只是需要将 id 得到并且 return 就可以了。 3、 流程启动: 提交表单的时候我们需要调用 deploy 方法进行流程发布,这个方法有四个参数,如下: 四个参数分别代表:流程图 xml 文件名,发布方式(一般是 xml), session 中取得 userId,启 动方式,除了最后一个节点以外,其他都是“request”。 还需要注意,在每次提交的时候,流程会自动执行业务值拷贝方法,吧相关的业务值拷贝到流程 表中以进行流转,这个方法如下: 我们可以看到,我们将页面上的值以对象的方式放入到 map 中,gameType 为页面上的 vo 对象, 而 map 的 key 值则是标识,这个在需要取出来业务值的时候发挥作用。 4、 流程审批: 由于在流程启动的时候,我们把流程数据放入流程表进行流转,那么我们需要去除业务数据的时 候,可以调用如下方法: 那么我们取值的时候,需要传入两个参数:工作任务 id 和常量标识,即上步操作中 map 的 key 值; 流程我们在审批的时候,都是同一一个方法,以彩种管理为例,我们看到这个审批提交方法: 我们看到,调用了一个 submitWorkflow 方法,这个方法包含了三个参数:工作任务 id,任务处 理类型(request,pass 和 reject),处理人 id,这样,流程根据你传递进去的 type 来确定该单 16 据是否通过,如果传入的是 feject,那么代表驳回。 5、 流程驳回: 当流程需要驳回上个节点的时候,我们会执行一个业务方法,即驳回业务操作方法,具体方法体 如下所示: 在这个方法中,我们就要做关于驳回操作的业务操作或者值的变动,具体由业务而定; 6、 流程通过: 当流程通过并且完成的时候,我们会执行业务通过的业务方法,如下: 上面代码为彩种管理的例子代码,可以看到,当流程审批通过的时候,我们更新了数据库,并且 是申请和作废两个流程公用的方法,所以设置标志位以区分这两个流程,当然,这些都是由业务 决定,也是业务上的操作,与流程没有关系,所以这个部分需要自己去思考开发。 5.3 第三阶段--业务页面开发 5.3.1 页面设计开发概述 页面是与业务关系比较紧密,是业务操作的主要入口,那么我们在开发页面的时候,除了取得数据, 输入数据,验证数据等工作,还要加入相关业务需要的信息和处理方式,这个下面一节将详细叙述。 17 5.3.2 页面设计需要注意的问题 我们在开发页面的时候,需要注意一下几个主要方面: 1、 页面中需要有隐藏域来存放工作任务 id,即 taskId,这个 id 需要随着流程流转过程传递; 2、 在我的任务列表中,按钮设计中要加入 taskId 关键字; 3、 由于驳回,通过与申请提交是不同入口,我们需要将 type 信息传入到 action 中,如: 上面的 taskType 就是我们的 type 关键字,如: 可以看到,通过传入的是 pass 关键字的 type,而驳回传入的是 reject 关键字的 type。 5.4 第四阶段--流程节点角色配置 5.4.1 流程配置入口 流程配置的时候,需要登入系统,进入到系统管理流程配置模块,在这里,我们将会新增一个流 程节点的处理角色以及人员的记录,该条记录将绑定流程,以保证流程正常运行到正确的处理人节点。 该模块如下图所示: 5.4.2 流程配置方法 当我们需要新增流程节点的时候,点击新增配置,如下图: 18 其页面上的工作组名称为在 xml 中配置的 group 的名称,注意,这里必须一致,而西安免的角色则 是我们系统中的所有角色,点击角色名称后,右侧方框中会出现该角色下的人员名单,例如: 然后,我们可以选择相关用户,点击增加所选,放置到右侧后可以提交,提交即可生效。 如果我们需要修改该节点的用户,那么我们可以点击“修改”按钮,进入到页面中进行同样的操作, 注意,工作组名称在 xml 中变化后这里也必须要变,但是我们不提倡改变工作组名称,因为这只是个表 示,没有任何的实际意义,变化当然也就没有什么意义了。 6 写在最后 1、 此文档仅用于技术交流使用,不得用于其它途径; 2、 本文提供了简单的开发方法,如果需要详细的开发文档与代码,请参见《rogers 技术文档系列 —jbpm4.4 系统开发文档》一文。
还剩22页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

liulp_1985

贡献于2013-05-06

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf