工作流与BPM
工作流与BPM其实是两个概念,不过现在已经融合为一了,工作流顾名思义基于人的工作的流程,因为只有人才会工作work,当然机器也会工作,因此BPM(业务流程管理)的概念更进一步了,已经不管是人和机器,都是基于业务流程本身的一种管理,业务流程需要人工完成,那么人工必须完成任务;而业务流程需要机器完成,机器应该会自动完成,这个自动完成不是直接执行SQL操作数据库,而是基于服务之间的调用流程,是服务的组合完成,比如有一个数据库注册服务A和邮件服务B,如果需求要求注册后发送邮箱确认,那么使用流程实现服务A+服务B,而且能够每次用户注册都会执行这个流程。
因此,流程有两个好处:自动化流程和状态跟踪。也就是说,在流程执行过程中,能够有一个总的状态机跟踪整个流程的执行情况,从而让流程管理者能够实时了解当前流程在哪个情况?
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任务支持,而社区版则没有,这些坑未来版本里面会不会因为商业目的而人为制造呢?
领域事件是实现业务流程分析设计的突破入口,事件是业务流程和技术领域,包括领域驱动设计DDD、数据分析、商业智能等领域共用统一术语行话,从领域事件入手,可以起到纲举目张的事半功倍效果。
BPMN文章
业务流程重构
相关文章
Code rant: 从硬编码到配置、规则引擎、低代码或 DSL的复杂性时钟理论
2018工作流引擎比较:Airflow、Azkaban、Conductor、Oozie和 Amazon Step Functions
DDD福音:Zeebe是一个类似Kafka的可扩展的分布式事件溯源工作流引擎
使用Spring Boot开发基于Kubernetes的Zeebe工作流应用