JBOSS部署JBPM
jbpm44用户手册

第 1 章导言上一页下一页第 1 章导言最好使用firefox浏览这份教程。
在使用internet explorer的时候会有一些问题。
1.1. 许可证与最终用户许可协议jBPM是依据GNU Lesser General Public License(LGPL)和JBoss End User License Agreement(EULA)中的协议发布的,请参考完整的LGPL协议和完整的最终用户协议。
1.2. 下载可以从sourceforge上下载发布包。
/projects/jbpm/files/1.3. 源码可以从jBPM的SVN仓库里下载源代码。
https:///repos/jbpm/jbpm4/1.4. 什么是jBPMjBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何Java应用中。
1.5. 文档内容在这个用户指南里,我们将介绍在持久执行模式下的jPDL流程语言。
持久执行模式是指流程定义、流程执行以及流程历史都保存在关系数据库中,这是jBPM实际通常使用的方式。
这个用户指南介绍了jBPM中支持的使用方式。
开发指南介绍了更多的、高级的、定制的、没有被支持的选项。
1.6. 从jBPM 3升级到jBPM 4没办法实现从jBPM 3到jBPM 4的升级。
可以参考开发指南来获得更多迁移的信息。
1.7. 报告问题在用户论坛或者我们的支持门户报告问题的时候,请遵循如下模板:聪明的读者可能已经注意到这些问题已经指向了可能导致问题的几点原因:)特别是对依赖库和配置的调整都很容易导致问题。
这就是为什么我们在包括安装和使用导入实现建议配置机制时花费了大量的精力。
所以,在你开始在用户手册覆盖的知识范围之外修改配置之前,一定要三思而行。
同时在使用其他版本的依赖库替换默认的依赖库之前,也一定要三思而行。
第 2 章安装配置2.1. 发布只需要把jBPM (jbpm-4.X.zip) 下载下来,然后解压到你的硬盘上的什么地方。
JBPM4.4

JBPM4.4应用开发——入门篇2010-10-27 20:38:24标签:JBPM工作流工作流程入门原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/1931202/411612首先简单说说JBPM——java Business Process Management (java 业务流程管理)jBPM是一个框架、一堆开放的源代码。
而非一套“应用程序”。
jBPM的流程引擎可以看做是一个java工程——若干java类、依赖库和配置文件;使用和学习jBPM需要如下条件:1.jBPM的流程定义和运行时的上下文需要被存储到关系型数据库中——可以是基于调试目的的内存数据库HSQLDB,也可以是真正的持久化数据库(MySql,Oracle,PostgreSql,Sybase等等);2.jBPM的流程设计一般都需要一个基于客户端的图形化流程设计器软件,当然在jBPM4版本以后可以支持在web上做流程设计(这要归功于Sigvio项目)3.最终,基于jBPM开发出来的应用程序一般都会被部署到一台应用服务器中,以便服务于来自web的访问、监控和管理等。
注意:在jBPM4.3以后,几乎所有的准备工作(安装数据库,建表,安装应用服务器,安装图形化设计器插件等)jBPM软件包的发布者都帮我们做好了。
只要通过Ant脚本“一键获取”所需要的jBPM4整套开发、运行和管理环境。
在安装jBPM之前首先要安装JDK和Ant。
快速开始--------------------------------------------------------一、1.打开cmd命令控制台:进入到${jbpm.home}/install2.运行脚本:ant demo.setup.tomcat或ant.demo.setup.jboss使用这两个服务器都可以。
具体这个命令做了上面事:请查看install目录下的build.xml文件中的目标。
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是公开源代码项目, 官方主页为:/jbossjbpm<2> Jbpm的使用** 步骤* 编写流程定义(定义规则);* 部署流程定义到系统中;* 执行流程(使用指定的流程定义);①编写流程定义举例:员工报销费用的流程描述:员工需要先填写报销单据;交给其经理进行审批;审批(通过)后到财务去领款。
Myeclipse8.6搭建jbpm4.4的开发环境

