工作流与BPM其实是两个概念,不过现在已经融合为一了,工作流顾名思义基于人的工作的流程,因为只有人才会工作work,当然机器也会工作,因此BPM(业务流程管理)的概念更进一步了,已经不管是人和机器,都是基于业务流程本身的一种管理,业务流程需要人工完成,那么人工必须完成任务;而业务流程需要机器完成,机器应该会自动完成,这个自动完成不是直接执行SQL操作数据库,而是基于服务之间的调用流程,是服务的组合完成,比如有一个数据库注册服务A和邮件服务B,如果需求要求注册后发送邮箱确认,那么使用流程实现服务A+服务B,而且能够每次用户注册都会执行这个流程。
因此,流程有两个好处:自动化流程和状态跟踪。也就是说,在流程执行过程中,能够有一个总的状态机跟踪整个流程的执行情况,从而让流程管理者能够实时了解当前流程在哪个情况?
https://www.jdon.com/workflow-bpm.html
BPM有各种开源软件,以Activiti为首的Java开源是主要流派,基于Activiti有各种分支,比如Camunda和Flowable,大概主要分为两个功能:流程设计和流程运行。
过去,流程引擎总是耦合成为一个SDK,虽然很轻量,但是无法应付大中型复杂的任务管理,特别是基于ESB服务总线之上的服务调度,这部分主要依靠BPEL实现,相关开源是APache ODE,也就是说扩展性很差,在如今微服务和云原生架构的发展下,流程引擎的分布式运行和高可用性对于一个组织或公司越来越重要,否则流程服务器瘫痪代表整个组织运行的中断,目前基于Serverless无服务器架构下的云流程也是风生水起。无服务器Serverless将变革工作流BPM
下面是一些工作流引擎产品列表:
轻量级工作流引擎,如:Camunda,Activiti,JBoss jBPM。
BPM套件遵循“零代码”方法,如:IBM,Pega,Software AG。
带DSL的纯状态机,如:Amazon Simple Workflow,Netflix conductor。
简单的“事件反应机器”,如:IFTTT,Zapier,Microsoft Flow。
大数据或ETL的数据流框架,如:Spring Cloud数据流,Apache Airflow。
在BPM领域有一个标准的图形化符号语言BPMN,遵循零代码或少写代码的宗旨,BPMN 2.0以后融入了BPEL,从而实现人工流和服务流程的综合调度编排。
学习掌握设计一个BPMN案例,需要比较高的逻辑能力,有过严格的编程逻辑训练,或者相关业务的领域专家能力,初学者建议分三步学习:
启动事件 结束事件和一个用户任务(表单),主要掌握事件、任务和顺序流的概念
请假流程。这实际上是一个审核流,主要掌握网关实现批准或否决的用途,网关只能和顺序流衔接
四眼原则。双人审核流,有两个人审核,主要掌握事件和子流程概念,BPMN中事件有60多种,很多事件有使用场景,上下文不同事件的概念不同,使用事件可以实现各种流程路由,如回退、取回、抄送、关系等功能。
BPMN的主要元素如下:这些符号如同计算机一个语言的语法,流程是由这些符号组合表达的,如何使用这些符号表达一个复杂流程是建模人员专业素质体现:
为了将服务流程和人工流程全部集成到BPMN中,需要一种复杂的架构设计,下面是商业产品ActiveVOS的设计图,标准的任务管理系统负责处理人工相关的工作;整合了BPEL BPEL4People的BPM引擎是整个系统真正核心,领域专家可以使用BPMN2设计测试部署流程到其中,其管理控制台能够进行流程运行的各种管理,BPM引擎不但负责向人工任务系统发送任务,还负责向各个REST端点服务交互通讯。
开源项目Activiti从7版本以后开始引入Spring cloud架构,这是一个好的开始,但是因为它也有企业版,比如它的企业版有REST任务支持,而社区版则没有,这些坑未来版本里面会不会因为商业目的而人为制造呢?