流程引擎在OA等企业办公系统中使用,为无纸办公,信息化办公带来了巨大的作用。
目前成熟的流程引擎已经广泛运用到电商等领域。信也科技作为国内知名的金融科技公司,为了适应业务的变化和拓展,在业务中台系统中使用了自研的轻量级流程引擎。
一、流程引擎概述
1、流程引擎的优点
- 对于流程复杂易变的业务场景能够大大降低维护和测试的成本
- 业务和开发基于流程模型进行沟通,基于业务建模快速部署
2、开源的Java流程引擎
- 1、Activiti 是由jBPM的创建者Tom Baeyen在离开JBoss后建立的项目,构建在开发jBPM 版本1到4时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。
- 2、JBoss jBPM 是老牌的开源流程引擎,jBPM在200年10月18日发布了2.0版本,并在同一天加入JBoss,成为了JBoss企业中间件平台的一个组成部分。
- 3、JFlow 开始于2003年,100%开源,功能强大丰富,图形化的配置,功能性配置较高,它是在中国国情下成长起来的优秀的工作流引擎。在国内有一定的市场地位,是国内著名的老牌工作流引擎。
- 4、FixFlow 是方正国际自主研发的开源BPM流程引擎。吸纳了jBPM3和Activiti5等国际开源流程引擎的精髓,参考了SAP Netwaver、IBM BPM 等重量级BPM产品功能。
二、背景和目标
- 流程可定义:1)流转 2)超时 3)重试 4)回滚
- 流程自动执行:1)串行、并行、条件决策 2)流转参数传递 3)异常自动补偿
三、选型:基于状态机模型自研的流程引擎
适用的才是最好的,以上几种开源引擎都比较重。对于核心的交易系统来说并不适用,所以决定自研一套轻便简单的流程引擎。
1、状态机的概念
有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规模的使用。
2、状态机的要素
状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。
- 条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
- 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
- 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
3、使用状态机的原因
- 有限状态机是一种对象行为建模工具,适用对象有一个明确并且复杂的生命流,并且在状态变迁存在不同的触发条件以及处理行为。
- 使用状态机来管理对象生命流的好处更多体现在代码的可维护性、可测试性上,明确的状态条件、原子的响应动作、事件驱动迁移目标状态,对于流程复杂易变的业务场景能大大减轻维护和测试的难度。
四、流程引擎的设计和实现
信也科技是一家金融科技公司,在资金提供方与资金需求方之间提供信贷服务是公司的核心业务,而标的是资金供需双方间的中介和桥梁。
本章以标的相关的贷前交易系统为例,说明了信也科技的业务中台-流程引擎的设计和工作原理。
1、业务中台的交易能力模型
2、标的生命周期
3、标的的状态流转
4、业务中台的整体架构图
5、流程引擎的工作时序
6、流程引擎的类图
7、流程的执行示例