最近我们有个使用了jbpm 6.2(6.2是一个较大的里程碑)的批处理模块,因为大BOSS一直觉得太重了,希望有更加轻量级的解决方案,因为我们基本上没有真正意义上流程的概念,只有静态的流程图,因为一直忙于其他事情,于是这周才正式开始研究jbpm的一些细节(前几年很多支持的项目中也接触过,不过更多的是解决一些故障类问题,本身对流程类的不感冒)。顺便研究了下jbpm。

jbpm的整体技术栈从用户层面组成如下:

activiti技术栈:

bpmn web设计器:https://bpmn.io/,集成Activiti Modeler到项目中,可以参考http://whatlookingfor.com/2016/10/11/activiti%E5%85%A5%E9%97%A8%E5%85%AD-%E9%9B%86%E6%88%90%E6%96%B0%E7%89%88Activiti-Modeler%E4%B8%8ERest%E6%9C%8D%E5%8A%A1/index.html。

http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html

模型只要符合bpmn2规范即可,不一定要使用activiti自己的设计器进行设计。数据库可以中自己的DAO替换activiti实现,只要接口一致即可,REST也一样,可以用应用自己的管理界面。支持web基于bpmn2的流程设计器。

jbpm的整体技术栈从实现层面组成如下:

在实际应用中,几乎很少有直接使用jbpm kb的,一般都是集成到ERP或者portal中,不过是整合深入的问题,整合深入的可能只需要设计工具得到bpmn流程图以及通过api调用运行时的一些功能。整合不深的可能就流程的流转直接依赖于jbpm提供的整套方案。

jbpm 6 vs activities 5(不过activities是jbpm之后创始人分道扬镳新搞的,这个很早就知道了,跟mysql和mariadb一样):

jBPM 6
 
jBPM 6 is the latest community version of the jBPM project.  It is based on the BPMN 2.0 specification and supports the entire life cycle of the business process (from authoring through execution to monitoring and management).
It offers open-source business process execution and management, including
 
  • Embeddable, lightweight Java process engine, supporting native BPMN 2.0 execution
  • human interaction using an independent WS-HT task service
  • BPMN 2.0 process modeling in Eclipse (developers) and the web (business users)
  • web tooling to model, deploy, execute and monitor your processes, including for example a data and form modeler, simulation, deployment, task lists, etc.
  • web-based business activity monitoring and reporting that allows you to define your own reports
  • managing and deploying your processes using technologies underneath like Git and Maven
  • an execution server that you can remotely connect to (REST, JMS) and can be deployed in a clustered environment for load balancing and high availability
  • tight, powerful integration with business rules and event processing
 
Activiti
 
Activiti 5.15.0 is the latest community version of the Activiti project. It's a Java process engine that runs BPMN 2 processes natively.  It will have the following key properties:
  • Allows user updates to be combined with process updates in a single transaction
  • Runs on any Java environment like Spring, JTA, standalone with any form of transaction demarcation.
  • Easy to get up and running with the setup utility
  • Built to support the cloud scalability from the ground up
  • Very simple to add new custom activity types and complete dedicated process languages
  • Rock solid
  • Extremely fast
  • Transactional timers
  • Asynchronous continuations
  • Hidden event listeners for decoupling software technical details from business level diagram
  • Ability to test process executions in isolation in a plain unit test
I have referred few articles and given below are the differences between jBPM and Activiti:
  
Description
Activiti
jBPM
Community members
Activiti has a base team consisting of
Alfresco employees. In addition,
companies like SpringSource,
FuseSource and MuleSoft provide
resources on specific components. And of course, there are individual open source developers committing to the Activiti project.
 
jBPM has a base team of JBoss
employees. In addition there are individual committers.
 
Spring support
Activiti has native Spring support, which makes it very easy use Spring beans in your processes and use Spring for JPA and transaction management.
 
 
jBPM has no native Spring
support, but you can use Spring
with additional development effort.
 
Business rules support
Activiti provides a basic integration with the Drools rule engine to support the BPMN 2.0 business rule task.
 
 
jBPM and Drools are integrated on a project level and therefore there’s native integration with Drools on various levels.
 
 
Additional tools
Activiti provides a modeler (Oryx) and designer (Eclipse) tool to model new process definitions. But the main differentiator is the Activiti Explorer, which provides an easy-to-use web interface to start new processes, work with tasks and forms and manage the running processes. In addition it provides ad-hoc task support and collaboration functionality.
 
 
 
