SOA BPM jBPM
- 格式:pdf
- 大小:574.43 KB
- 文档页数:13
第一章绪论这是Jboss 的jBPM3.12框架的用户指南的中文翻译。
其中第一章的译文,是我在网上找到的。
其他几章都是我自己做的翻译。
我的翻译是中英文对照,只翻译部分我认为重要的,不翻译简单的英文,以免浪费你我的时间。
同时,对于其中的部分内容,我会在翻译中做出解释。
下面是从网络上找到的第一章,这是jBPM3.0的用户指南的译文。
但是第一章,3.0和3.1内容相差不大,我就不做翻译了。
直接使用这一篇。
目录第一章绪论JBoss jBPM 是一个灵活的,易扩展的工作流管理系统。
JBoss jBPM有一套直观的流程建模语言,这套语言能用任务(task),异步通信的等待状态(wait state ),定时器(timer),自动化的动作(automated action)等来图形化的表示业务流程。
为了把这些操作集成在一起,JBoss jBPM拥有强大的,易扩展的控制流程机制。
JBoss jBPM对外依赖程度很小,你完全可以像用java的类库一样用它。
并且它也可以被部署在高性能的J2EE集群应用服务器上。
JBoss jBPM能配置在任何数据库上,并且能被部署在任何的应用服务器上。
1.1 总览工作流和业务流程处理功能的核心部分被打包成一个简单的java类库。
这个类库包括了这样一个服务:流程信息的存储,更新,和从数据库中重新取回。
图1.1:JBoss jBPM组成模块的概略图1.2 JBoss jBPM starter kitstarter kit是一个包含jbpm所有模块的下载包。
这个下载包中包括以下模块:jbpm-server, 一个预选配置好的jboss应用服务器。
jbpm-designer, 图形化定制流程的eclipse插件。
jbpm-db, jBPM的数据库兼容包 (见后边论述)。
jbpm, jbpm的核心模块,其中包括libs文件夹和这个用户说明。
jbpm-bpel, JBoss jBPM对BPEL扩展的一些参考资料预先配置好的JBoss应用服务器具有如下组成部分:jBPM核心模块,被打包成一个用于提供服务的存档文件带有jbpm表的集成数据库:默认的hypersonic数据库拥有jbpm表,并且这个表已经拥有一个流程了。
JBPM 工作流引擎选择JBPM的10个理由:∙嵌入式的工作流引擎,减少硬件投入,降低网络复杂度,降低集群复杂度∙图形化开发工具,可视化流程控制台,方便的随时调度运行时流程∙轻量级框架,可以发布在任何应用服务器上,连接任何数据库∙支持多种流程定义语言∙严格而灵活的流程版本控制∙支持JAAS的安全认证机制,保证商业流程的安全∙基于订阅的技术支持,可以直接获得源码开发人员的直接支持∙预留Web Service、JCA、JMS等Java EE标准接口,更容易和标准Java EE程序集成∙完全的Java工作流引擎,无缝移植到多种操作系统∙成熟度最高的开源工作流框架,稳定性和性能经过企业级的验证JBPM简介BPM是一个开源的、纯JAVA的、轻量级的支持多种可执行流程语言的商业流程管理(BPM)工作流引擎。
他可以运行在任何Java EE应用服务器或者简单的配置了JDBC 的JVM中。
实际生产中有很多种可执行的流程语言,每种语言都是面向特定的业务环境。
jBPM允许这些不同的流程语言都在同一种技术上建立模型,也就是流程虚拟机(PVM)。
jBPM目前支持三种不同的流程语言:jPDL,WS-BPEL 和Seam框架的Pageflow。
未来jBPM还会支持更多的流程定义语言。
jBPM提供了开发流程、发布流程、执行流程、管理角色任务、管理商业流程、协调Web Service等功能。
jBPM技术特点JBoss jBPM 是一个支持复杂的企业级应用的可扩展的工作流管理系统。
JBoss jBPM 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等。
把这些操作绑在一起,JBoss jBPM 就有了最强大和易扩展性的控制流机制。
对于企业应用来说JBoss jBPM 只有很小的倚赖性,可以很容易的作为JAVA库来使用,当然它也可以用在吞吐量极为关键的J2EE集群应用服务器环境中。
JBoss jBPM 可以同任何数据库配置,可以部署在任何应用服务器上。
一种基于SOA和JBPM的工作流引擎模型*张辉栋,卢选民,杨杰,李成福(西北工业大学电子信息学院,陕西西安710129)摘要:工作流技术是实现业务流程自动化的关键技术,但现有的工作流技术已不能满足目前分布式异构和松散耦合的企业信息资源需求。
利用SOA 技术,结合JBPM ,提出了一种基于SOA 和JBPM 的工作流引擎模型,并对其流程控制与任务管理进行了分析,最后,基于SOAP 、WSDL 协议和JPDL 实现了此工作流引擎,证明了其有效性。
关键词:工作流引擎;SOA ;JBPM ;流程实例;模型中图分类号:TP311文献标识码:A文章编号:1674-7720(2013)15-0012-03A workflow engine model based on SOA and JBPMZhang Huidong ,Lu Xuanmin ,Yang Jie ,Li Chengfu(School of Electronics and Information ,Northwestern Polytechnical University ,Xi ′an 710129,China )Abstract :Workflow technology is the key to achieve business process automation.But the traditional workflow technology can ′t meet enterprise information resources ′demand for distributed heterogeneous and loosely coupled.A workflow engine model based on SOA and JBMP is proposed in this paper ,which utilized SOA technology and combined with JBPM.Then we made an analysis of process control and task management.Finally ,this workflow engine model based on SOAP ,WSDL and JPDL has been realized in this paper.Key words :workflow engine ;SOA ;JBPM ;process instance ;model *基金项目:国家“863”高技术研究发展计划项目基金(2009AA01Z430);国家科技支撑计划(2007BAH05B02-04)工作流是全部或部分由计算机支持或自动处理的业务过程,目的是为了提高效率、降低生产成本、提高企业整体的生产管理水平和竞争力。
JBPM源码浅析关键字: jbpm workflow 工作流离职啦,工作交接中,记录一下。
就如同了解Servlet规范、Servlet容器设计和实现一样,学会一种workflow 的建模、引擎设计和实现也是必备的。
工作流这东西是业务系统的一个核心模块,现在的大多数企业业务系统大多数是业务驱动的,如新闻行业采编发、制造业的采供销、金融保险的审批等,协同OA就不用说了。
BPM、ESB、SOA现在很火啊!下面的总结肯定欠成熟,70%合理就不错啦,看到这篇blog的朋友,一定要批判接受哦。
当前我指的JBPM是3.2版本,因为从JBPM2.0到3.0,其API从package到class 都完全重新设计了,以及其背后的建模思想和架构。
在2.0版本里,是按照Spring+Hibernate那种Transaction Script方式组织的,OO的概念比较弱,里面是大量的interface、impl、service。
而3.0版本,完全按Domain Model方式组织,Hibernate透明持久化,它是我见到的O/R Mapping最优雅的应用。
在当前的3.2版本里,其整体架构可以这么去理解:领域对象,如ProcessDefinition、ProcessInstance、Node、Token、Transition等,都是Rich Model,里面的方法主要是处理业务,以及建立领域对象之间的关联,持久化则完全放在XXXSession中,如TaskMgmtSession,GraphSession等,也可以认为这些XXXSession是DAO,负责处理持久化。
另外,org.jbpm.persistence.db.DbPersistenceService这些类相当于最底层的数据库Helper类。
总之,JBPM的技术架构非常清晰易懂,也是非常典型的Domain Driven Design,在这种架构中,分层的概念被弱化了。
首先,我们来看看BPM的价值和它与OA的区别。
K2 BPM着眼于企业流程重组,而OA着眼于企业流程自动化。
比如,成熟企业会不停地改组业务,优化流程,但是中小企业没有那么多精力考虑流程优化,效率优先。
这两种不同的需求导致BPM 和OA的不同导向。
我个人认为OA与BPM面向不同客户群,客户应该根据企业领导和业务需求判定如何选择。
下面举例说明k2BPM能帮助企业实现的价值。
比如我们企业,以前的BPM基本定位在OA。
但是随着发展,我们的需求更加旺盛,对业务的理解变复杂,我们就有了升级OA到BPM的需求。
这是第一点。
第二点:业务流程需要重新梳理,这更需要BPM工具支撑。
可以说,BPM着眼于创造价值;OA着眼于提高效率和集成度。
很多人都谈到OA和BPM的融合问题,但我认为基于两者价值导向不同,比较难于融合。
我们来看一下OA是如何构成的。
OA:有一体化的集中数据库完成,各种表单大多位于OA系统,包括文档。
而先进的BPM基本就是一个皮,业务数据通过SOA 的Web 服务链接。
因此我们的挑战在于BPM工具的监护和效率。
另外,我们还可以从一个具体的BPM的应用场景来说明BPM的价值。
面对一些新的需求,我们需要重组新的业务,这样系统必须重建。
我们的表单数据变化较小,但流程变动很大。
这时候BPM工具的价值体现出来了。
我们仅仅花了半个月就更新了九只主要流程。
有些甚至几分钟就可以配置完成。
效果明显。
大家想想如果是OA 的修改需要多久?耗资又要多少?表单和流程分离是二者核心区别。
另外,BPM工具的使用可以解放IT,使得业务可以脱离IT单独操作。
BPM的优势也在于此,有点儿像IT的三层结构,业务层和数据层完全脱离了。
在经过培训后,简单的修改业务人员一般都可以完成。
我们现在使用的智能表单已经可以做到简单流程的自动化维护了。
其实我们想像一下,业务如果可以自己改动,何必费劲找我们?改动的是流程不是数据,业务不能改变这个原则。
BPM的终点就是业务流程和数据的完全脱离,业务操作流程。
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,这里,要修改为连接我们的数据库。
SOA、ESB、BPM的关系
SOA
SOA(Service-Oriented Architecture)面向服务的架构,其中的Service是灵魂,是核心。
SOA的目标是构建一个松散耦合的系统架构,可以将企业的应用程序及资源包装为一个个的商业服务,按照特定的合约及规约来请求和使用服务。
ESB
企业服务总线(ESB-Enterprise Service Bus)本质上是一个以消息通信为中心的底层基础设施,它负责治理企业的所有应用服务,以连接为导向,为服务请求者与服务调用者搭建起沟通的桥梁。
包括服务连接、数据转换、事件转换、服务路由等功能。
企业服务总线是保障SOA有效落地的底层基础设施,没有ESB,SOA就只会是一片飘在天上的云彩,最终会烟消云散。
因此企业要基于SOA的架构方法论和思想去搭建智慧IT生态群落,就首先要搭建好底层的基础设施。
BPM
业务流程简单来说就是业务的处理流,或者说业务的流转过程。
这里重要的不是“流程”这两个字,而是“业务”这两个字。
在企业内部,核心业务如下:
产品和服务的设计与开发
产品和服务的市场营销与销售
产品和服务的交付
客户服务管理。
jBPM,全称是Java Business Process Management,是一种基于J2EE 的轻量级工作流管理系统。
一、介绍下大背景工作流的应用市场部分内容就不提了。
首先提一下目前工作流域的两种主流方向1、workflow 。
代表osworkflow 等。
workflow 的特点为:其主要侧重于对流程的处理模型方面,也就是说它关注的重心是流程的处理2、BPM商业逻辑流程模型BPM的重心为商业逻辑流程模型的处理其中以JBPM为代表这是两者最大的区别,也就是切入点不同。
不过对我们实际应用来说,选哪个区别都不是很大说到工作流就要提到WFM组织,这个组织是国际上一些厂商组成的一个工作流的组织,该组织给出了一个他们自己定义的工作流的定义,及XPDL语义。
该定义将工作流的定义包括为至少以下五部分内容:1、工作流过程活动2、转移信息3、参与者声明4、外部应用程序声明5、相关数据并给出了标准的语法来描述上述元数据1:workflow process2:activity3:transition4:application5:date field由于JBPM不符合上述语法定义,因此JBPM是不符合该WFM规范的不过上述每部分内容在JBPM都有自己的定义来描述二、JBPM流程的一个基本的处理步骤1、加载(发布)流程定义2、启动流程3、处理任务4、记录流程的相关状态1、加载(发布)流程定义这个意思是,我们通过jbpm 的designer 插件,或者是用其他工具,制定出processDefinition (可以是String ,可以是包文件,也可以是流数据等),然后将其加载到应用中的过程。
这个加载可以是写入内存中,或者是直接写入数据库等2、启动流程即processDefinition.createProcessInstance() ,创建流程实例的过程。
具体创建实例的方法有多种,可根据自己的需要自行选择。
3、处理任务在流程流转的过程中,JBPM引擎会为我们生成任务的实例,我们就需要针对这些任务实例来进行处理,然后结束这些任务实例,并推动流程的流转4、记录流程的相关状态记录流程状态这点包括且不限于以下内容:1)流程实例的开启2)任务实例的创建3)任务实例的开始执行4)任务实例的结束5)流程实例的结束三、JBPM工作流的主要概念1、流程定义(process definition): 预先定义的业务逻辑2、流程实例(process instance): 业务的实际流转过程3、参与者(actor): 任务的参与者(可能是人也可能是角色或是组织等)4、任务(task): 业务逻辑上,会呈现给参与者处理的元素5、任务实例(task instance): 业务实际流转过程中,生成的需要参与者进行参与的实际内容6、流转(transition): 连接业务逻辑不同节点的桥梁,也是业务实例进行流转的依据7、工作流引擎(engine): 核心组件,负责生成流程运行时的各种实例及数据,以及监视和管理流程的运行8、工作列表: 根据实际应用的需求,需要展示给参与者的任务实例列表// 待办任务列表为其最具代表性的例子jBPM是公开源代码项目,它使用要遵循Apache License。
BPM领域常用的两款工作流JBPM和CCBPM的对比5种基本控制流模式的对比4种高级分支同步模式2种结构化模式4种包含多实例的模式3种基于状态的模式2种取消模式总结以国外流行的工作流jbpm4的模式与当今中国开源的ccbpm(ccflow和jflow的总称)流程引擎对照。
以便让各位能够了解到中国国情的工作流引擎与国际流行的设计规则的差别、不同、与优缺点。
国外工作流比较通用的就是满足21种流程模式的支持。
5种基本控制流模式的对比1. 顺序流(Sequence)JBPM:就是按照流程设计的步骤,一步步的向下运行,这样的模式下每个节点有先后顺序,就是每个节点只有一个节点是活动的。
例子:比如申请后进行审批,一步一步的进行任务。
CCBPM:顺序流,也叫做没有分支的线性流程,流程一般在最后一个节点自动结束,并标识流程完成。
也可以通过设置节点条件,自动结束流程。
ccbpm的特点是:允许用户自己定义流程完成条件,在任何一个节点运行过程中,ccbpm都要去检查条件设置,如果满足这个条件流程就自动结束。
2. 并行分叉(ParallelSplit)JBPM:流程在某个活动(节点、步骤)之后产生多个分支,并且并行流转。
例子:比如在淘宝买了个商品需要发票,那么卖家就需要一边准备商品发货,一边准备发票邮寄。
CCBPM:异表单分合流的分流动作,一个动作结束后(分流节点),并行启动多个分支,每个分支都要向下运动。
在cc中,可以根据方向条件设置来决定是否启用某一个分支。
3. 同步(Synchronization)JBPM:在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。
流程必须等待所有的分支都执行完成后,才能激活后续活动。
例子:比如商家在收到“发票”和“商品”后,才能确认收货。
CCBPM:异表单分合流中的合流动作,可以指定一定的完成率,才能到达合流节点。
对于未完成的子线程,可以进行删除操作。
4. 独占式选择(Exclusive Choice)JBPM:一个活动完成后,只能在后面的多个分支中激活一个。
jBPM详解工作流管理系统一、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。
使用工作流能够在软件开发与业务两个层次受益:1、方便开发工作流管理系统能够简化企业级软件开发甚至保护。
◆降低开发风险 - 通过使用状态与动作这样的术语,业务分析师与开发人员使用同一种语言交谈。
这样开发人员就不必将用户需求转化成软件设计了。
◆实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各类各样的系统中。
◆加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易保护。
2、业务流程管理(BPM)在自动化业务流程之前,分析并将它们规格化是一件艰难但会有很好回报的工作:◆提高效率 - 许多流程在自动化过程中会去除一些不必要的步骤较好的流程操纵 - 通过标准的工作方法与跟踪审计,提高了业务流程的管理◆改进客户服务 - 由于流程的一致性,提高了对客户响应的可预见性◆灵活 - 跨越流程的软件操纵,使流程能够按照业务的需要重新设计。
◆业务流程改进 - 对流程的关注,使它们趋向于流畅与简单但从长远的角度,工作流流程管理技术的研究可为两个阶段进行:1.目前解决华研今后新项目中复杂业务流程如何使用工作流引擎技术进行实现的问题。
2.上升到面向服务体系架构,实现各个服务之间的业务流程。
jBPM在2004年10月18日,公布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个构成部分,它的名称也改成JBoss jBPM.随着jBPM加入JBoss组织,jBPM也将进入一个全新的进展时代,它的前景是十分光明的。
jBPM 最大的特色就是它的商务逻辑定义没有使用目前的一些规范,如WfMC XPDL, BPML, ebXML, BPEL4WS等,而是使用了它自己定义的JBoss jBPM Process definition language (jPdl)。