1.什么是工作流
-
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
-
工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表達并对其实施计算
-
简单来说,就是为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者是任务。
-
再简单点,工作流就是对业务的流程抽象化。
比如要实现一个鸡会唱、跳、rap 并且工作两年半才能考核通过 否则考核失败
正常的java写法:繁琐、可视性差、不利于维护
工作流:简洁可视性好利于维护
2.为什么要用工作流
-
相信大家都了解流水线的好处,蒸汽时代就是将手工化转变成了流水线化,手工有明显的一个缺点,就是生产效率极低,而流水线则可以提高生成效率。
-
那么工作流则是将业务流水线化,从原来的一团处理逻辑清晰的划分成为若干个步骤,每个步骤流转清晰明显。每个模块有非常高的内聚,模块之前有非常清晰的依赖。
-
举个例子,退款本身非常复杂,运营、产品、技术、财务可能都无法从单一的角色来解释清楚到底退款的整个链路和关键环节,但是通过工作流的方式来呈现,则所有人能快速看到退款到底是个什么样的业务。
好处
2.1.业务可视化(业务逻辑一目了然)
2.2.业务可编排
-
业务不可能永远不变化,很重要的一点是提高它的灵活可扩展性。
-
工作流大大提高了业务进一步在代码层面的灵活性。
-
通过节点的调整来快速调整业务流程,可以灵活增删节点,而不至于对整个流程有影响。
2.3.自动重试
-
工作流引擎提供了框架层面持久化和自动重试的能力
-
比如一些优惠卷的发放、很可能会发放失败需要重试、但是又不想把所以节点从头到尾重试一遍,此时工作流引擎的持久化和节点重试能力,则是非常完美的方案。
3.现在市面上有哪些主流工作引擎以及对比
3.1.Osworkflow
-
轻量化比较灵活
-
在流程建模方面不太友好,需要手动编写xml去定义流程文件
-
扩展开发有一定的难度、流程简单的话Osworkflow是很好的选择
-
官方网站:http://www.opensymphony.com/osworkflow/(官网已挂)
3.2.JBPM
-
完整的工作流引擎,jBPM4引入PVM,拥有了强大的扩展性
-
增加了BPMS特性,以及加入了面向业务人员的Web建模器和简单统计分析功能
-
jBPM5基于原先的Drools Flow 通过内容仓库增加对流程可视化的支持
-
由于放弃了jBPM4的PVM,引擎的可扩展性受到损害(后来很少人用)
3.3.Activiti(推荐)
-
最新activiti 7 将系统中复杂的业务流程抽取出来使用专门的建模语言BPMN2.0进行定义,让流程按照预先定义的流程进行执行
-
实现流程由active进行管理、减少业务变更以及系统升级改造的工作量,从而提高了系统的健壮性、减少了维护成本。
-
Activiti6、Activiti5 主要都是由Tijs Rademakers 开源的 后来因为团队分歧 离开团队 创建了 flowable
3.4.flowable(Tijs Rademakers)(推荐)
-
flowable基于activiti6衍生出来的版本 轻量级 使用java开发
-
修复了activiti6的bug,部署BPMN2.0的流程定义、创建流程实例,查询和访问流程
-
过引入Flowable jar包,或者直接使用Flowable的Rest API来进行业务流程引擎的操作
-
官网:Open Source
4.工作流应该怎么用
以flowable为例子
具体操作请访问:
Flowable实战(一)启动第一个完整流程_jinyangjie0的博客-CSDN博客_flowable发起流程^v63^control,201^v3^control_2,213^v2^t3_control2&utm_term=flowable%E5%AE%9E%E6%88%98&spm=1018.2226.3001.4187