jbpm工作流入门教程
- 格式:pdf
- 大小:170.11 KB
- 文档页数:11
一、流程部署a)点击“添加流程”按钮,选择要部署的流程(zip压缩包),点击“部署按钮”,发起一个request,将文件上传到action中。
b)Action中,接收上传的文件,调用JBPM的repositoryService,通过createDeployment()方法,部署流程。
使用addResourcesFromZipInputStream,解析上传的zip流。
最后通过deploy()完成数据的持久化,流程部署成功。
二、查看JPDL文件内容a)点击“内容”按钮,抓取请求信息,获得action中的方法。
b)Action中,调用JBPM的repositoryService,通过getResourceNames()方法,获取名称的集合。
通过遍历集合,找到以.jpdl.xml结尾的文件,调用方法getResourceAsStream()以流的形式返回这个名称对应的资源。
三、查看JPDL文件对应的图片a)点击“图片”按钮,调用action对应的方法,b)Action中,调用JBPM的repositoryService,通过页面传入的参数getResourceAsStream获取图片四、启动流程(提交申请审批的过程)a)勾选要提交审批的请假单,点击“申请”按钮;b)在action中接收请假单的idc)(业务)获得最新版本流程定义:repositoryService. createProcessDefinitionQuery()查询,根据流程定义的名称,按照版本进行倒序排序,取得唯一的流程定义。
d)(必须)启动该流程:executionService的startProcessInstanceById()e)(业务)根据请假单id获得请假单的实例,修改请假单状态:updatef)(必须)通过executionService. setVariables()设置流程变量,将请假单id设置到流程变量中,确保在后面的审批过程中能获得请假单的id,也就是确保了当前提交审批的请假单会按照我们预定好的流程定义进行审批。
jbpm 流程设计(原创实用版)目录1.JBPM 简介2.JBPM 流程设计概念3.JBPM 流程设计步骤4.JBPM 流程设计实例5.总结正文一、JBPM 简介JBPM(Java Business Process Management)是一款开源的业务流程管理系统,它提供了一种以规范化、自动化的方式来管理企业的业务流程。
JBPM 遵循 BPMN(Business Process Model and Notation)标准,支持从 BPMN 建模到部署执行的端到端业务流程管理。
二、JBPM 流程设计概念在 JBPM 中,流程设计是指通过图形化界面创建、编辑和部署业务流程模型的过程。
流程模型描述了企业业务流程的执行过程,包括流程的启动、流转、结束等各个环节。
流程设计主要包括以下几个元素:1.流程定义:描述流程的启动条件、执行顺序、分支、合并、结束条件等。
2.流程参与者:定义参与流程执行的角色和人员。
3.流程任务:描述流程中需要完成的任务,以及任务之间的依赖关系。
4.流程事件:描述在流程执行过程中触发的事件,例如错误、警告等。
三、JBPM 流程设计步骤1.安装和配置 JBPM:首先需要下载并安装 JBPM,然后进行相应的配置,如数据库连接、用户权限等。
2.登录 JBPM:使用管理员账号登录 JBPM,进入流程设计界面。
3.创建流程定义:在流程设计界面创建新流程,或者导入现有的 BPMN 模型。
4.编辑流程定义:通过拖拽和放置的方式,修改流程的执行顺序、分支、合并等。
5.添加流程参与者:为流程定义参与者,并设置其角色和权限。
6.添加流程任务:为流程添加任务,并设置任务之间的关系。
7.测试和调试流程:在测试环境中运行流程,检查其执行结果,并进行调试。
8.部署流程:将设计好的流程部署到生产环境中,供实际业务使用。
四、JBPM 流程设计实例以一个简单的请假流程为例,介绍 JBPM 流程设计的具体步骤:1.创建流程定义:在流程设计界面创建一个新流程,设置流程名称为“请假流程”。
jbpm的入门1这里使用的是mysql数据库开发工具是eclipse首先我们需要初始化话数据库Java代码1.package test.config;2.3.import org.jbpm.JbpmConfiguration;4.5.public class InitDB {6.7.public static void main(String[] args) {8.InitDB initDB = new InitDB();9.initDB.createJbpmDB();10.}11.//初始化JBPM的数据库表12.public void createJbpmDB(){13.JbpmConfiguration.getInstance().createSchema();14.}15.//删除JBPM的数据库表16.public void dropJbpmDB(){17.JbpmConfiguration.getInstance().dropSchema();18.}19.20.}相关的配置文件可以在jbpm的程序包中找到hibernate.cfg.xml要与你的数据库配置相匹配。
接下来我们绘制一个工作流,这里基本上用到jbpm的一个工作流绘制的插件。
我们绘制了一个简单的流程:大体过程如下起始状态--》任务1--》任务2--》结束Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.3.<process-definition xmlns="" name="qj">4.5.6.<start-state name="start-state1">7.<transition to="apply"></transition>8.</start-state>9.10.11.<task-node name="apply">12.<task name="apply">13.<assignment actor-id="1"></assignment>14.</task>15.<transition to="approve"></transition>16.</task-node>17.18.<task-node name="approve">19.<task name="approve">20.<assignment actor-id="2"></assignment>21.</task>22.<transition to="end-state1"></transition>23.</task-node>24.25.26.<end-state name="end-state1"></end-state>27.28.29.</process-definition>这里的actor-id 是一个查看权限现在我们将流程定义发布上去Java代码1.package test.config;2.3.import java.io.FileInputStream;4.import java.io.FileNotFoundException;5.import java.io.InputStream;6.7.import org.jbpm.JbpmConfiguration;8.import org.jbpm.JbpmContext;9.import org.jbpm.graph.def.ProcessDefinition;10.11./**12.* 部署流程13.*14.*/15.public class Deploy {16.public static void main(String[] args) throws FileNotFo undException {17.JbpmContext jbpmContext = JbpmConfiguration.getI nstance().createJbpmContext();18.//取得流程定义19.InputStream is = new FileInputStream("D:\\workspace\ \fwk\\jbpm\\src\\test\\qj\\processdefinition.xml");20.ProcessDefinition pd = ProcessDefinition.parseXmlInp utStream(is);21.//部署流程22.jbpmContext.deployProcessDefinition(pd);23.24.jbpmContext.close();25.}26.}发布之后我们在数据库中已经可以看到相关的配置了。
整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)jbpmhibernatespringstrutsvariables任务整合例子(附完整的请假流程例子)。
1. jbpm4.4 测试环境搭建整合环境搭建3. jbpm4.4 基础知识4. 整合过程中常见问题的解决5. 请假流程例子(s2sh+jbpm )6. 总结及参考文章jbpm4.4 测试环境搭建刚接触jbpm 第一件事就是快速搭建环境,测试jbpm 所给的例子。
Jbpm 是一个工作流引擎框架,如果没有javaEE 开发环境,jbpm 也提供了安装脚本(ant ),一键提供安装运行环境。
同时也可以将jbpm 整合到eclipse 或者myeclipse 中。
快速搭建环境的步骤是:1. 安装jbpm-myeclipse 插件,这个插件随jbpm4.4 一起发布,位于jbpm-4.4/install/src/gpd 目录下,这个安装好后,就可以在myeclipse 中编辑流程图了(可视化流程设计)在myeclipse->help->myeclipse configuration centre->software->add site->add from archive file 选择jbpm-4.4/install/src/gpd 下的jbpm-gpd-site.zip安装这个插件应该注意断网,避免其到网上更新。
同时注意:需要选择双击每一项,确保每一项被加入到了(说明:事实上不用选完,带source 的部件不用选择,为了省事就全部选择了)提示:如果安装时不断网,jbpm 插件会自动到网上更新。
同时会弹出一个错误窗口,安装速度异常缓慢。
安装完成后,myeclipse 的references 菜单会变得面目全非。
2. 搭建jbpm 运行环境。
3 .然后配置jpdl 支持4. 确定是否配置jbpm 正确在myeclipse->new->other->关于myeclipse 中配置jbpm 请参考jbpm 的帮助文档,文档给的是在eclipse 下配置jbpm 。
JBPM指南JBPM(Java Business Process Management)是一个开源的、轻量级的、面向业务流程的工作流引擎。
它提供了一套完整的业务流程管理解决方案,包括流程的设计、执行、监控和优化等功能。
它的核心理念是将业务逻辑与技术实现相分离,使得业务流程的设计和执行更加灵活,同时也提高了开发的效率。
本指南旨在为培训机构提供JBPM的相关知识和实践指导,帮助培训机构更好地理解和应用JBPM。
一、JBPM概述1.JBPM的特点:JBPM是基于领域特定语言(DSL)的工作流引擎,支持面向业务流程的开发和管理,可以将复杂的业务流程拆解为多个简单的流程节点进行管理和执行。
2.JBPM的架构:JBPM的架构包括流程定义、流程实例和任务管理三个核心模块,同时还包括与其他系统进行集成的服务和界面模块。
3.JBPM的应用场景:JBPM可以应用于各种复杂的业务流程场景,如订单处理、审批流程、工作流程等。
二、JBPM的安装和配置2.JBPM的配置:介绍JBPM的配置文件,包括数据源配置、日志配置、用户管理等。
三、JBPM的流程设计和执行1. 流程定义:介绍使用JBPM Designer工具进行流程定义的方法,包括创建流程、定义流程节点和流程跳转等。
2.流程执行:介绍JBPM引擎的流程执行过程,包括启动流程实例、执行节点任务、变量传递等。
四、JBPM的任务管理和监控1.任务定义:介绍如何创建和定义任务节点,包括任务的输入输出参数、任务的执行者等。
2.任务管理:介绍如何查询和管理流程中的任务,包括任务的分配、处理和完成等。
3.流程监控:介绍如何监控流程的执行情况,包括查询流程实例状态、查询流程历史记录等。
五、JBPM的集成和扩展1.与其他系统的集成:介绍JBPM与其他系统的集成方法,包括使用RESTAPI、使用消息队列等。
2.JBPM的扩展:介绍如何扩展JBPM的功能,包括自定义节点、自定义任务等。
六、JBPM的最佳实践1.流程建模的最佳实践:介绍如何设计和优化业务流程,包括流程的可读性和可扩展性等。
第一天基本知识(1)工作流基本知识·什么是工作流·主要的应用场景、领域和行业·工作流管理系统的典型组成(2)JBPM是什么·具有哪些功能·具有哪些特点(3)JBPM的主要用法·如何进行流程定义·如何控制流程的流转·基于JBPM的流程流转的实现(4)实例开发·基于jbpm开发简单的流程应用的例子(包括定义的部署,实例的创建,实例的执行,变量的应用等)第二天JBPM的复杂用法(1)各类节点的用法·task-node·node·subprocess(子流程)·state(2)Event、Action和Timer的用法·Event的各种类型·Action的用法·Timer的部署方式(3)任务各种分派方式·同一任务分配给多个执行者(4)每种功能的应用第三天JBPM架构和实现原理(1)jbpm的整体架构原理·架构的分析·主要的构件及其职责的分析(2)工作流定义模型分析(3)运行期工作流实例模型分析(4)数据库表模型分析·表之间的关系以及每一张表的字段的涵义第四天基于JBPM的工作流管理系统实践(1)工作流平台的组成·分析讲解一般的工作流平台的组成要素·如何基于jbpm开发一套基本的工作流应用平台(2)流程定义管理·定义的管理:部署、更新·定义的编制和存储策略(3)流程实例监控·对实例执行情况的跟踪·对系统流程运行情况的统计·对流程实例的管理(4)与组织机构的接口·如何与第三方的组织机构模型进行封装(5)对jbpm的相关接口进行封装,构建自己的工作流应用平台·现场编写核。
JBoss jBPM 3.0下一页JBoss jBPM 3.0Workflow and BPM 实践目录1. 介绍1.1. 综述1.2. The JBoss jBPM 新手工具箱1.3. The JBoss jBPM 流程图形设计器1.4. The JBoss jBPM 核心组件1.5. The JBoss jBPM 控制台 web 应用1.6. The JBoss jBPM 身份组件1.7. The JBoss jBPM 日程安排程序1.8. The JBoss jBPM 兼容数据库包1.9. The JBoss jBPM BPEL 扩展2. 开始2.1.下载一览2.1.1. jBPM 32.1.1.1. 新手工具箱2.1.1.2. 核心引擎和身份组件2.1.1.3. 数据库扩展2.1.2. jBPM 流程设计器2.1.2.1. Eclipse 更新站点2.1.2.2. Eclipse 特点2.1.3. jBPM BPEL 扩展2.2. The JBoss jBPM 项目目录2.3. 公开 CVS 访问3. 指南3.1. Hello World 例子3.2. 数据库例子3.3. 上下问(context) 例子: 流程变量3.4. 任务分派例子3.5. 定制动作 Action 例子4. 面向图的程序设计4.1. 缺少的一环4.2. 图解表示和开发过程4.3. 习惯方法4.4. 什么是面向图的程序设计4.5. 组建块5. 发布5.1. 运行时的相关部分5.1.1. Java 运行环境5.1.2. jBPM 库5.1.3. 运行时需要的库5.2. 配置文件5.2.1. jbpm.properties 5.2.2.Hibernate cfg xml file 5.2.3.业务日历配置文件5.2.4. 变量映射配置稳健5.2.5. 转换器配置文件5.2.6. 缺省模块配置文件5.2.7. 流程文档解析器配置文件5.3. 在 Web 应用程序中使用 jBPM5.4. 在 EJB 包容器中使用 jBPM6. 永久化6.1. 永久化 API6.2. 数据库配置6.3. 管理事务6.4. jBPM 数据库6.4.1. Hibernate 集成6.4.2. 开发数据库是 hsqldb6.4.3. 其他数据库的支持6.4.4. 高速缓冲存储器6.5. Hibernate 定制7. 流程模型7.1. 综述7.2. 流程图(process Graph)7.3. 节点(Nodes)7.3.1. 节点(Node)职责7.3.2. 节点类型(Nodetype)任务(task-node)7.3.3. 节点类型(Nodetype) 状态(state)7.3.4. 节点类型(Nodetype) 判定(decision)7.3.5. 节点类型(Nodetype) 分叉(fork)7.3.6. 节点类型(Nodetype) 联合(join)7.3.7. 节点类型(Nodetype) 节点(node)7.4. 动作(Actions)7.4.1. 动作配置7.4.2. 动作引用7.4.3. 事件7.4.4. 事件传播7.4.5. Script7.4.6. 定制事件7.5. 超状态(superstate)7.5.1. 超状态变迁7.5.2. 超状态事件7.5.3. 分级名字7.6. 异常处理7.7. 流程组成7.8. 定制节点行为7.9. 图(Graph)执行8. 上下文(Context)8.1. 存取变量8.2. 变量的使用期限8.3. 变量永久化8.4. 变量范围8.4.1. 变量重载( overloading)8.4.2. 变量重写 (overriding)8.5. 瞬间变量8.6. 定制变量永久化9. 任务管理9.1. 任务9.2. 任务实例9.2.1. 任务实例生命周期9.2.2. 任务实例及图执行9.3. 委派(Assignment)9.3.1. 委派接口9.3.2. 委派数据模型9.3.3. "推"模型9.3.4. "拉"模型9.4. 泳道(Swimlanes)9.5. 任务事件9.6. 任务定时器9.7. 任务控制器9.8. 定制任务实例9.9. 身份组件9.9.1. 身份模型9.9.2. 赋值表达式9.9.2.1. 第一个术语9.9.2.2. 下一个术语9.9.3. 删除身份组件10. 调度程序10.1. 定时器10.2. 调度程序发布11. 业务日历11.1. 持久时间11.2. 配置12. 记录12.1. 建立日志12.2. 日志检索12.3. 数据仓库13. jBPM 流程定义语言 (JPDL)13.1. 流程档案13.1.1. 发布流程档案13.1.2. 流程版本(versioning)13.1.3. 流程转换(conversion)13.2. 代理13.2.1. jBPM 类载入器13.2.2. 流程类载入器(class loader)13.2.3. 代理配置13.2.3.1. 配置类型 field13.2.3.2. 配置类型 bean13.2.3.3. 配置类型 constructor13.2.3.4. 配置类型 configuration-property13.3. JPDL xml schema13.3.1. process-definition(流程定义)13.3.2. node(节点)13.3.3. common node elements(常见节点元素)13.3.4. start-state(开始状态)13.3.5. end-state(结束状态)13.3.6. state(状态)13.3.7. task-node(任务节点)13.3.8. process-state(流程状态)13.3.9. super-state(超状态)13.3.10. fork(交叉)13.3.11. join(联合)13.3.12. decision(判定)13.3.13. event(事件)13.3.14. transition(转换)13.3.15. action(动作)13.3.16. script(脚本)13.3.17. expression(表达式)13.3.18. variable(变量)13.3.19. handler(处理器)13.3.20. timer(定时器)13.3.21. create-timer(建立定时器)13.3.22. cancel-timer(放弃定时器)13.3.23. task(任务)13.3.24. swimlane(泳道)13.3.25. assignment(委派)13.3.26. controller(控制器)13.3.27. sub-process(子流程)13.3.28. condition(条件)13.3.29. exception-handler(异常处理)14. 安全14.1. 要做的14.2. 验证14.3. 授权15. TDD for workflow15.1. Introducing TDD for workflow15.2. XML sources15.2.1. Parsing a process archive15.2.2. Parsing an xml file 15.2.3.Parsing an xml String 15.3.Testing sub processes16. 可插入架构下一步Chapter 1. 介绍第一章:介绍前一页后一页第一章:介绍JBoss jBPM 是一个复杂的可扩展的工作流管理系统. JBoss jBPM 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起,, JBoss jBPM 就有了最强大和易扩展性的控制流机制.JBoss jBPM 只有最小的倚赖性可以很容易的作为 java 库来使用.当然它也可以用在吞吐量极为关键的J2EE 群应用服务器环境中.JBoss jBPM 可以同任何数据库配置可以部署在任何应用服务器上.1.1. 综述核心工作流和 BPM 功能被封状作为一个简单的 Java 库.这个库包括在 jBPM 数据库中存储,更新和检索流程信息的服务Figure 1.1. JBoss jBPM 组件一览1.2. JBoss jBPM 新手工具箱新手工具箱是包含了 jBPM 所有组件包在一个可下载的包里.这个包包括:•jbpm-server , 预先配置的 jboss 应用服务器.•jbpm-designer , jBPM 流程图形化设计器的eclipse 插件.•jbpm-db , jBPM 数据库兼容包 (参看下面).•jbpm , 核心 jbpm 组件包括库和本手册.•jbpm-bpel , JBoss jBPM BPEL 扩展参考.预配置的 JBoss 应用服务器有下列安装组件:核心 jBPM 组件, 打包作为 JBoss 服务档案•一个包括所有 jBPM 表格的完整数据库: 默认的 hypersonic 数据库包含所有的 jBPM 表格和已经定义的流程.•jBPM 控制台 web 应用程序这个可以用来为 jBPM 管理员.•jBPM 调度程序所有定时器的执行. 调度程序在新手工具箱里配置成了一个 servlet.这个 Servlet 会为产生一个线程来监视每个定时器的执行.•一个流程例子已经发布进了 jBPM 数据库.1.3. JBoss jBPM 图形化流程设计器JBoss jBPM 也包括一个图形化的流程设计工具. 这个设计器是用来创作商业流程的JBoss jBPM 图形设计器是一个 Eclipse 插件. 独立安装版本的设计器工具已经在开发路线图里了.图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员. 这样就可以在业务流程建模和实际执行之间平滑转换.插件可用做为本地的 update site(Eclipse 纯粹的 zip 文件),用做符合 Eclipse 软件更新机制的安装包.当然你也可以把它展开到你的 Eclipse 的安装目录.1.4.JBoss jBPM 核心组件JBoss jBPM 核心组件是纯粹的 Java(J2SE)软件,来处理流程定义和运行时的流程实例执行.JBoss jBPM 是一个 Java 库. 因此,它可以用在任何 java 环境比如 web 应用程序,Swing 应用程序,EJB,Web Service 等等. jBPM 库可以被打包作为 sateless session EJB(无状态会话 EJB). 这可以用做集群的发布具有极高的吞吐量可伸缩性. 无状态会话 EJB 根据J2EE 1.3 规范重新写过所以可以发布到任何应用服务器上.JBoss jBPM 核心组件被打包成一个简单的 Java 库文件.依赖你所使用的功能性, 库jbpm-3.0.jar 及一些相关的第三方的库比如. hibernate, dom4j 等等. 这些相关性在第五章发布有清晰的描述永久性方面, jBPM 内部使用 hibernate. 除了传统的 O/R 映射外, hibernate 也分析不同数据库系统的SQL 方言 ,这使 jBPM 在当前所有的数据库上都可以移植.JBoss jBPM API 可以从项目中任意编写的 Java 软件访问,比如 Web 应用程序,EJB,或 web Service 组件, 消息 bean 或其他 java 组件.1.5. JBoss jBPM 控制台 web 应用程序jBPM 控制台 web 应用程序是为两个目的服务的.首先,它作为流程执行运行时间任务生成的中央用户接口.其次, 它也是一个管理和监视控制台允许检查和操作运行中的流程实例.1.6. JBoss jBPM 身份组件JBoss jBPM 可以集成进任何包含公司用户和组织信息的目录. 对项目来说从那里得到组织信息组件不是容易得到的, JBoss jBPM 就包含这个组件. 身份组件使用的模型比通常的 servlet,ejb 和门户模型跟富有.更多信息可参考章节9.9, “身份组件”1.7. JBoss jBPM 调度程序JBoss jBPM 调度程序是用来监视和运行已经计划到时执行流程的定时器的组件.定时器组件被打包在核心 jbpm 库中, 但是它需要被发布到下面的任一环境中: 要不你把调度程序Servlet 来产生监视线程或者就必须用独立的 JVM 来调用调度程序的 main 方法.1.8. JBoss jBPM 数据库兼容包JBoss jBPM 数据库兼容包包括所有支持数据库的相关信息,JDBC 驱动程序和数据库初始化脚本.1.9. JBoss jBPM BPEL 扩展JBoss jBPM BPEL 扩展是独立的扩展包用来支持 BPEL(Business Process Execution Language 商业流程执行语言). BPEL 的基本要素是 xml Scripting 语言用来写其他 web server 的web services.前一页Up后一页JBoss jBPM 3.0 首页第二章:开始第二章开始前一页后一页第二章开始本章将带你如何获得 JBoss jBPM 的第一步并且提供立即运行的初始提示 .2.1. 下载包一览下面是当前可用的不同 jBPM 包清单. 这些包中的每一个都包含一个或多个可下载的文件. 同这些文件一起的包含一个描述它的内容及相关安装的指示所有下面下载的描述都可以在the sourceforge jbpm 下载页面.上找到2.1.1. jBPM 3这是主要的发行包,包括了主要核心引擎和数个额外的你使用 jBPM 的时候可能用得上的包.下载这个包的文件从这里.2.1.1.1. 新手工具箱如果你想尽快开始运行 jBPM,那么这就是你想下载的文件.工具箱包含了所有 jBPM 的模块以及图形化的设计工具在一个单独下载的文件里名字为: 'jbpm-starters-kit-<version>.zip'. 展开这个压缩文件到目录下阅读'readme.html' 获取更多信息. 有了这个工具箱,你可以立即开始进入第三章讲座.2.1.1.2. 核心引擎和身份组件下载文件名为 'jbpm-<version>.zip' 包含 jBPM 核心引擎也包含角色和组管理的身份组件. 开始工作前, 展开文件到一个目录下,然后 'jbpm-<version>'文件夹下找到包含重要的参考信息的'readme.html'文件2.1.1.3. 数据库扩展如果你想改变 jBPM 的默认数据库( Hypersonic HSQLDB), 你需要下载这个包. 文件名为'jbpm-db-<version>.zip' 包含你改变数据库需要的各种资源. 包含, 数据库建立脚本, hibernate 属性文件及数据库 JDBC 驱动程序. 如何操作的步骤包含在 'readme.html' 文件里,它在你展开这个压缩包的最上层的目录下.2.1.2. jBPM 流程设计器The second package contains the downloads related to the jBPM Graphical Proces Designer. The designer enables you to author your process definitions and to easily deploy them. You can find these downloads here.The designer is a plug-in for the Eclipse platform which is available for download either as a zipped Eclipse feature or as a zipped Eclipse update site. There is no difference in content, the only difference is in the way you have to do the installation.2.1.2.1. Eclipse 更新站点If you want to be absolutely sure that the designer installation goes smoothly, we recommend to use the update site mechanism together with a new Eclipse installation. Of cource the Eclipse version should match the downloaded update site archive. To obtain the Process Designer Update Site, you should download the file 'jbpm-gpd-site-<version>.zip'. Then follow the instructions in the 'readme.html' file included in the archives root folder to succesfully install the GPD.2.1.2.2. Eclipse 特性If you are tired of each time having to do a fresh Eclipse installation and you are willing to cope with some possible issues, you can try the feature download. In this case installation is as easy as extracting the archive into your Eclipse installation (make sure the included 'plugins' and 'features' folders end up in the same location of your Eclipse installation) overwriting the files and folders with the same name that are possibly already present. This installation is very easy, but you could run into incompatibility issues when you overwrite plugins already present in your installation because of other features that you did install. Though they have the same name it could happen that the versions of these colliding plugins are not equal, hence the possible incompatibilities. Download the file 'jbpm-gpd-feature-<version>.zip' to obtain the GPD feature. The installation instructions are repeated in the 'readme.html' file.2.1.3. jBPM BPEL 扩展第三个也是最后一个包包含 jBPM BPEL 扩展. 它只包含一个文件: 'jbpm-bpel-<version>.zip'. 你可以找到这个包在这里.要开始 BPEL 扩展,在 doc 目录下找到 User's Guide .2.2. JBoss jBPM 项目号码簿•professional support: JBoss is the company that backs this project with professional support, training and consultancy services.•user guide: is the document you're reading and serves as the main entry point into the project.•download descriptions: description of the downloadables•downloads: sourceforge download page for jBPM•forums: get in contact with the community, ask questions and discuss jBPM•wiki: extra information, mostly provided by the community•issue tracker: for submitting bugs and feature requests•roadmap: shows what to expect in the next versions•mailing lists: mailing lists are used for announcements•javadocs: part of the download in the doc/javadoc directory.•cvs: the details of how to get the jBPM sources from CVS2.3. 公开的 CVS 访问另外,你可以通过 JBoss jBPM cvs 服务器得到 jBPM服务器的信息如下•Connection type: pserver•User: anonymous•Password:•Host: •Port: 2401 (which is the default)•Repository path: /cvsroot/jbpm•Label: :pserver:anonymous@:/cvsroot/jbpm第三章. 讲座前一页后一页第三章. 讲座这个讲座将展示如何建造一个 jpdl 和如何使用 API 的方法来管理运行时的执行.这个讲座的方式是解释一系列的例子. 每个例子将集中关注特别的主题和额外的说明. 这些例子可以在jBPM 包的 examples 目录下找到.最好的方法就是学着来建立一个 Project 实验所给的例子.eclipse 用户注意:下载 jbpm-3.0-[version].zip 并且解压缩到系统. 然后从菜单 "File" --> "Import..." --> "Existing Project into Workspace". 点 "Next" 然后浏览 jBPM 根目录然后点击"Finish". 现在你的有了 jbpm 3 project 了. 你可以发现这个讲座目录在目录src/java.examples/... .你打开这些例子后,可以运行它们"Run" --> "Run As..." --> "JUnit Test"jBPM 包括一个图形设计器来产生例子中的XML. 你可以从这里下载和学习有关图形设计器的说明节2.1, “下载一览”3.1. Hello World 例子一个流程是有一个定向图(directed graph)来定义,由节点和变换组成 . hello world 流程有 3 个节点.如下看如何组合起来, 我们先开始一个简单的流程不使用图形设计器. 下面的图形表示 hello world 流程:Figure 3.1. hello world 流程图public void testHelloWorldProcess() {// 这个方法展现流程定义和流程执行的定义// 流程定义有 3 个节点.// 一个未命名的开始状态 start-state,一个状态 's'// 一个结束状态名字为'end'.3.2. 数据库例子jBPM 一个基本的特性是当流程处于等待状态时候可以把流程执行永久化到数据库中 . 下一个例子想你展示了如何存储一个流程实例到 jBPM 数据库中. 例子给出一个将会发生的上下文.分开的方法用来建立不同部分的用户代码. 比如一部分用户代码在 web 应用程序中开始一个流程并永久化执行到数据库中.然后,message drive bean 从数据库中载入流程实例并继续它的执行jBPM 永久化的更多内容可以参看第六章, 永久化.。
JBPM教程几个名词解释:Process definition称为流程定义,由点和线组成,点叫node,是节点,线是transition,是流转。
状态节点表示一种等待状态。
Token令牌,就是从一个节点分支,也叫Fork,往往与jion一起成对出现,join就是连接分支节点的会合。
这个分开后就立即会会合。
Decision节点,条件判断,例如请假大于等于5天,或者小于5天的。
任务节点:task node. 就是最多的有操作,有参与者的,有外界用户参与的。
在创建的ProcessInstance对象的同时,会创建一个对应的ContextInstance对象,这个对象负责存放各种流程实例变量,ContextInstance是流程实例变量的容器. 流程实例比如:张三的请假单的流程。
流程定义:比如:请假单流程。
Token令牌:整个流程有一个rootToken,底层还有一个节点的引用,一直指向一个节点。
设计流程时,每个工具的用处:Node就是个普通节点,没有行为,需要我们自己定义。
TaskNode节点是最常用的工具,process state:用来连接两个流程的。
例如:到了一个子节点要启动一个新流程。
Superstate:讲一部分节点连接在一起定义成一个个的阶段。
想创建一个流程:第一:用jbpm创建所需要的数据库表,这是空表,只是建了一些流程需要用到的表而已. JbpmConfiguration.getInstance().createSchema();第二:根据流程定义文件,解释得到流程定义对象,把流程定义持久化到数据库.:context.deployProcessDefinition(def);这样就会在第一步建的三十二张表里面创建部分的数据记录:例如:Jbpm_processdefinition,jbpm_node,jbpm_task,jbpm_transition等等一些表。
一个流程实例对应多个任务实例:某个人的请假单,在某个taskNode里面有两个task节点,就会创建两个taskInstance来和这个instance对应.--------领航致远视频里面的jbpm相关软件包括:Jbpm单独的suite套件,eclipse3.2,spring-module(jbpm的sping插件jbpm提供),单独解压jbpm的suite得到它的全文件:Jbpm运行是需要数据库支持的,db就是为不同数据库生成表的。
jbpm工作流入门教程1.jBPM的简单介绍jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。
参考/products/jbpm2.jBPM和myeclipse的冲突当eclipse安装了myeclipse和jBPM时候,可能有冲突,具体表现在jBPM 的流程设计器不能在eclipse中使用。
3.Hibernate连接mysql数据库的一般参数下面的配置参数,根据需要可以修改:jbpmtest是mysql中的schema的名字;GBK是字符集,可以根据需要修改;username=root,mysql数据库的用户名是root;password=mysql,mysql数据库的用户密码是mysql;hibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.connection.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding= GBKername=roothibernate.connection.password=mysqlhibernate.show_sql=truehibernate.c3p0.min_size=1hibernate.c3p0.max_size=34.Hibernate连接Oracle数据库的一般参数hibernate.dialect=org.hibernate.dialect.Oracle9Dialecthibernate.connection.driver_class=oracle.jdbc.driver.OracleDriverhibernate.connection.url=jdbc:oracle:thin:@localhost:1521:orcl ername =jbpmhibernate.connection.password=jbpm5.为jBPM创建数据库表等内容5.1.为mysql创建数据库以及数据内容JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();这2个语针对mysq有效.5.2.为oralce创建数据库以及数据内容JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();上面的语句对oralce无效。
模型目录jBPM\jbpm_database\jBPM_oralce10g.pdm是jBPM的Oralce模型,包含对应的Sequence的信息.需要在数据库中创建Sequence name=hibernate_sequence/wiki/Wiki.jsp?page=JbpmOnOracle5.3.流程信息保存到数据库JbpmSessionFactoryfactory=JbpmSessionFactory.buildJbpmSessionFactory();JbpmSession session=factory.openJbpmSession();GraphSession graphSession=session.getGraphSession();session.beginTransaction();///new ProcessDefinition实例ProcessDefinition myProcessDefinition=null;ProcessInstance processInstance=new ProcessInstance(processDefinition);processInstance.getContextInstance().setVariable("myvar","xxx");///graphSession.saveProcessDefinition(myProcessDefinition);mitTransaction();session.close();jBPM和Hibernate,MySQL的使用中会遇到字符集的问题.需要注意几个地方。
5.4.在Mysql安装过程指定字符集在Mysql安装过程中指定相应的默认字符集是GBK5.5.Hibernate.properties文件中的字符集设置hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncodin g=GBK5.6.hibernate.cfg.xml文件中的字符集设置<property name="hibernate.connection.url">jdbc:mysql://192.168.1.2/jbpmtest</property>5.7.MySQL的配置文件的修改:my.ini中default-character-set=GBK注意有2处需要修改6.为流程定义变量分成3种流程变量全局变量(全局流程变量)全局临时变量(全局流程临时变量)局部变量(流程某个接点内有效的变量)@see org.jbpm.context.exe.ContextInstance目前还没有使用过局部变量(流程某个接点内有效的变量)流程变量的定义6.1.流程变量的类型·ng.String·ng.Boolean·ng.Character·ng.Float·ng.Double·ng.Long·ng.Byte·ng.Short·ng.Integer·java.util.Date·byte[]·java.io.Serializable·classes that are persistable with hibernate所有基本类型的包裹类型,以及实现了Serializable的类型都可以作为流程参数变量使用,注意参数类不能是一个类的内部类或者属性类(除非包含参数类的类实现了Serializable接口)参考org.jbpm.context.exe.VariableInstance6.2.流程变量的使用l变量的定义和获取voidContextInstance.setVariable(String variableName,Object value); voidContextInstance.setVariable(String variableName,Object value,Token token); Object ContextInstance.getVariable(String variableName);Object ContextInstance.getVariable(String variableName,Token token);l Variables can be deleted withContextInstance.deleteVariable(String variableName);ContextInstance.deleteVariable(String variableName,Token token);6.3.Variable lifetime一个变量在被定义后,在变量从ContextInstance删除前,都可以被访问。
当变量被删除后,去获取该变量将返回为空。
6.4.自定义类的实例作为流程变量如果一个类的实例要作为流程变量使用,该类需要实现java.io.Serializable接口,并且定义序列化版本.//一个可以作为流程变量使用的类class Wdz implements Serializable{//为类指定序列化版本号private static final long serialVersionUID=1L;private String name="wdz";private int age=10;public String toString(){return"name="+name+",age="+age;}}上面的例子中,如果把类Wdz作为类WdzParent内部类使用,然后当成流程变量使用,那类WdzParent必须也实现Serializable接口,否则会有问题.6.5.Transient variables流程的历史变量是不能持久化的,作用范围是对整个流程全局有效的。
在ContextInstance类内部,采用的是一个Map来存储TransientVariable的信息参考代码org.jbpm.context.exe.ContextInstance的源代码。
主要的相关方法publicvoid deleteTransientVariable(ng.String name)publicvoid setTransientVariable(ng.String name,ng.Object value)public ng.Object getTransientVariable(ng.String name)6.6.Variables overloading当一个变量和流实例关联(变量名字=”wdz”,value=”test”),如果在设置一个变量(变量名字=”wdz”,value=new Integer(10)),那最后变量(变量名字=”wdz)的值是Integer(10)。
这称之为overload.6.7.Variables overriding如果父流程有变量A(值=”value1”),子流程又定义了变量A值=”value2”,那在子流程范围内,获取变量A的值,那结果是值=”value2”。
这是遵循一般语言的局部变量在它的局部范围内override上级变量。