如何用jbpm做出一个状态可视化动态可编辑的工作流平台-1
来源:互联网 发布:傅园慧网络直播平台 编辑:程序博客网 时间:2024/06/01 21:54
什么是JBPM
在我们决定学习JBPM之前,还是先来看看这头骡子是个什么东西,以下是百度百科上的解释:
JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。
看完这个,你能准确的理解JBPM是个什么鸟吗?!我觉得有点难。还是再问问百度,搜一下其他关于JBPM的博客,给的例子都是JBPM4.0以前的了,知道4.0是什么时候发布的吗?2010年,但现在JBPM的最新版本已经是jbpm v6.4, 发布于2016年4月份,这6年的跨度中,这个开源代码项目已经作了改头换面的修改,变化之大你难以想象。这也促成了我打算写这一系列关于jbpm和bpmn的文章,因为大家得赶上潮流嘛,我打算以这个版本(6.4)作为例子给大家讲解jbpm。
好,那什么是jbpm, 把它的英文全称翻译过来是很容易理解的,java业务流程管理。但这里的jbpm是特指的,RedHat公司下面的一个JBoss开源项目,它提供了一套组件,能够让你快速灵活的开发出一套工作流管理系统。
什么是BPMN
那我们要coding出一套工作流管理系统,只有JBPM就够了吗?不够!我们在了解jbpm的时候不能把它和bpmn分开。什么是bpmn? 它的全称是Business process model and notation。这家伙是一套类似于UML和xml的流程设计语言,既能像UML一样以可视化的方式编辑路程,也能像XML一样编辑,而JBPM包含了一套完整的基于Java的BPMN API,通过读取bpmn2文件里面定义的流程内容,进而实现状态机控制,业务调度和数据库管理等。具体我们还是看看百度娘给我们的解释:
BPMN是由BPMI(The Business Process Management Initiative)开发的一套标准:业务流程建模符号(BPMN - Business Process Modeling Notation)。在 BPMI Notation Working Group超过2年的努力,于2004年5月对外发布了BPMN 1.0 规范。后BPMI并入到OMG组织,OMG于2011年推出BPMN2.0标准,对BPMN进行了重新定义(Business Process Model and Notation)。BPMN的主要目标是提供一些被所有业务用户容易理解的符号,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控。BPMN也支持提供一个内部的模型可以生成可执行的BPEL4WS。因此BPMN的出现,弥补了从业务流程设计到流程开发的间隙。
BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。而一个业务流程模型(Business Process Model),指一个由的图形对象(graphical objects)组成的网状图,图形对象包括活动(acticities)和用于定义这些活动执行顺序的流程控制器(flow controls)。
我们为什么使用JBPM
说了这么多没用的,我们还是回到开发者的视角,如果我们有很多工作流需要管理,维护,和监控,我们该怎么做?我想以下是我们使用JBPM有几大理由(到底有几大我也说不清,只能简单谈谈我的看法):
- 要管理工作流,我们必须要有工作流管理系统,但我们应该不会阿甘到想自己开发一套包含有状态机,有流程控制,流程监管,有数据库的系统,并且开发出自己的工作流设计语言。
- JBPM能很好的的解释BPMN设计的工作流,JBPM+BPMN是业界标准,我们必须选用。
- JBPM是一个开源项目,虽然接口不稳定,但至少一直在进化,也有完备的文档,背靠开源项目,找帮手不愁.
- 如何用jbpm做出一个状态可视化动态可编辑的工作流平台-1
- 动态设置EditText的可编辑状态
- 如何用Consul打造弹性可扩展的PaaS平台
- 如何用Consul打造弹性可扩展的PaaS平台
- EditView不可编辑状态和可编辑状态动态切换 及 EditView的其它特效
- JBPM工作流引擎测试的一个例子
- 不同类型的可编辑状态
- JBPM,ACTIVITI工作流平台3
- 一个可动态编辑多条数据的JS
- 构建vim的可视化C++编辑平台
- 如何用webpack实现自动化的前端构建工作流
- 如何用Delphi编写自己的可视化控件
- 如何用Delphi编写自己的可视化控件
- 如何用Delphi编写自己的可视化控件
- 如何用Delphi编写自己的可视化控件
- 如何用Delphi编写自己的可视化控件
- JBPM工作流demo--websale的开发 (1)
- 一个button设置EditText状态可编辑及不可编辑
- 密码控件安全技术浅析及攻击实例
- 浅析内存陷阱以switch-case举例
- 晒加班晒熬夜……“晒勤奋”是一种病!
- bjg面试--欢声笑语打出gg
- UWP应用部署失败,DEP0700:应用程序注册失败,0x80073cf6
- 如何用jbpm做出一个状态可视化动态可编辑的工作流平台-1
- 机器学习算法概览
- php函数getimagesize
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- MySQL: MyISAM和InnoDB的区别
- C++递归求斐波那契数列
- SpringAOP的实现过程
- android布局属性大全
- MySQL死锁问题实例分析及解决方法(主要是SQL语句可能会产生的问题)