jBPM also provides a modeler
based on the Oryx project and a Eclipse designer. With a web
application you can start new
process instances and work with tasks. The form support is
limited
Project
Activiti has a strong developer and user community with a solid release schedule of 2 months. Its main components are the Engine, Designer, Explorer and REST application
 
jBPM has a strong developer and user community. The release schedule is not crystal clear and  some releases have been postponed a couple of times. The Designer application is (at the moment of writing) still based on Drools Flow and the promised new Eclipse plug-in keeps getting postponed
 

其他特性还没有仔细研究,后面会把我们实际用到的表使用以及重要性都梳理出来并更新(后续剥离敏感信息后发上来,也可以私信留言)。

最近继续研究bpm相关的框架,在搜索jbpm 6和activities 5对比的时候,偶然发现2年前,jbpm的原创始团队又另立门户了,搞了个Flowable 6.0出来,参考:https://blog.csdn.net/hj7jay/article/details/68483096。这些坑大了,还是选择jbpm吧,起码后面的金主redhat为持续支持。

下面摘录一份不恰当(不恰当是因为jbpm 5是被Jboss废弃的版本)的jbpm 5和activities 5的对比:Activiti5与jBPM5技术组成对比

序号 技术组成 Activiti jBPM5
1 数据库持久层ORM MyBatis3 Hibernate3
2 持久化标准 JPA规范
3 事务管理 MyBatis机制/Spring事务控制 Bitronix,基于JTA事务管理
4 数据库连接方式 Jdbc/DataSource Jdbc/DataSource
5 支持数据库 Oracle、SQL Server、MySQL等多数数据库 Oracle、SQL Server、MySQL等多数数据库
6 设计模式 Command模式、观察者模式等  
7 内部服务通讯 Service间通过API调用 基于Apache Mina异步通讯
8 集成接口 SOAP、Mule、RESTful 消息通讯
9 支持的流程格式 BPMN2、xPDL、jPDL等 目前仅只支持BPMN2 xml
10 引擎核心 PVM(流程虚拟机) Drools
11 技术前身 jBPM3、jBPM4 Drools Flow
12 所属公司 Alfresco jBoss.org

国外还有一家自称比jbpm 6 NB的工作流厂商,Camunda BPM 7,可以参考下。

jbpm 6 vs activities 5评估(持续更新、亲测实际项目评估)的更多相关文章

  1. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  2. ( 译、持续更新 ) JavaScript 上分小技巧(四)

    后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...

  3. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  4. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

  5. 消息队列面试题、RabbitMQ面试题、Kafka面试题、RocketMQ面试题 (史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  6. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

  7. iOS系列教程 目录 (持续更新...)

      前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...

  8. ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

  9. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

随机推荐

  1. network error:software caused connection abort

    使用Putty链接阿里云香港服务器报这个错误. vim /etc/ssh/sshd_config 找到如下配置 #ClientAliveInterval 540 #ClientAliveCountMa ...

  2. 重签名提示:无法对 jar 进行签名: java.util.zip.ZipException

    使用jarsigner对APK重签名,提示:jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed ...

  3. Java Selenium - 浏览器操作

    浏览器主要操作方法来自接口 org.openqa.selenium.WebDriver , 实现于org.openqa.selenium.remote.RemoteWebDriver这个类,然后不同浏 ...

  4. 笔记:yum和apt-get的区别

    rpm包和deb包是两种Linux系统下最常见的安装包格式,在安装一些软件或服务的时候免不了要和它们打交道. rpm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上, deb包 ...

  5. 使用github(一)

    一.使用Github(目的.基本概念) 1.目的 借助github托管项目代码 2.基本概念 (1)仓库(Repository) 仓库即项目的意思,你想在github上开源一个项目,那就必须要新建一个 ...

  6. 5.C#释放非托管资源1

    释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托 ...

  7. 闪存卡被创建pv报错

    背景:某机器有2块闪存卡,利用LVM,将其挂载到一个目录供测试使用: 之前厂商已经安装了闪存卡对应的驱动,fdisk可以看到闪存卡信息,但是在pvcreate创建时,遭遇如下错误: # pvcreat ...

  8. openCV学习——一、图像读取、显示、输出

    openCV学习——一.图像读取.显示.输出   一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...

  9. opencv-resize()放缩函数简介

    主要介绍函数resize(); 图像缩放的效果图如下: 主程序代码及函数解释如下所示: /******************************************************* ...

  10. InstallShield2015制作安装包----------安装后实现自动运行

    安装向导完成后,自动运行. 实现的手段是:InstallScript脚本OnEnd()函数里面,调用可执行程序. 备注:INSTALLDIR预定义变量存放着程序的安装目录. //安装后运行dispat ...