如何设计一个流程引擎
流程引擎是低代码平台的核心,它可以帮助我们去实现非常灵活的流程设计,极大的助力实现数据流转的的规范化。流程引擎是什么?国内外流程引擎有什么区别?如何设计一个流程引擎?
一、流程引擎
1. 什么是流程引擎
流程引擎,用来驱动业务按照设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。
2. 流程引擎的主要标准
BPMN(Business Process Model And Notation), 业务流程模型和符号,是由BPMI(BusinessProcess Management Initiative)开发的一套标准的业务流程建模符号,使用 BPMN 提供的符号可以创建业务流程。即BPMN是用来建模业务流程的标准规则。
WFMC(Workflow Management Coalition),国际工作流管理联盟。于1993年成立,发布了一系列的工作流定义、软件接口的草案文本,是目前世界上公认的最具权威性的工作流标准制定机构,得到了广泛的支持和应用。
2002 年10月25日,WFMC发布了基于XML的流程定义语言1.0版的最终文本(Workflow Process Definition Interface——XML Process Definition Language 文档编号:WFMC-TC-1025),以及此前发布的工作流应用软件接口规范WFMC-TC-1009, WFMC-TC-1013等系列文件,构成了工作流定义及系统的设计标准。
BPEL(Business Process Execution Language),意为业务过程执行语言,是一种基于XML的,用来描写业务过程的编程语言,被描写的业务过程的每个单一步骤则由Web服务来实现。
2002年IBM、BEA和微软一起开发和引入了BPEL作为描写协调Web服务的语言。这个描写的本身也由Web服务提供,并可以当作Web服务来使用。通过BPEL可以描写一个参加一个Web服务过程的Web服务的接口,比如信息需要按照怎样的顺序被输入,但是BPEL无法用来描写一个业务过程的调谐。
3. 国内外流程引擎的区别
市面上国外的流程引擎主要有osworkflow、jbpm、activiti、flowable、camunda,底层架构设计优秀。国内流程引擎,Java领域有广州天翎、炎黄盈动等、深圳奥哲、上海易正等,在设计理念和功能实现上各局特色,并且非常成熟,比如天翎主打的就是擅长中国式复杂业务流程处理。
国内外流程引擎有什么区别呢?主要有三个方面:
4. 功能应用需求
国外流程引擎功能上不能满足中国特色的流程应用需求,比如:抄送、会签、加签、传阅、跳转、任意流、退回、取回、撤销、一人多部门等需求,这些需求可以通过扩展开发实现,但是开发周期较长,风险较大。
5. 组织模型需求
流程引擎自带简单的组织用户表,比如camunda流程引擎自带了用户表(act_id_user)、用户群组表(act_id_group)、用户群组关联表(act_id_membership)这几张表,功能十分简单,基本上满足不了国内企业级应用需求,需要单独涉及组织机构表,然后跟流程引擎进行集成。比如最常见需求——多组织流程架构支持,集团总部、子公司多级组织架构,国内组织架构涉及到有组织、部门、用户、岗位、职务多个要素,这些要素间有复杂逻辑关系。
6. 国外流程引擎具有局限性
国外流程引擎以嵌入式形式存在,核心考量是简化程序开发,所以经常是作为开发工具IDE的插件形式(现在也做了些调整,提供web方式定义流程,单功能比较弱),比如财务软件中嵌入一个流程,最著名的是Activiti和flowable(同一个人开发)。一些国内低代码平台也是基于Activiti去魔改的,有一定局限性,比如宏天、红迅,所以不可避免受到很多限制。
二、怎样设计流程引擎
流程逻辑执行:
1. 状态机原理
状态机(State Machine),定义事物状态以及这些状态之间转移和动作等行为的数学模型。一般可以分为有限状态机、并发状态机、分层状态机等。
没有流程引擎前的弱版流程引擎,必须要有状态,状态即节点,状态机= 流程 + 状态。
2. Xml转换Object
Xml ,一种数据格式,Object ,对象。做流程图的项目时,新的流程定义为Xml的,需要对Xml与Java Object进行互转。
流程描述(XML)
3. 流程运行状态
流程状态是对于一个对象在流程的不同阶段进行概括性、结果性、引导性的描述。
(流程运行时类图)
- WFRunner——工作流处理的对外接口,需要用到工作流的调用均通过此对象完成;
- StateMachine——工作流状态机的实现,是整个工作流实现系统的核心,具体说明参见API文档;
- ActorRT——当前处理者运行时状态;
- ActorHIS——历史处理者处理历史纪录;
- FlowStateRT——流程当前状态,比如:挂起、运行等;
- NodeRT——当前节点运行时状态;一个Node可以对应多个Actor;
- RelationHIS——流程路径处理历史纪录;
其他几个类均为实现WorkFlow运行所需要的辅助功能类。
三、流程引擎的效果和应用
流程引擎的应用十分广泛,本文将展示部分常见的流程引擎应用场景。
常见效果展示,包括后台设计、前台运行、流程干预、流程报表统计等。
(流程后台设计1—图形)
(流程后台设计2-源代码)
(流程后台设计3-子流程)
(流程企业域展示——流程干预)
(流程后台设计4-报表设计)
(流程前台运行)
流程引擎也可用于去整合多个应用系统。
1)集成第三方系统
通过RESTFUL API与第三方业务系统集成、业务数据保存在第三方系统,流程数据保存在流程引擎上。
2)流程数据分析
流程引擎可以帮助用户从多维度、多时间、多角度分析流程数据。
本文作者 @周志军Jarod 。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!