Myeclipse8.6搭建jbpm4.4的开发环境jbpm版本:4.4IDE:myeclipse8.6DB:mysql-5.0.261、Myeclipse中安装jbpm1)、解压jbpm4.42)、打开myeclipse8.6---->选择Help菜单---->选择Myeclipse Configuration Center------>打开第三个选项卡SoftWare----->选择右上角add site---->选折add form archive file-----》找到${jbpm_home}\install\src\gpd 目录下找到jbpm-gpd-site.zip即可!name随便输入即可(比如我输入jbpm)!这样下面就看到多一个jbpm(部分过程看下图)选择“add site”,弹出如下对话框:选择“Add from Archive File”,弹出如下对话框:选择“打开”,弹出如下对话框:选择“OK”,出现如下对话框:3)、一个一个选中jpd下面的文件,点击右击“add to profile”即可!4)、点击右下角“apply change”按钮即可!安装完成后会重启Myeclipse,重启后在新建项目里会多出一项“JBoss jBPM”,如下图所示:2、生成jbpm数据库表(这里以安装mysql为列)a)、先打开mysql数据库新建一个数据库比如jbpm(create database jbpm);b)、打开${jbpm_home}\install\src\db\create 下面,找到mysql的表脚本!c)、全部复制过来粘贴到mysql命令行上(当然也可以source ***.sql方式),3、搭建JBPM4运行环境一、下载JBPM4.3可以到官方下载,然后直接解压就可以了doc: 用户手册,javadoc和开发指南examples: 用户手册中用到的示例流程install: 安装脚本lib: 第三方库和一些特定的jBPM依赖库src: 源代码jbpm.jar: jBPM主库归档二、搭建JBPM4运行环境1、新建一个Java Project项目2、添加依赖库jar包a)jbpm.jar包b)JBPM目录/lib下的所有的jar包,当然了,这里有些是可选的。
Jbmp学习资料

jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。
jBPM是公开源代码项目,它使用要遵循 Apache License。
jBPM在2004年10月18日,发布了3.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。
随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。
jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如 WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。
jPdl认为一个商务流程可以被看作是一个UML状态图。
jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。
jBPM的另一个特色是它使用Hibernate来管理它的数据库。
Hibernate是目前Java领域最好的一种数据持久层解决方案。
通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。
J2EE工作流管理系统jBPM详解(一)一、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。
使用工作流能够在软件开发和业务两个层次受益:1、方便开发工作流管理系统能够简化企业级软件开发甚至维护。
◆降低开发风险 - 通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。
这样开发人员就不必将用户需求转化成软件设计了。
◆实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中。
◆加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。
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数据库中。
JBoss Jbpm介绍
工作流(Workflow)
工 作 流 技 术 框 架
工作流管理系统(WFMS)
工作流管理系统(Workflow Management System, WFMS)是一个软件系统,它完成工作流的定义和 管理,并按照在系统中预先定义好的工作流逻辑进 行工作流实例的执行。 工作流管理系统不是企业的 业务系统,而是为企业的业务系统的运行提供了一 个软件的支撑环境。
end-tasks
属性 可选的 {yes|no|true|false}, 默认是false。 元素 [0..*]
task
a) b)
c)
task-node节点 例子: <task-node name='a'> <task name='laundry' /> <task name='dishes' /> <task name='change nappy' /> <transition to='b' /> </task-node> 这里没有定义signal属性的值,这就表明当节点中 的三个任务都完成后,流程才进入后面的节点 当<task-node name=‘a’ signal=‘unsynchronized’> 表明token不会在本节点停留,而是直接到后面的 节点 当<task-node name=‘a’ signal=‘never’>表明三个 任务都完成后,token仍然不会指向后面的节点; 需要自己手动调用processInstance.signal()才会驱 动流程到下面的节点
名称 Name Task Event 类型 属性 元素 元素 多样性 描述 可选的 节点的名称。 [0..1] [0..*] [0..*] [0..*] 起始一个流程实例的任务,或者用来捕获流程 发起者 支持的事件类型:{node-leave}。 离开转换,每个离开节点的转换必须有一个不 同的名称。 一个异常处理器列表,用于这个流程节点中的 委托类所抛出的所有异常。
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,这里,要修改为连接我们的数据库。
红帽公司jboss中间件产品说明
JBoss 企业级中间件套件JBoss Enterprise Middleware Suite适用于面向服务架构(SOA)的开源平台在当今竞争激烈的市场中,必须不断满足并超越客户、供应商和合作伙伴的需求。
除了要降低成本、优化运营效率以及增加投资回报率,甚至还必须满足内部受众的需求。
在争取成功的过程中,各大企业都非常清楚自己面临的挑战,那就是必须迅速改造数据中心基础架构、创造新的收入流以及快速部署既强大又灵活的模块化应用。
JBoss 企业级中间件套件(JEMS)是市场上领先的适用于面向服务架构(SOA)的开源平台。
它为创建和部署新的创收应用提供了一个具有高度可扩展性的产品套件。
由于 JEMS 从最初设计就以灵活性和自由选择性为宗旨,它不是典型的全能型单片式平台套件。
它以面向服务架构为基础,其中明确规定了即插即用其产品和服务的接口。
对于有意在一个经济有效的标准平台之上加强对其 IT 投资管理的企业而言,这一基本原则确保了他们可以以保护现有投资的方式实现上述目标。
现在就在 JEMS 上进行标准化建设,为大幅降低总体拥有成本并在打造和部署复杂企业应用领域取得重大飞跃而努力吧!优势及核心价值适用于面向服务架构的紧凑平台具有高度灵活性到目前为止,那些渴望实施面向服务架构并实现面向服务架构优势的企业仍面临着两难的抉择,要么是使用价格昂贵的单片式专有平台,要么是选择拼凑在一起的各种开放的、混杂的或专用组件。
与此相反,JEMS 是唯一一个由各种业内领先的开源中间件产品组成的套件,这些中间件产品紧密配合,既可以单独使用、混合和搭配使用,也可以作为一个完整的单元在面向服务架构中构建和部署应用、业务流程和 we b 服务。
Red Hat Copyright 2007 Red Hat, Inc.以即插即用的方式保护您的投资所有 JEMS 产品在设计上都以实现功能组件的可扩展性和可交换性为宗旨。
即插即用的 SOA 微核不但有助于自由选择所需的技术,还提供了更高的 IT 投资回报。
JBPM安装及请假流程实例之欧阳引擎创编
1、开发环境搭建欧阳引擎(2021.01.01)1.1必须安装的软件1)jbpm-4.4.zip2)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,本说明以eclipse3.6为例。
1.2配置JBPM运行时1)打开window preferences2)选择 JBoss jBPM --> jBPM 4 --> Runtime Locations3)点击 Add...4)在 Add Location 对话框中,输入一个名字,比如 jbpm-4.0 然后点击 Search...5)在Browse For Folder 对话框中,选择你的jbpm 根目录,然后点击 OK6)点击 OK 在 Add Location 对话框中1.3定义jBPM 用户库1)点击窗口 --> 属性(Windows --> Preferences)2)选择Java --> 创建路径--> 用户类库(Java --> BuildPath --> User Libraries)3)点击新建(New)4)类型名字jBPM Libraries5)点击添加JARs(Add JARs...)6)找到jBPM 安装程序下的lib 目录7)选择lib 下的所有jar 文件并点击打开(Open)8)选择jBPM Libraries 作为入口9)重新点击添加JARs(Add JARs)10)在jBPM 的安装程序的根目录下选择jbpm.jar 文件11)点击打开(Open)12)在jbpm.jar 下选择源码附件(Source attachment)作为入口13)点击编辑(Edit)14)在源码附件的配置(Source Attachment Configuration)对话框中,点击目录(ExternalFolder...)15)找到jBPM 安装程序下的src 目录16)点击选择(Choose)17)点击两次'确定'(Ok)会关闭所有对话框1.4在目录中添加jPDL4 模式如果你想直接编辑XML 源码,最好是在你的XML 目录中指定一下模式(schema),这样当你在编辑流程源码的时候,可以更好的帮助你编写代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【51CTO独家特稿】一、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。
使用工作流能够在软件开发和业务两个层次受益:1、方便开发工作流管理系统能够简化企业级软件开发甚至维护。
◆降低开发风险 - 通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。
这样开发人员就不必将用户需求转化成软件设计了。
◆实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中。
◆加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。
2、业务流程管理 (BPM)在自动化业务流程之前,分析并将它们规格化是一件艰苦但会有很好回报的工作:◆提高效率 - 许多流程在自动化过程中会去除一些不必要的步骤较好的流程控制 - 通过标准的工作方法和跟踪审计,提高了业务流程的管理◆改进客户服务 - 因为流程的一致性,提高了对客户响应的可预见性◆灵活 - 跨越流程的软件控制,使流程可以按照业务的需要重新设计。
◆业务流程改进 - 对流程的关注,使它们趋向于流畅和简单但从长远的角度,工作流流程管理技术的研究可为两个阶段进行:1.目前解决华研今后新项目中复杂业务流程如何使用工作流引擎技术进行实现的问题。
2.上升到面向服务体系架构,实现各个服务之间的业务流程。
jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。
jBPM是公开源代码项目,它使用要遵循 Apache License。
jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss 企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。
随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。
JBoss jBPM 只有最小的倚赖性,它可以很容易的作为java库来使用.当然它也可以用在访问量很大的J2EE 群应用服务器环境中. JBoss jBPM 可以同任何数据库配置可以部署在任何应用服务器上.jBPM 最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如WfMC XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。
jPdl认为一个商务流程可以被看作是一个UML状态图。
jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。
jBPM的另一个特色是它使用Hibernate来管理它的数据库。
Hibernate是目前Java领域最好的一种数据持久层解决方案。
通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。
(具体选型报告可参考工作流技术选型评估报告)。
本文档主要是工作流研究小组关于开源工作流引擎jbpm的研究成果总结。
内容包括工作流研究场景的介绍、jbpm的环境配置,并包括以下六个研究主题:◆JBPM同开发如何结合,又如何保持独立性;对应用系统的设计实现有什么样的制约◆用户/角色如何同应用系统结合,变化又如何处理◆流程中每个活动,如何动态指定执行者◆类似传阅功能如何实现◆子流程如何实现◆流程执行步骤耗时阀值和自动提醒设置◆jBPM当前版本的稳定性评估术语、定义和缩略语应用场景本场景是从房地产营销系统的需求中提取出来的,在房地产项目中,客户选户购房的过程是一个非常典型的工作流场景。
我们将这一过程提取出来,作为jbpm技术研究的场景。
在购房过程中,会有以下人员参与。
客户:购房的主体销售人员:在购房过程中指导看房,购房。
销售经理:确定认购信息。
财务人员:收取定金。
客服人员:打印收据,打印客户认购书。
客户购房的过程可以描述如下。
◆客户来到售楼中心,销售人员进行接待。
◆客户向销售人员提供预先申请的服务号。
◆销售人员确认服务号是否有效,如果无效现场给出一个新的服务号。
◆销售人员引导客户选房。
◆客户确定户型,房号。
◆销售人员录入客户认购资料。
◆销售人员确认认购资料填写完整。
◆销售人员将认购资料提交给销售经理审批。
◆确定是否可以获得优惠,如果客户是一次交清房款,获得0.1%优惠。
◆交上级经理审批。
◆销售人员引导客户到财务处交纳定金。
◆交纳定金后,客服人员打印收据。
◆客服人员打印认购书。
为了使用研究的场景更有代表性,揉合其他典型的工作流应用场景,将上面的流程作一些删改。
客户认购的流程改为:◆客户确定购房,销售人员录入认购资料。
◆提交认购资料,必须保证录入资料的完整性。
◆提交审核,按总金额进行分类审核。
如果金额小于50万销售经理审核即可,大于50万还要上级经理两人同时审核通过。
◆审批完成,客户到财务处交纳定金。
◆客服人员为客户打印收据,打印认购书,认购完成。
上面的流程中一些异常情况(流程中的一些分支),在这里先不作考虑,如,客户在交纳定金之前可以随时放弃认购。
客户的认购要录入的资料内容包括:客户姓名,房号,定金,总金额,流程号等,这里仅选取几个重要的数据作为保存对象。
保存录入资料时自动取得一个流程号,任何时候,可以根据此流程号跟踪流程状态,所以在保存认购资料时要记录流程号。
通用的标准规范jBPM 是个功能全面的Workflow Engine,融合了4大功能:Workflow,BPM,BPEL,PageFlow。
它自己有个BPEL扩展,采用jboss Hibernate实现,它使用自定义的自定义标准jpdl,不支持目前公开的工作流(业务流程)标准,如:◆JCP◆JSR208 Java Business Integration◆JSR207 Process Definition for Java◆OASIS◆WS-BPEL◆Workflow Management Coalition(WFMC)◆WFMC XPDL◆Business Process Management Initiative (BPMI)◆BPMN◆O bject Management Group (OMG)◆State Chart XML (SCXML)处理测试阶段的JBoss jBPM BPEL扩展准备支持BPEL 1.1标准(非标准组织通过的标准)。
技术方案由于公司采取的架构是ejb3+tapestry4架构,所以我们的场景实现架构也是基于以上架构进行实现的(tapestry4+ejb3+jbpm3.2),我们所采取的jbpm版本是3.2,这也是目前jbpm 最新的版本。
这里我们使用jboss作为我们的web服务器开发环境这里我们是采用eclipse3.2开发工具进行开发,Tapestry4+ejb3的开发环境配置和以往的项目配置基本保持一致,这里就不再进行详细介绍,关键就是jbpm3.2的配置方法。
我们从jBoss官方网站()上下载jbpm-jpdl-suite-3.2.GA.zip,最新的版本是3.2.GA,这个包括:◆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 数据库,关于jbpm-jpdl-suite-3.2套件包的具体介绍,可以参考JBoss jBPM Cookbook手册。
JBoss jBPM 是一个Java库. 因此,它可以用在任何java环境比如web 应用程序,Swing 应用程序,EJB,Web Service等等,JBoss jBPM 核心组件被打包成一个简单的Java库文件.它依赖你所使用的功能性, 库 jbpm-jpdl.jar及一些相关的第三方的库比如 .hibernate3.2, dom4j 等等在我们实现场景中。
要使用jbpm,我们首先需要将jbpm3.2的包导入我们的项目当中,jbpm3.2的主要包括两个包jbpm-jpdl.jar和jbpm-identity.jar。
而jbpm-jpdl.jar是jbpm 的核心包,jbpm-identity.jar则是jbpm自带的用户角色权限管理包。
我们将这两个包导入我们的项目中。
(具体可参考jbpm的用户手册)在jbpm中,流程的定义主要是编写在xml文件中的,我们需要将具体的业务流程在xml 中定义。
所以我们需要在项目的根目录上新建一个源目录,这里我们命名为“processes”,在该目录我们可以保存流程定义xml文件。
JBoss jBPM 包括一个图形化的流程设计工具. 这个设计器是用来创作商业流程的,该图形设计器是一个Eclipse插件,图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员. 这样就可以在业务流程建模和实际执行之间平滑转换。
使用该插件你可以通过界面来拖拉描绘你的业务流程,而不需要靠手写编码来设计。
该插件位于jbpm-jpdl-suite-3.2.GA.zip中,插件的安装方法可以参考elipse插件的安装方法。
安装完毕后,我们下面可以通过该插件新建流程设计文件。
步骤如下:1、在processes目录中右建选择“New”—》“other”2、选择“Process Definition”,点击“Next”输入Process name,点击完成。
打开设计界面,我们就可以在上面根据我们的业务来设计工作流流程文件。
Jbpm本身包含很多自己的jbpm数据库表,jBPM内部使用hibernate来管理它的数据库,通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理,而且我们可以使jBPM移植在不同的数据库.。
我们进行的每一步流程操作都保存在jbpm数据表中,通过调用jbpm提供的接口,我们可以对jBPM数据库进行存储,更新和检索流程信息的服务。
这里我们使用Mysql5.0数据库,下面我们在项目中新建一个源目录“config.files”,名字可以任意,在该目录建立hibernate.cfg.xml文件:hibernate.cfg.xml<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- hibernate dialect --><!--property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- JDBC connection properties (begin) ===<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property><property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property><property name="ername">sa</property><property name="hibernate.connection.password"></property>==== JDBC connection properties (end) --><!-- JDBC connection for MySQL database --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost/myjbpm</property><property name="ername">root</property><property name="connection.password">1234</property><!-- JDBC connection pool (use the built-in) --><property name="connection.pool_size">1</property><property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property><!-- use data source --><!-- DataSource properties (begin)<property name="hibernate.connection.datasource">java:comp/env/JbpmDS</property>DataSource properties (end) --><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">create</property><!-- JTA transaction properties (begin) ===<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property><property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>==== JTA transaction properties (end) --><!-- CMT transaction properties (begin) ===<property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property><property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>==== CMT transaction properties (end) --><!-- logging properties (begin) ===<property name="hibernate.show_sql">true</property><property name="hibernate.format_sql">true</property><property name="e_sql_comments">true</property>==== logging properties (end) --><!-- ############################################ --><!-- # mapping files with external dependencies # --><!-- ############################################ --><!-- following mapping file has a dependendy on --><!-- 'bsh-{version}.jar'. --><!-- uncomment this if you don't have bsh on your --><!-- classpath. you won't be able to use the --><!-- script element in process definition files --><mapping resource="org/jbpm/graph/action/Script.hbm.xml" /><!-- following mapping files have a dependendy on --><!-- 'jbpm-identity.jar', mapping files --><!-- of the pluggable jbpm identity component. --><!-- Uncomment the following 3 lines if you --><!-- want to use the jBPM identity mgmgt --><!-- component. --><!-- identity mappings (begin) --><mapping resource="org/jbpm/identity/User.hbm.xml" /><mapping resource="org/jbpm/identity/Group.hbm.xml" /><mapping resource="org/jbpm/identity/Membership.hbm.xml" /><!-- identity mappings (end) --><!-- following mapping files have a dependendy on --><!-- the JCR API --><!-- jcr mappings (begin) ===<mapping resource="org/jbpm/context/exe/variableinstanc/JcrNodeInstance.hbm.xml"/>==== jcr mappings (end) --><!-- ###################### --><!-- # jbpm mapping files # --><!-- ###################### --><!-- hql queries and type defs --><mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" /><!-- graph.def mapping files --><mappingresource="org/jbpm/graph/def/ProcessDefinition.hbm.xml" /><mapping resource="org/jbpm/graph/def/Node.hbm.xml" /><mapping resource="org/jbpm/graph/def/Transition.hbm.xml" /><mapping resource="org/jbpm/graph/def/Event.hbm.xml" /><mapping resource="org/jbpm/graph/def/Action.hbm.xml" /><mapping resource="org/jbpm/graph/def/SuperState.hbm.xml" /><mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml" /><mapping resource="org/jbpm/instantiation/Delegation.hbm.xml" /><!-- graph.node mapping files --><mapping resource="org/jbpm/graph/node/StartState.hbm.xml" /><mapping resource="org/jbpm/graph/node/EndState.hbm.xml" /><mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml" /><mapping resource="org/jbpm/graph/node/Decision.hbm.xml" /><mapping resource="org/jbpm/graph/node/Fork.hbm.xml" /><mapping resource="org/jbpm/graph/node/Join.hbm.xml" /><mapping resource="org/jbpm/graph/node/State.hbm.xml" /><mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml" /><!-- context.def mapping files --><mappingresource="org/jbpm/context/def/ContextDefinition.hbm.xml" /><mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml" /><!-- taskmgmt.def mapping files --><mappingresource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml" /><mappingresource="org/jbpm/taskmgmt/def/TaskController.hbm.xml" /><!-- module.def mapping files --><mappingresource="org/jbpm/module/def/ModuleDefinition.hbm.xml" /><!-- bytes mapping files --><mapping resource="org/jbpm/bytes/ByteArray.hbm.xml" /><!-- file.def mapping files --><mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml" /><!-- scheduler.def mapping files --><mappingresource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml" /><mappingresource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml" /><!-- graph.exe mapping files --><mapping resource="org/jbpm/graph/exe/Comment.hbm.xml" /><mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml" /><mapping resource="org/jbpm/graph/exe/Token.hbm.xml" /><mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml" /><!-- module.exe mapping files --><mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml" /><!-- context.exe mapping files --><mappingresource="org/jbpm/context/exe/ContextInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/TokenVariableMap.hbm.xml" /><mappingresource="org/jbpm/context/exe/VariableInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xm l" /><mappingresource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm. xml" /><mappingresource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml" /><mappingresource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml" /><!-- job mapping files --><mapping resource="org/jbpm/job/Job.hbm.xml" /><mapping resource="org/jbpm/job/Timer.hbm.xml" /><mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml" /><mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml" /><!-- taskmgmt.exe mapping files --><mappingresource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml" /><mappingresource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml" /><!-- logging mapping files --><mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml" /><mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml" /><mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml" /><mappingresource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml" /><mappingresource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml" /><mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml" /><mapping resource="org/jbpm/context/log/VariableLog.hbm.xml" /><mappingresource="org/jbpm/context/log/VariableCreateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/VariableDeleteLog.hbm.xml" /><mappingresource="org/jbpm/context/log/VariableUpdateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.x ml" /><mappingresource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm .xml" /><mappingresource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml" /><mappingresource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml" /><mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml" /><mappingresource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml" /><mappingresource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml" /></session-factory></hibernate-configuration>我们在web应用项目的web.xml文件中定义JbpmContextFilter过滤类,它用于实现JBPMCONTEXT 的初始化到这里,jbpm的配置已经基本完成,关于jbpm详细资料大家可以参考jbpm用户指南,这里就不多说。