JBPM简介
JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。
jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBossjBPM。随着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也就支持。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于业务逻辑的处理。
编辑本段
使用jBPM开发工作流的一般流程
1) jBPM的运行需要数据库的支持,因此系统设计时要选定所用数据库。只要是Hibernate支持的数据库,jBPM就支持。数据库的初始化可以由jBPM自动完成,也可以通过ant generate.ddl任务生成SQL语句,在jBPM外部自己创建所需的表。
2)使用jPdl定义工作流,生成processdinination.xml文件。可以采用GUI工具gpdl,但目前只支持jBPM1.0,而且bug很多。XML的DTD定义文件在jBPM下载包中。
3)Antcreate.pde生成pde包的工作目录。将processdinination.xml文件和其它需要的文件放在指定的目录下,使用antbuild.precess.archives生成pde包。pde包的格式采用jar。
4)更改pde工作目录/src/config/jbpm.properties的相关属性,主要是设定相关的数据库连接信息。注意要将数据库的JDBC驱动放在pde工作目录的lib目录下。
5)Antdeploy.process.archives将刚才生成的pde部署到数据库。实际上就是向数据库插入一些相关数据。
6)利用jBPMAPI函数开发相应的工作流程。
jBPM能否适应“中国国情”的流程应用?
——以下内容摘自《jBPM4工作流应用开发指南》第20章“中国特色工作流的jBPM实现”:目前,中国内地对于工作流管理系统的应用主要还是集中于“人工流程”,也就是以人工任务密集型的工作流应用为主。主要原因在于国内的信息化系统建设还远不及欧美发达国家成熟,系统多是以新建和推倒重来为主,很少有经过长期稳定运行的“沉淀”系统,因此工作流管理系统中用于应用集成的相关自动活动功能就很少能得到施展,工作流管理系统大部分的应用还是集中在需要人工干预的“任务”上。这也可以解释为何在欧美国家大行其道的EAI(企业应用集成)产品在国内市场并不普及的原因。……同时从jBPM项目本身来说,其作为一款基于西方业务流程管理思想设计的工作流框架,更多的是关注“如何辅助开发者更容易的让流程运行完成”,而不是关注“记录流程运行的历史和轨迹”。因此,jBPM项目从设计上就没有考虑“回退”、“取回”、“会签”、“委派”等业务场景。这也是因为东西方文化的差异之所在:例如回退,西方人认为“往回流转的情况肯定也是一种业务流程规则的定义,那么肯定可以通过分支或条件流转的设计来解决”,而国内则常常把回退作为一个“人性化管理和处理的潜在规则”来看待,并且认为这是一个合理的需求。本章的目的就是:提出这些具有中国特色的(当然这并不是中国所特有的)业务流程问题,在jBPM4的架构基础上分析解决这些问题的思路,并给出一种解决方案供参考。
JBPM发展状况
工作流系统 (workflow management systems) 还处于技术发展曲线( technology hype curve ) 上的初级阶段。 在这个领域我们将面临一个激动人心的阶段。 为了描述这一点, 可以和关系数据库系统(RDBMS) 做一个对比。 当在软件开发团队中谈论RDBMS 时,大部分人会有一个清晰的概念, 在你和他们交流的时候, 人们会通过轻微的点头表示认可或理解你所说的。 可当使用工作流术语讨论工作流时, 他们会摇头表示不同意, 因为每个人对工作流术语都有不同的理解。 导致形成这种状况的原因之一, 是在工作流中使用了过多的概念。 在这个领域中的大量规范和工具没有一个是相似的。 当然, 它们相互之间有重叠并且会相互参考引证。 在介绍工作流时有一个话题必须包括, 那就是工作流和业务流程管理(BPM) 的关系。 术语“工作流” 通常描述人与计算机系统的一系列相关交互。 在开发人员中, 工作流经常被提及。 有时, 工作流的意思是指一些不同的UI 界面。业务流程管理的范围比较广, 相比之下工作流多半局限于技术领域。 业务流程管理还从管理人员的角度涉及了非技术问题, 比如分析、 组织的效率。 在本文中, 我首先解释什么是工作流管理系统, 然后介绍业务流程管理的优点。 接下来描述一下为什么工作流市场乍看起来如此混乱。 本文给出的主要结论是: 选择工作流系统是想用工作流系统的公司, 将要面对的最困难的事情。 为此, 本文的核心部分描述了一个流程定义(process definition) 的四个层次, 为你选择工作流提供一个基础。JBPM举例
表达了一个抽象的流程定义,之所以说是抽象,因为她没有表示确切的执行者,比如某借款人被具体化为张三,部门主管成为张三的部门经理李四,而财务明确为王五的时候,这个流程定义就被具体化,成为一个流程实例。此外过程中的相关人员我们称之为参与者Actor,过程需要参与者介入的环节称之为Task,每—个任务在流程实例中的具体化称之为任务实例,从一个任务结点到另一个任务结点转为叫做流转(Transition),在流程中,由程序预先设定的行为如发邮件,我们称之为活动Action