• 1. JBPM教程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企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。
  • 2. jBPM最大的特色 就是它的业务逻辑定义没有采用目前的一些规范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个业务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,以及状态之间的转换,通过图型化的流程定义,直观地描述业务流程。   jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域非常流行的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于业务逻辑的处理。
  • 3. JBPM举例 表达了一个抽象的流程定义,之所以说是抽象,因为她没有表示确切的执行者,比如某借款人被具体化为张三,部门主管成为张三的部门经理李四,而财务明确为王五的时候,这个流程定义就被具体化,成为一个流程实例。此外过程中的相关人员我们称之为参与者Actor,过程需要参与者介入的环节称之为Task,每—个任务在流程实例中的具体化称之为任务实例,从一个任务结点到另一个任务结点转为叫做流转(Transition),在流程中,由程序预先设定的行为如发邮件,我们称之为活动Action
  • 4. 使用前的准备 官方网站:http://www.jboss.org/jbpm 目前系统使用的版本是jbpm4.3 下载地址:http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.3/jbpm-4.3.zip/download
  • 5. 解压后目录:
  • 6. Jbpm整合SSH详解复制JBPM lib目录下juel.jar、juelengine.jar、juel-impl.jar到tomcat lib目录同时去掉el-api.jar(否则会jar冲突)(目前放到项目lib目录会出错) 复制JBPM 根目录jbpm.jar到项目 lib 目录修改为update以便系统自动创建jbpm的相关数据库表1、添加必须依赖包2、修改配置文件 修改applicationContext-db.xml (要代码提示可以拷出jbpm.jar里面jpdl.4.3.xd验证文件进行相关配置) 复制jbpm.cfg.xml到项目config目录
  • 7. 3、通过spring注入管理jbpm管理服务 下面这段配置主要为了processEngine注入到一个jbpm模板类方便jbpm的相关操作 。同时这个类也是程序员操作jbpm的唯一接口。JBPM gdp设计器插件安装
  • 8. 点击添加后弹出如下界面。然后点击archive选择jbpm-4.3/install/src/gpd/jbpm-gpd-site.zip!/Tip:在安装过程中第一次无法点击安装的问题、据说重启eclipse即可,有待检验.
  • 9. 安装完成后 新建 jbpm 4 process Defintion 流程定义文件
  • 10. 效果如下:
  • 11. 编写一个流程的步骤准备:熟悉已有类常用方法介绍 C cq.nfs.bo. JbpmTemplate 对jbpm服务封装 M String Deploy(String resourceName)部署流程到数据库 M ProcessInstance addProcessInstance(String processDefinitionKey, M String processInstanceKey) 创建一个新的流程实例 M void completeTask(String taskId) 提交任务 M ProcessInstance getProcessInstance(String key)根据key获取流程实例 M List findPersonalTasks(String userId)获取指定用户名字的任务 M Task getTask(String taskId)根据任务id获取任务 M deleteDeploymentCascade(String deploymentId)彻底删除文件的部署熟悉之后可以根据需要灵活增加某些方法
  • 12. 1、利用插件拖动生成流程定义文件。流程的执行依赖于这个流程配置文件(先有流程定义,才有流程实例)开始编写
  • 13. 2、利用jbpm提供的api生成流程定义对象 此操作会把流程部署到数据库 3、现在就可以利用jbpm api 获取流程实例4、获取并提交任务同时更新数据库业务数据状态
  • 14. 5、根据用户名获取个人任务并查找需要的相关业务表返回给前台6、获取当前可用的流程出口
  • 15. 7、首先获取流程实例、然后完成任务、然后判断流程是否走完、 最后更新业务表相关数据。
  • 16. 附加参考文档:1、Jbpm 流程定义文件的详细配置参考详细使用说明和用法 《jBPM-4.3-jpdl__用户手册(中文).pdf》 2、其他人写《JBPM4.4教程.pdf》 里面有相关配置的用法和整合ssh的教程
  • 17. END!!!