流程引擎之jBPM简介

一、jBPM 简介

jBPM 发展史
  • jBPM 项目于 2002 年 3 月由 Tom Baeyens 发起,2003 年12 月发布1.0 版本。

  • jBPM 在 2004 年 10 月 18 日,发布了 2.0 版本,并在同一天加入了JBoss 组织,成为了 JBoss 企业中间件平台的一个组成部分,它的名称也改成 JBoss jBPM。随着 jBPM 加入 JBoss 组织,以及 JBoss 被 RedHat公司收购,jBPM 也进入一个全新的发展时代,它获得了大量的社区和商业支持,因此发展前景十分光明。

  • jBPM3 2005发布,jBPM4 2009 发布

  • 2010年 jBPM 创始人 Tom Baeyens 离开 JBoss,随之2011年 jBPM5 发布,Kris Verlaenen 领导 jBPM 的发展。jBPM5 基本上完全抛弃了 jBPM4 的代码,所有代码全部来自原先的 Drools Flow。随之 Tom Baeyens 加入 Alfresco 后很快推出了新的基于 jBPM4 的开源工作流系统 Activiti。 jBPM5 基于原先的 Drools Flow,支持 BPMN,通过与 Drools 的合并支持BAM(Business Activity Monitoring,业务活动监控),通过内容仓库增加对流程可视化的支持。由于放弃了 jBPM4 的 PVM(流程虚拟机),引擎的可扩展性受到损害,并且不再支持 jPDL。对于工作流应用或者 jBPM3、jBPM4 的老用户,建议转向 Activiti5。‍

jBPM 解决什么问题

关于 jBPM 解决的问题观点存在分歧,有人认为 jBPM 重点强调流程服务的可嵌入性和可扩展性,但也有人认为 jBPM 重点解决流程的集中管理,需要独立部署。jBPM 创始人 Tom Baeyens 更加强调流程引擎的可嵌入性。

jBPM 引入了 BPM 规范(BPMS 最重要的目标就是需要打破各个应用系统(CRM、ECM、ERP、SCM)之间的界线,将分散在这些系统中的流程集中管理,这是 BPMS 的实质),而BPMS 所要解决的问题要求其必然是独立部署的。
jBPM 的缺点

jBPM 只支持 BPMN2.0,且对红帽自身技术依赖过紧,如内部引擎基于 Drools Flow,而基于Drools Flow技术在国内市场上用的很少,且默认没有提供对Spring的支持,内部使用 Hibernate 和 JPA 规范(国内市场只有小部分开发者在使用)。

jBPM 官方文档

二、 jBPM 使用

Business Central 使用
1)简介

作为业务规则和流程开发人员,您可以使用 jBPM 中的 Business Central 来设计业务流程以满足特定的业务需求。Business Central 基于 Web 的应用程序涵盖了 BPM 项目的完整生命周期,从创作阶段开始,一直到实施、执行和监控。它将一系列基于 Web 的工具组合到一个可配置的解决方案中,以管理业务解决方案所需的所有资产和运行时数据。

  • Modeling and deployment - author your processes, rules, data models, forms and other assets

  • Execution - execute processes, tasks, rules and events on the core runtime engine

  • Runtime Management - work on assigned task, manage process instances, etc

  • Reporting - keep track of the execution using Business Activity Monitoring capabilities

Business Central 的使用流程如下图所示(下面会详细示例)

  • Step 1:在 Business Central 系统上新增 project 并导入资产工程 business-application-jar,这里可自定义如流程文件等。

  • Step 2-3:以开发模式启动应用程序模板 business-application 工程中 business-application-service 模块,会自动连接 jBPM Controller,并在 Business Central 中会检测到该服务。

  • Step 4:将资产工程 business-application-jar 中的资源文件 deploy 到应用 Server 中(打成 kjar 包并 deploy,kjar 的使用参考文章《流程引擎之KIE项目简介》

  • Step 5:创建并运行定义的流程实例

  • Step 6:查看结果报告

2)环境要求
  • Java (JDK) 8 或更高版本

  • Maven 3.5.x

3)生成示例应用程序

使用 jBPM 在线服务:start.jbpm.org 来生成业务应用程序模板 business-application,工程中有以下几个模块:

  • business-application-kjar:应用程序资产 jar 包,比如流程引擎文件等。该模块打包后需要 deploy 到业务应用服务所在的仓库中。

  • business-application-model:应用程序 model

  • business-application-service:应用程序服务,用于鉴权、数据库配置、KIE Server配置(如 kieserver.location 表示应用连接 KIE Server的 API url 地址)等

4)启动应用程序

