jBPM4.3简单深入理解(一)
jbmp入门指南
按步骤来:
1)打开命令控制台(即Windows下的cmd),进入目录 ${jbpm.home}/install。
2)运行脚本(当然需要配置好Ant命令的路径)ant demo.setup.tomcat或者ant demo.setup.jboss。
没了,就这么简单的两步。
实际上这两步帮您做了如下工作:
这时候,您也可以使用jBPM控制台:http://localhost:8080/jbpm-console/,利用表2-1中所列用户之一进行登录。
表 2-1 jBPM控制台用户
注意:jBPM4.3控制台目前存在一个问题——对于一些比较慢的机器,在初始化流程报表时,控制台的失效时间太短了,所以当您第一次请求流程报表时,会出现超时,控制台会崩溃。注销,然后再次登录,就可以避过这个问题。同时,这个问题已经提交到了官方JIRA – JBPM-2508。
2)安装jBPM需要执行Ant脚本,所以需要Apache Ant 1.7.0或更高版本。可以在 /bindownload.cgi 获取到最新版本的Ant。
快速开始吧
如果作为一名初学者,拿到jBPM后,您最想做什么?没错,快速地安装好,开始运行。
事实上,jBPM在每一次大版本号变迁时的改动才是革命性的,例如jBPM3到jBPM4;而jBPM小版本号的变迁则是相对有限的改变,几乎不会需要您重新学习什么,例如jBPM4.1到jBPM4.3,改动不大,只要关注新版本的“What’s new”即可,也就是说:掌握了jBPM4.3,jBPM4.X对您就不在话下啦!
1)把Tomcat安装到${jbpm.home}/apache-tomcat-6.0.20目录下。
2)把jBPM安装到Tomcat中。
jbpm4.3简单小例子(一)
最近学习jbpm4.3.一个工作流框架。
准备工作请参考jbpm4.3用户指南。
注意的地方就是jbpm.hibernate.cfg.xml里配置数据库连接。
另外在jbpm4.3zip包下install的db里执行对应数据库的初始化脚本.start...关键对象ConfigurationProcessEngineRepositoryServiceExecutionServiceTaskServiceHistoryServiceManagementService其用法请参考用户指南.本例子流程图如下:A用户提出请假申请--》B用户审批--》C用户审批。
流程结束。
这个例子只用到两张自定义表,用作演示,一张为用户表,仅有username和password字段。
用作登录验证另一张为请假表单表,记录每一例请假表单,有id,title,content,process_id字段.其中process_id和jbpm4的流程实例关联。
index.jsp关键代码如下:----------------------------------------------------------------------------------------------<form action="login" method="post"><label for="username" >用户名:</label><input type="text" name="username" id="username" /><br/><label for="password" >密码:</label><input type="password" name="password" id="password" /><br/><input class="submit" type="submit" value="登录" /></form>----------------------------------------------------------------------------------------------action对应为登录验证的login servlet,这个比较简单,就是从user表中找记录登录成功后跳转至welcome.jsp页面,关键代码如下:<div><div class="navigate"><ul><li><a href="todolist" target="result" onclick="javascript:document.getElementById('ifr').src=todolist">代办事项</a></li><li><a href="postleave" target="result" onclick="javascript:document.getElementById('ifr').src=postleave">请假申请</a></li><li><a href="deployleave" target="result">部署请假流程</a></li><li><a href="logout">注销</a></li></ul></div><div class="main"><iframesrc="" width="99%" height="99%" frameborder="0" id="ifr" name="result"></iframe></div></div>页面分为左右两部分,左边为导航区,点击相应链接,右边显示相应模块点击请假申请,右边弹出请假表单,填写完成后,点击提交,即启动一个请假流程实例。
jBPM开发入门指南
jBPM开发入门指南jBPM开发入门指南(1)工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。
但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。
我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。
过去我们用的工作流引擎是 shark ,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。
于是经研究决定,将工作流引擎由 shark 换成 jBPM 。
jBPM 之前是一个开源软件,后加入 JBoss 组织。
正好我们公司也是用 JBoss 的。
不过 jBPM 并没有绑定在 JBOSS 上, Tomcat 等也可以使用它。
jBPM 的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。
所以一些过去的资料可能已经不适用了。
于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。
注:本文使用的 jBPM 版本为 3.1.1环境准备1、安装JDK所有 JAVA 开发第一个需要安装的,没什么好说的。
记得把系统变量 JAVA_HOME 设上。
2、安装AntAnt 是使用 jBPM 必须的一个工具。
jBPM 中的很多操作都要用到 Ant 。
安装方法:( 1 )先下载: /dist/ant/binaries/ ,选一个如: apache-ant-1.6.5-bin.zip 。
( 2 )解压到 D:\ant (当然其他目录也可以)。
( 3 )设置如下系统变量: ANT_HOME=d:\ant 。
( 4 )把 %ANT_HOME%\bin 加入到系统变量 PATH 中。
3、安装EclipseEclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。
关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.24安装 jBPMjBPM 的下载地址: /products/jbpm/downloadsz JBoss jBPM 是 jBPM 的软件包z JBoss jBPM Starters Kit 是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于 JBoss 的 jBPM 示例、一些数据库配置文件示例。
jbpm原理
流程事件所属任务,对应JBPM_TASK
JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类)
字段名 ID_
字段含义
主键 √
外键
流程代理标识
CLASSNAME_
流程代理类名称
CONFIGURATION_
流程代理类配置信息
CONFIGTYPE_
流程代理类配置类型
PROCESSDEFINITIO N_
字段含义
主键
外键
ID_
流程任务控制器标识
√
TASKCONTROLLE RDELEGATION_
流程任务控制器对应的代理, 对应JBPM_DELEGATION
√
JBPM_VARIABLEACCESS:流程变量表
字段名 字段含义 主键 外键
ID_
流程变量标识
√
VARIABLENAME_
流程变量名称
ACCESS_
EXCEPTIONHANDLERINDEX_
?
JBPM_EVENT:流程事件表
字段名 ID_ EVENTTYPE_ 流程事件标识 字段含义 主键 √ 外键 流程事件类型名称 流程事件所在的图形节点类型
TYPE_
"A" :Task "C" :ProcessState "D" :Decision" "E" :EndState" "F" :Fork" "J" :Join" "K" :TaskNode" "N" :Node" "P" :ProcessDefinition" "R" :StartState" "S" :State" "T" :Transition" "U" :SuperState"
JBPM工作流介绍
JBPM工作流介绍JBPM(Java Business Process Management)是一个基于Java的开源工作流引擎,用于创建、部署和执行业务流程。
它提供了强大的工作流管理功能,允许用户定义和自动化业务流程,并在整个过程中进行监控和控制。
本文将详细介绍JBPM的特点、工作原理以及其在实际应用中的优势。
JBPM具有以下几个主要特点:2.可扩展性:JBPM采用基于规则的扩展机制,允许用户根据实际需求来扩展工作流引擎的功能。
用户可以通过编写自定义的规则和脚本来实现特定的业务逻辑,从而满足不同的工作流需求。
这种灵活的扩展机制使JBPM能够适应各种复杂的业务流程。
3.可靠性:JBPM提供了持久化机制,能够将工作流程的执行状态和数据保存到数据库中。
这样当系统出现故障或中断时,用户可以通过恢复数据来保证工作流程的连续性和完整性。
同时,JBPM还支持事务处理,能够保证工作流的执行过程是可靠和一致的。
4. 跨平台性:JBPM是基于Java开发的工作流引擎,因此可以在各种不同的操作系统和硬件平台上运行。
无论是在Windows、Linux还是其他操作系统上,JBPM都能够提供稳定和可靠的工作流引擎服务。
JBPM的工作原理如下:其次,用户可以定义节点的行为。
每个节点都可以关联一个或多个规则,用于处理节点的进入和离开条件。
规则可以是简单的判断条件,也可以是复杂的业务逻辑。
这些规则在节点的执行过程中起到了决策和控制的作用。
然后,用户可以部署和执行工作流程。
工作流程可以被部署在JBPM的运行环境中,并通过API或Web界面来启动和执行。
当工作流程被启动时,JBPM会根据定义的节点和规则来自动化处理工作流程,并将节点的执行情况和结果反映到工作流程的执行状态中。
最后,用户可以监控和控制工作流程的执行。
JBPM提供了监控和控制界面,用户可以通过这些界面来实时查看工作流程的执行状态和结果。
同时,用户还可以通过界面来控制工作流程的执行,例如,暂停、恢复、终止等操作。
jBPM4.4详细讲解
jBPM4.4一、什么是jBPMJBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。
同时它还能被部署在任何一款JAVA应用服务器上。
java Business Process Management :工作流,工作流引擎注:记得j小写,因为j代表java,与Log4j中j一样工作流管理系统不止一中,如还有Intaliol BPMS …但JBoss jBPM灵活性且扩展性高。
jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布2.0,并在这天加入了JBOSS组织-→被RedHat公司二、能干什么提供工作流的实现,帮助更好的进行BPM三、jBPM有什么,简介jBPM的Service API 各种服务1:ProcessEngine:流程引擎。
并不负责具体的业务,而是用于获取各种Service。
2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。
3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。
4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。
5:HistoryService:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。
比如:历史流程实例,历史活动实例等。
6:IdentityService:用于操作用户、用户组以及成员关系的服务7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。
四、Myeclipse8.5 搭配开发环境1.jbpm-4.4.zip 下载完2.myeclipse→help→Myeclipse Configuration Center →add…….3.找到\jbpm-4.4\install\src\gpd\jbpm-gpd-site.zip 安装这个插件4.记得不要联网安装,不要选source文件5.安装完后window→JBoss jBPM→runtime Location→add 添加jbpm的路径6.添加lib下所有jar包,如果你使用的是tomcat6.0则:要把Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉项目中就不要再导上面三个包五、修改配置文件1、将example中的下列配置文件拷贝到java项目的src目录下:jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.mail.properties、jBPM.mail.templates.xml、process_forms.css2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的hibernate.cfg.xml,这里,要修改为连接我们的数据库。
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.流程建模的最佳实践:介绍如何设计和优化业务流程,包括流程的可读性和可扩展性等。
01.JBPM介绍
1、构建JBPM数据库 2、流程模版与流程实例 3、Token 4、流程上下文 5、JPDL表达式 6、流程节点 7、任务 8、任务调度 9、流程的同步于异步 10、流程设计器 11、JBPM3.0与JBPM4.0的差异 12、JBPM4.0的特性
欢迎访问我们的官方网站
北风网项目培训
JBPM工作流
第一讲 JBPM介绍
讲师:阳光
ቤተ መጻሕፍቲ ባይዱ
JBPM是一个工作流引擎的套件,就是一个开源的工作流插件(一种产 品),以动作类、数据库逻辑、XML配置文件、图形化设计器组成,通 过开发工具Eclipse与此JBPM插件的结合进行项目中业务流程的开发。
JBPM是一款开源的工作流产品,它没有采用BPEL或WFMC标准去实 现工程引擎,采用的是一种轻量级的XML结构的流程描述语言JPDL。 相比WFMC和BPEL两种标准而言,JPDL语言更加简单,也更容易读懂。 JBPM使用Hibernate作为持久层工具在任何主流数据库下使用,使用 JBPM时只需要吧相关的jar和几个配置文件放在我们开发的J2ee项目中 即可,不需要再另外配置一个流程服务器,简单易懂。
21.JBPM4.0与JBPM3.0差异(一)
北风网项目培训
JBPM工作流
第二十一JBPM4.0与JBPM3.0差异(一)
讲师:阳光
1、内容的改变,异常的处理 2、更加简化、清晰 3、group的加入
4、jbpm内部对象的变化,连接更加密切 5、XML文件的内容整合
Jbpm3.0
jbpm4.0
在 jbpm3 中是基于 Event-Action 机制来实现事件与动作的触发的,但 是在 jbpm4 中则采用观察者模式来触发事件的。所有用户自己定义的 动作,全部要实现 EventListener 接口,这些动作作为监听者(就是 事件 Event 的观察者 Observer )注册到相应的流程定义对象上 ( ProcessElement 或者 Node ),而事件 Event 则作为被观察的对 象(实际上就是 Observerable ),实际上在 jbpm4 中专门定义出了 一个对象 ObservableElementImpl ,流程定义中的 NodeImpl 、 TransitionImpl 、 ProcessDefinitionImpl 均继承自此对象,因此这些 元素本身就可以作为 Observerable 而被观察者来监控。
jbpm4工作流详解
jbpm4⼯作流详解jBPM4的学习流程 1>jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息 2>对jbpm4的数据库表简单介绍 3>通过ProcessEngine类的贯穿来获取服务接⼝(Service API)来认识所有的常⽤类 4>对流程定义语⾔中活动⼏个常⽤的介绍 5>事件的介绍 JBPM:部署流程定义 jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息直接将业务流程部署到数据库中。
它不仅可以部署单个业务流程,也可以部署⼀组业务流程归档到服务器上。
jbpm⾸先扫描业务流程归档中所有以.jpdl.xml结尾的⽂件,并解析,然后⽤来发起流程实例,业务流程归档中所有其他资源也会在部署过程中被持久化到数据库中。
所有这些资源被统⼀编号保存在数据库表jbpm4_lob中我们可以通过jbpm4提供的RepositoryService.getResourceAsStream API随时访问这些资源。
jbpm4的数据库表简单介绍JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST 流程活动(节点)实例表JBPM4_HIST_DETAIL 流程历史详细表JBPM4_HIST_PROCINST 流程实例历史表JBPM4_HIST_TASK 流程任务实例历史表 JBPM4_HIST_VAR 流程变量(上下⽂)历史表JBPM4_ID_GROUP ⾓⾊表 JBPM4_ID_MEMBERSHIP ⽤户⾓⾊表 JBPM4_ID_USER ⽤户表 JBPM4_JOB 定时表 JBPM4_LOB 存储表JBPM4_PARTICIPATION 参与者表 JBPM4_SWIMLANE 泳道表 JBPM4_TASK 任务表 JBPM4_VARIABLE 上下⽂表(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储上传⼀个包含png和jpdl.xml的zip包的相关数据 jbpm4_deployment表多了⼀条记录 jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion jbpm4_lob 表多了⼆条记录,保存流程图png图⽚和jpdl.xml (4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST 分别存放的是Process Instance、Activity Instance的历史记录。
jbpm工作流全程笔记
jbpm工作流全程笔记1. 工作流<1> 工作流(Workflow):就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。
简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。
工作流是针对工作中具有固定程序的常规活动而提出的一个概念。
通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。
<2> 工作流就是工作流程的计算机化,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
<3> 通俗的说,就是多个人在一起合作完成某件事情。
<4> 工作流可实现业务或公文的申请、审批、会签、登记、操作等环节的管理,可将工作过程进行记录,便于日后检查。
并实现数据的规范化录入、查询、统计和存档。
OA(办公自动化)主要技术之一就是工作流。
2. 工作流管理系统(Workflow Management System, WfMS)<1> 主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。
工作流需要依靠工作流管理系统来实现。
<2> 工作流管理系统是定义、创建、执行工作流的系统,应能提供以下三个方面的功能支持:①定义工作流:包括具体的活动、规则等;②运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度;③运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。
3. JBPM,全称是Java Business Process Management<1> JBPM是一种基于J2EE的轻量级工作流管理系统,jBPM是公开源代码项目, 官方主页为:/doc/fe2528fc03020740be1e650e52ea551811a6c954.html /jbossjbpm<2> Jbpm的使用** 步骤* 编写流程定义(定义规则);* 部署流程定义到系统中;* 执行流程(使用指定的流程定义);①编写流程定义举例:员工报销费用的流程描述:员工需要先填写报销单据;交给其经理进行审批;审批(通过)后到财务去领款。
jbpm 工作原理
jbpm 工作原理
jbpm是一个流程引擎,它的工作原理主要包括流程定义、流程实例化、任务执行和流程控制等几个方面。
首先,jbpm通过一个XML文件定义流程模型。
这个XML文件描述了流程中各个节点、连线以及节点之间的关系。
流程模型定义了流程的结构和行为,包括流程的开始节点、结束节点以及各个中间节点。
节点之间的连线定义了流程的执行顺序。
接下来,将这个流程模型实例化为一个流程实例。
流程实例是流程定义的一个具体执行实体,每个流程实例都有自己的上下文环境和状态信息。
在流程实例化的过程中,jbpm会根据定义的流程模型创建相应的节点和连线,并将节点按照定义的执行顺序连接起来。
然后,jbpm根据流程模型中的节点定义执行具体的任务。
每个节点都代表了一个可执行的任务或者一个状态。
任务的执行者可以是人工操作,也可以是系统自动执行。
任务完成后,jbpm会根据定义的流程模型继续执行下一个节点,直到流程执行完成。
最后,jbpm在流程执行过程中,可以根据一些控制条件来控制流程的走向。
例如,可以根据某个节点执行结果来决定流程的分支,或者根据某个条件判断来决定是否继续执行下一个节点。
这样可以实现灵活的流程控制,适应不同的业务需求。
总而言之,jbpm通过流程定义、流程实例化、任务执行和流
程控制等环节,实现了流程引擎的工作原理,可以有效地管理和控制复杂的业务流程。
新版JBPM的简单介绍
新版JBPM的简单介绍
作者:JBPM 来源:/
JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
jBPM是公开源代码项目,它使用要遵循LGPL(GNU Lesser General Public License )和EULA(JBoss End User License Agreement)协议。
该版本最重要的改进包括:
·jBPM 5.1基于Web的设计已支持所有的BPMN 2.0结构,也支持专业领域的节点,以及可以嵌入等。
·一个新的jBPM例子模块包含了展示人工任务(包括数据传递和任务形式)、循环、规则整合等大量的实例。
·改进了测试和调试功能,因此您可以更轻松地测试程序。
·文档已被重构,更新和扩展,包含了新的概览和入门章节等。
·新的BPMN 2.0 Eclipse插件已经取得了重大进展,这种新的编辑器未来可以支持完整的BPMN 2.0规范。
部分较小的改进,如下:
·简化了与人工任务(和形式)之间的数据传递
·扩展了支持循环计时的BPMN2引擎
·支持多线程。
jbpm3和jbpm4的区别
第3 章从jBPM3转换到jBPM43.1. jBPM 4的目标在构建jBPM 4时,我们追求两个主要目标:提升保障:jBPM3时,我们仅仅从社区反馈来提升稳定性和扩展性。
jBPM4时,我们确定了要支持哪些环境的配置。
那些环境都放在JBoss OA实验室的持续集成环境中。
现在构建支持所有这些环境和配置,所以对我们来说更容易重现和检测它们提出的问题。
覆盖率也保证jBPM4有更长的寿命。
降低入门要求,提升下一级的水平:在jBPM4中,我们很清晰的区分了普通应用和高级应用之间的区别。
所以很容易就可以入门,很难(但是还是可能的)提高开发者需要拼命敲键盘了。
3.2. 知识范围为了在基本应用和高级应用之间做清晰的分隔,API已经完全重构了。
基本应用覆盖了公共API。
相同的API也被所有的已支持的环境支持。
jBPM4和jBPM3中的包是严格分开的。
为了提供完全的DB迁移,我们提供了一个策略允许jBPM3和jBPM4实例可以同时运行。
表名的前缀由JBPM_改为JBPM4_。
还没有功能可以把jBPM3运行时的数据库转换为jBPM4. 我们不确定是否可以在下一个版本中创建一个这样的工具。
一个主要的原因是,任何对DB内容进行数据迁移的QA 都不可能让项目组来承担。
此外,这里还有一些功能jBPM4还没有支持。
它们按照可能和不可能的顺序,在jBPM4中实现。
U用户提供事务性资源,比如jDBC连接或hibernate连接。
异常处理器临时变量身份认证表达式,来计算任务的分配人任务的变量到参数的转换3.3. 流程转换工具在很多情况下,很多工作已经使用JDPL3的流程定义设计过了。
为了避免完全使用手工方式将这些流程转换到JPDL4的格式,jBPM发布包中包含了一个子目录,叫做migration,它包含了一个命令行工具,可以把转换JPDL3流程定义文件转换到JDPL4的xml文件。
转换后的流程可能没法运行,jBPM4的特性可能还是被丢掉了,或者转换器本身还没有实现。
深入浅出 jBPM 电子书
深入浅出jBPM 电子书第1章介绍JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。
JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有了非常强大和可扩展的控制流机制。
JBOSS jBPM只有最小的依赖,可以象使用java库一样非常容易的使用它。
另外,也可以通过把它部署在J2EE集群应用服务器中,用在吞吐量极为关键的环境中。
JBOSS jBPM可被配置为任何数据库,并且可以部署到任何应用服务器。
1.1 概述核心工作流和BPM功能被打包为一个简单的java库,这个库包括一个存储到数据库、从数据库更新和获取流程信息的服务。
图1.1 JBOSS jBPM组件概观1.2 JBOSS jBPM入门套件入门套件是一个包含了所有jBPM组件的下载包,包括:l Jbpm-server,一个预配置好的jboss应用服务器。
l Jbpm-designer,图形化设计jBPM流程的eclipse插件。
l Jbpm-db,jBPM数据库兼容包(见下文)。
l Jbpm,核心jbpm组件,包括库和本指南。
l Jbpm-bpel,JBOSS jBPM BPEL扩展参考。
预配置好的JBOSS应用服务器安装了下列组件:l核心的jBPM组件,被打包为了一个服务档案。
l一个包括jBPM库表的集成数据库:默认的hypersonic数据库包含了jBPM表,另外还包含一个流程。
l jBPM控制台web应用程序,可以由流程参与者使用,也可以由jBPM管理员使用。
l jBPM调度程序,用于定时器执行。
调度程序在入门套件中被配置为一个servlet,这个servlet 将产生一个线程来监视和执行定时器。
l jBPM命令执行器,用于命令的异步执行。
命令执行器也被配置为一个servlet,这个servlet 将产生一个线程来监视和执行命令。
l一个流程实例,已经被部署到了jBPM数据库中。
JBPM4中常用概念总结
1. 流程定义(Process Definition)流程定义是记录在xml文件中的对流程的描述,它包含唯一的流程开始节点和多个流程功能节点,每个节点之间使用transition进行连接。
Process Definition使用id, key和version进行标识,jBPM中可能包含多个key 值相同的Process Definition,key值相同的Process Definition会拥有不同的version 值,而id是使用key-version的形式用来表示唯一的Process Definition的。
jBPM中使用RepositoryService来控制流程定义的发布,浏览,删除等操作。
2. 流程实例(Process Instance)以流程定义为蓝本生成的流程实例,在jBPM属于Execution的一种。
当我们执行start时,会根据流程定义启动一个新的流程实例,然后它会根据流程定义里的节点运行,在遇到state或task时停顿,等待外部用户调用signal,最后会执行到end 节点,结束整个流程。
jBPM中只允许有一个start节点,所以每个流程都是单一入口的,jBPM4中可以允许有多个end节点,所以我们可以在任意位置结束流程。
jBPM中使用ExecutionService来控制流程实例的启动,浏览,执行,删除等操作3. state节点状态结点是一个典型的等待状态。
同任务结点不同的是,状态结点不会向任务列表添加任务实例。
当业务进程需要等待外部系统的干预时,这种结点是很有用的。
(需要外部系统干预,但又不是让人去干预)假设如下情况:在进入该结点时,通过node-enter事件向外部系统发送一个消息,然后结点进入等待状态;当外部系统完成处理,并回送一个消息,这将导致触发一个signal()方法的运行,该方法重新激活正在等待的流程继续下行jBPM中使用ExecutionService来控制对state的signal操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jBPM4.3简单深入理解(一)
工作流(系统)主要概念
工作流引擎:工作流的核心组件,对流程实例、任务实例以及其状态进行管理
流程定义:预先定义的业务流转逻辑
流程实例:业务的一次实际流转过程
参与者:任务的执行者
活动(任务):组成流程定义的节点
活动实例:组成流程实例的元素
流转:从一个节点到另一个节点这一行为
工作列表:当前需要办理的任务集合
开发步骤
1)根据实际应用场景创建流程文件;
即编写*.jpdl.xml文件
2)部署流程文件或流程资源到系统中;
3)执行流程(使用指定的流程定义);
3.1)启动流程实例
3.2)获取任务
3.3)开始任务
3.4)结束任务
3.1到3.4是办理一个任务的过程,流程的执行就是启动流程实例+一次次办理任务的过程。
流程在实际应用场景中的一些操作
一.流程的定义管理
流程定义的发布、查询、删除、暂停、恢复
二.流程实例管理
流程实例的启动、显示流程图、执行、暂停、恢复
三.任务管理
分配任务、收回任务、定时任务、任务与表单绑定
四.流程的历史查询
任务的历史、流程实例历史、活动历史
---下面开始进行代码描述------
在详细描述之前,我们先来了解一下流程引擎ProcessEngine
引用
One ProcessEngine object can be used by all reque sts and threads in an application. Here’s how you can obtain a ProcessEngine把这个交给spring去管理
Java代码
<beanid="springHelper"class="org.jbpm.pvm.internal.processengine.Spring Helper"/>
<beanid="processEngine"factory-bean="springHelper"factory-method ="createProcessEngine"/>
我们需要的一些服务都是通过流程引擎得到的
RepositoryService repositoryService = processEngine.getRepositoryService(); ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService managementService = processEngine.getManagementService();
一.流程的定义管理
1.1流程定义的发布(即部署流程文件或流程资源到系统中)
流程定义*.jpdl.xml的内容可以从文件,网址,字符串,输入流或zip输入流中获得
Org.jbpm.api.newdeployment代码
public interface NewDeployment extends Deployment {
...
/** adds a resource as a string */
NewDeployment addResourceFromString(String resourceName, String string);
/** adds a resource as a string */
NewDeployment addResourceFromInputStream(String resourceName, InputStream inputStream);
/** adds a resource as a resource from the classpath */
NewDeployment addResourceFromClasspath(String resourceName);
/** adds a resource as a url */
NewDeployment addResourceFromUrl(URL url);
/** adds a resource as a zip stream */
NewDeployment addResourcesFromZipInputStream(ZipInputStream zipInputStream);
/** adds a resource from a file */
NewDeployment addResourceFromFile(File file);
...
}
在测试的时候
Java代码
ProcessEngine processEngine = new Configuration().buildProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService();
//布署当前目录下test.jpdl.xml文件
String deploymentId = repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").de ploy();
在我们实际应用中,addResourceFromInputStream和addResourcesFromZipInputStream运用较多。
二、流程实例管理
2.1流程实例启动
启动方法参看org.jbpm.api.ExecutionService。
启动一个新的流程实例的最简单最常用的方法:
Java代码
ProcessInstance processInstance = executionService.startProcessInstanceByKey("test");
test即test.jpdl.xml中process name。
有的时候,我们在刚启动实例的时候就需要加一个变量进去。
我们假设在填写请假单之前需要传入一个applyName参数进去
Leave.jpdl.xml部分文件代码
...
<process name="leave" xmlns="
/4.3/jpdl">
<start g="67,6,48,48" name="开始">
<transition g="-30,-10" name="请假" to="填写请假单"/>
</start>
<task assignee="#{applyName}" g="45,102,92,52" name="填写请假单">
<transition g="591,124:-127,-18" name="提交申请" to="主管审核"/>
</task>
我们可以这样来实现
Java代码
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("applyName", "dyaln");
ExecutionService executionService = processEngine.getExecutionService();
ProcessInstance processInstance = executionService.startProcessInstanceByKey("leave",variables);
原文地址
/blog/579353#bc2267260。