JBoss jBPM 是一个灵活的、可扩展的流程语言框架。jPDL是一种建立在这个公共框架之上的流程语言。它是一种直观的流程语言,用任务(tasks)、异步通讯的等待状态(wait states)、定时器(timer)、自动化的动作(action)……等术语来图形化地表示业务流程。jPDL拥有最强有力的、可扩展的控制流机制把这些操作结合在一起。 jPDL的依赖性非常小,能够像使用一个java类库一样容易地使用它。但是,通过把它部署在一个J2EE集群的应用服务器中,也能够把它用在需要极大的吞吐量的环境中。 jPDL能够配置使用任何类型的数据库,部署在任何应用服务器中。 概览 工作流和BPM的核心功能被打包成一个简单的java类库。这个类库包含一个服务,用于管理和执行保存在iPDL数据库中的流程。 图1.1 jPDL组件概览 jPDL套件 本套件包含所有的jBPM组件,打包成一个易于下载的文件形式。它内部包括下列文件夹: config, 用于标准java环境的配置文件。 db, 用于创建数据库的SQL脚本,和数据库兼容性信息。 designer, 用于编制jPDL流程和安装脚本的Eclipse插件(它不包含在单纯的jpdl下载文件中)参见jPDL图形流程设计器部分。 doc, 用户指南和JavaDoc文档。 Examples 范例文件。 lib, jBPM所依赖的类库。要获得进一步的信息,请参考“第三方类库”部分。 server, 一个预先配置好的jBoss应用服务器,在一个控制台web应用中包含了jBPM(不包含在单纯的jpdl下载文件中)。 src, jBPM和身份认证组件的java源代码。 这个预先配置好的JBoss应用服务器安装了下列的组件: Web控制台(web console), 打包为一个web存档(war文件)。此控制台能够由流程参与者和jBPM管理者使用。 工作执行器(job executor) 用于启动定时器和异步消息。在控制台web应用程序中有一个servlet上下文监听器,它启动工作执行器,后者产生一个线程池,用于监测和执行定时器和异步消息。 jBPM数据库, 一个进程内hypersonic数据库,包含jBPM数据表。 一个范例流程, 已经部署到jBPM数据库中。 身份组件(Identity component)类库是控制台web应用的一部分。身份组件的表存在于jBPM数据库中(这些表以“JBPM_ID_”为前缀)。 jPDL图形流程设计器 jPDL也包括一个图形设计器工具,该工具用于创作业务流程,它是一个Eclipse插件。 该图形设计工具的最主要的特征是同时支持业务分析师和技术开发者,从而允许从业务流程建模到实际开发实现的平滑过渡。 该Eclipse插件以一个本地更新站点(普通zip文件)的形式提供,可通过标准的Eclipse软件更新机制安装。jPDL图形流程设计器插件也包含在 JBoss Tools, JBoss Developer Studio 和 SOA Platform.中。 jBPM控制台Web应用程序 JBPM控制台web应用程序有两个目的。首先,它作为中心用户接口,与在流程执行过程中产生的运行时任务进行交互。其次,它是一个管理和监控控制台,能够检视和操控运行时流程实例。 它的第三个功能是业务活动监控,这是一些流程执行的统计信息,这些信息对于管理员找出瓶颈和进行其他种类的优化很有用。 JBPM核心类库 JBoss jBPM核心类库是普通的Java(J2SE)类库,用于管理流程定义和流程实例执行的运行时环境。 JBoss jBPM是一个java类库,因此它能够在任何java环境中使用,例如web应用程序,swing应用程序,EJB,Web Service……等等。 jBPM库也可以打包并暴露为一个无状态会话EJB,这允许集群部署和在极高吞吐量环境下的可缩放性。此无状态会话EJB应该针对J2EE 1.4规范编写,以保证可以部署到任何应用服务器之中。 依据你所使用到的功能,类库 lib/jbpm-jpdl.jar对一些第三方类库如hibernate、dom4j及其它类库有依赖。我们已经做出巨大的努力使得你只需要实际使用到的依赖库。第三方依赖的问题在第四章(部署)中进一步阐述。 JBPM在内部使用hibernate进行持久化。除了传统的o/R映射功能之外,hibernate也解决了不同数据库使用不同SQL方言的问题,使得jBPM可以移植到所有目前流行的数据库之上。 JBoss jBPM API可以从你项目中的任何java软件访问,例如web应用程序,EJB程序, Web Service组件、消息驱动Bean或任何其他java组件等。 JBoss jBPM身份组件 JBoss jBPM能够和任何包含用户和其他组织机构信息的公司目录集成。但是,对于没有提供组织机构信息组件的项目,JBoss jBPM包含了这个身份组件。 该身份组件中使用的模型比传统的Servlet-、EJB-和门户中使用的模型更丰富。 要进一步了解,请参考《身份组件》部分。 JBoss jBPM工作执行器(Job Executor) job执行器是一个用于在标准Java环境下监控和执行job的组件。Job用于定时器和异步消息。在企业环境中,JMS和EJB定时器服务可以用于这一目的。相反,Job执行器能够用在缺乏JMS或EJB的环境中。 Job执行器组件被打包在核心jbpm-jpdl类库中,但是需要以以下的方式之一部署:或者在web应用部署描述符(WEB-INF/web.xml)中注册 JobExecutorLauncher servlet上下文监听器,使得在servlet上下文创建/销毁的时候启动/停止Job执行器;或者开启一个单独的JVM,在其中编程式启动Job执行器。