应用程序部署有两种方式:单机模式(standalone mode)和开发模式(development mode)。单机模式没有额外的配置和依赖要求,直接本地启动即可(可借助于 spring boot+tomcat,或者使用 jboss 服务器),而开发模式需要 Business Central 作为 jBPM Controller,开发模式意味着允许用户在不需要重启服务的情况下,进行处理业务资产项目,并动态地将更改部署到业务应用程序。同时,它提供了对业务自动化功能(流程实例、任务、作业等)的完整监视环境。

Development mode is meant to allow people to work on the business assets projects and dynamically deploy changes to the business application without the need to restart it. At the same time it provides a complete monitoring environment over business automation capabilities (process instances, tasks, jobs, etc).
启动方式一:单机模式(standalone mode)

参考 csdn 代码示例中 spring-boot-jbpm 子工程,csdn地址:https://download.csdn.net/download/zhuqiuhui/87452118

启动方式二:开发模式(development mode, 或托管模式 managed mode)

开发模式需要启动 jBPM-server,这里重点讲示例应用程序模板 business-application 怎么结合 Business Central 使用。

jbpm-server/bin/standalone.sh     (Unix / Linux)
jbpm-server/bin/standalone.bat    (Windows)

以 windows 环境示例,启动成功日志如下:

登录后也可在 Business Central 新增账号,这里不再详细描述,更多参考官方说明文档新增用户部分:https://docs.jbpm.org/7.69.0.Final/jbpm-docs/html_single/index.html#creating-users-proc

  • Step 3:以开发模式启动应用程序模板 business-application 工程中 business-application-service 模块

./launch-dev.bat clean install  (windows 示例)

business-application-service 模块启动后会成功连接 jBPM Controller,如下图会在 Business Central 系统上可以看到:

  • Step 4:在 Business Central 系统上新增 project 并导入资产工程 business-application-jar

(1)进行到 business-application-jar 目录下,进行 git 工程初始化,命令如下:

git init
git add -A
git commit -m "my business assets project"

(2)在 Business Central 系统上导入 project,地址如下:

file:///D:/code/flow/business-application/business-application-kjar/
  • Step 5:将上述导入的资产文件 deploy 到 business-application-service Dev 服务中,deploy 成功示意图:

  • Step 6:在 Business Central 系统中 Manage 模块进行流程实例运行,并在 Track 模块中进行查看报告

jBPM 代码示例

下面示例代码详细参考 jbpm-exapmples 的子工程 jbpm-kjar-example,源码地址:https://download.csdn.net/download/zhuqiuhui/87452118

三、jBPM 整体架构

(图来自 jBPM 官方文档)

Execution
  • Core Engine:是 jBPM 整个项目的核心,支撑着整个工作流的顺利执行,可作为项目的一部分嵌入到项目中,也可被当作一个单独的服务进行独立部署,然后通过基于网页的方式或者远程调用接口的方式进行通讯连接。

  • Human Task Service:用于有人工参与的流程任务中

  • Persistence:流程实例运行时,可以持久化流程状态和历史日志信息

  • CDI、REST 和 JMS:应用程序在运行时连接 Core Engine 可通过 Java API、CDI 服务、REST API 或者 JMS API 方式

Modeling & Deployment
  • Process Designer:设计者可基于 web 环境设计和模拟业务流程

  • Data Modeler:允许非技术人员创建、查看和修改流程中的数据模型

  • Rule Authoring:允许在工作流中指定或者创建不同的业务规则组合,比如 decision tables、 guided rules等

  • Form Modeler:允许创建、生成或者编辑流程中的表格

  • Guvnor Repository:所有的资产通过 Guvnor 仓库存储和管理,同时可以进行版本控制、构建和部署

  • Eclipse Developer Tools:基于Eclipse的开发者工具是Eclipse IDE的一种拓展,目的是为了让开发者能够通过简单的拖拽的方式构建自己的工作流,测试自己的工作流和debug自己的工作流等

Runtime Management & Reporting

基于 web 的管理控制台允许使用者对流程进行操作,比如开始或者运行某个流程实例,也可以查看流程实例中的的任务列表、监控状态和监控报告。

四、流程引擎系列文章

• 流程引擎之发展史及对比总结:https://blog.csdn.net/zhuqiuhui/article/details/128986403

• 流程引擎之KIE项目简介:https://blog.csdn.net/zhuqiuhui/article/details/129035796

• 流程引擎之jBPM简介:https://blog.csdn.net/zhuqiuhui/article/details/129052162

• 流程引擎之Activiti简介:https://blog.csdn.net/zhuqiuhui/article/details/129107741

• 流程引擎之Camunda简介:https://blog.csdn.net/zhuqiuhui/article/details/129107897

• 流程引擎之Flowable简介:https://blog.csdn.net/zhuqiuhui/article/details/129109273

• 流程引擎之compileflow简介:https://blog.csdn.net/zhuqiuhui/article/details/129109391

五、参考

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bboyzqh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值