如何设计一个流程引擎

article/2025/8/27 13:54:55

编者按:流程引擎是低代码平台的核心,它可以帮助我们去实现非常灵活的流程设计,极大的助力实现数据流转的的规范化。流程引擎是什么?国内外流程引擎有什么区别?如何设计一个流程引擎?

流程引擎

  • 什么是流程引擎

流程引擎,用来驱动业务按照设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。

  • 流程引擎的主要标准

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无法用来描写一个业务过程的调谐。

  • 国内外流程引擎的区别

市面上国外的流程引擎主要有osworkflow、jbpm、activiti、flowable、camunda,底层架构设计优秀。国内流程引擎,Java领域有广州天翎、炎黄盈动等、深圳奥哲、上海易正等,在设计理念和功能实现上各局特色,并且非常成熟,比如天翎主打的就是擅长中国式复杂业务流程处理。

国内外流程引擎有什么区别呢?主要有三个方面:

  • 功能应用需求

国外流程引擎功能上不能满足中国特色的流程应用需求,比如:抄送、会签、加签、传阅、跳转、任意流、退回、取回、撤销、一人多部门等需求,这些需求可以通过扩展开发实现,但是开发周期较长,风险较大。

  • 组织模型需求

流程引擎自带简单的组织用户表,比如camunda流程引擎自带了用户表(act_id_user)、用户群组表(act_id_group)、用户群组关联表(act_id_membership)这几张表,功能十分简单,基本上满足不了国内企业级应用需求,需要单独涉及组织机构表,然后跟流程引擎进行集成。比如最常见需求——多组织流程架构支持,集团总部、子公司多级组织架构,国内组织架构涉及到有组织、部门、用户、岗位、职务多个要素,这些要素间有复杂逻辑关系。

  • 国外流程引擎具有局限性

国外流程引擎以嵌入式形式存在,核心考量是简化程序开发,所以经常是作为开发工具IDE的插件形式(现在也做了些调整,提供web方式定义流程,单功能比较弱),比如财务软件中嵌入一个流程,最著名的是Activiti和flowable(同一个人开发)。一些国内低代码平台也是基于Activiti去魔改的,有一定局限性,比如宏天、红迅,所以不可避免受到很多限制。

怎样设计流程引擎

  • 流程逻辑执行

  • 状态机原理

状态机(State Machine),定义事物状态以及这些状态之间转移和动作等行为的数学模型。一般可以分为有限状态机、并发状态机、分层状态机等。

没有流程引擎前的弱版流程引擎,必须要有状态,状态即节点,状态机= 流程 + 状态。

  • Xml转换Object

Xml ,一种数据格式,Object ,对象。做流程图的项目时,新的流程定义为Xml的,需要对Xml与Java Object进行互转。

( 流程描述(XML))

  • 流程运行状态

流程状态是对于一个对象在流程的不同阶段进行概括性、结果性、引导性的描述。

(流程运行时类图)

 

WFRunner——工作流处理的对外接口,需要用到工作流的调用均通过此对象完成;

StateMachine——工作流状态机的实现,是整个工作流实现系统的核心,具体说明参见API文档;

ActorRT——当前处理者运行时状态;

ActorHIS——历史处理者处理历史纪录;

FlowStateRT——流程当前状态,比如:挂起、运行等;

NodeRT——当前节点运行时状态;一个Node可以对应多个Actor;

RelationHIS——流程路径处理历史纪录;

其他几个类均为实现WorkFlow运行所需要的辅助功能类。

流程引擎的效果和应用

流程引擎的应用十分广泛,本文将展示部分常见的流程引擎应用场景。

常见效果展示,包括后台设计、前台运行、流程干预、流程报表统计等。

 (流程后台设计1—图形)

 

(流程后台设计2-源代码)

(流程后台设计3-子流程)

(流程企业域展示——流程干预)

(流程后台设计4-报表设计)

 

(流程前台运行)

流程引擎也可用于去整合多个应用系统,

  • 集成第三方系统。通过RESTFUL API与第三方业务系统集成、业务数据保存在第三方系统,流程数据保存在流程引擎上。

 

  • 流程数据分析。流程引擎可以帮助用户从多维度、多时间、多角度分析流程数据。另外,令人可喜的是MyApps低代码开发平台的流程引擎支持根据实际业务需求新增数据分析字段,满足了企业个性化需求。

 


http://chatgpt.dhexx.cn/article/Cw1NlbfB.shtml

相关文章

规则/流程引擎-ice简介

ice简介 视频地址: https://www.bilibili.com/video/BV1hg411A7jx/ ice简介视频 致力于解决灵活繁复的硬编码问题 官方文档:http://waitmoon.com/zh 背景介绍 规则/流程引擎想必大家并不陌生,耳熟能详的就有Drools,Esper&#x…

流程引擎基础知识

流程引擎基础知识 流程部署流程取消部署流程发起流程取回流程作废流程委托流程流转常用流程表介绍备注 流程部署 1.后台直接导入bpmn /**流程部署源代码*/public void deploy() {ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService re…

规则引擎和流程引擎我该怎么理解

流程引擎 什么是流程引擎 流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实…

流程引擎:流程定义、流程实例、任务

流程引擎:流程定义、流程实例、任务 流程定义(ProcessDefinition) 基于bpmn2图形流程 流程实例(ProcessInstance) 一个流程定义可以启动多个流程实例,流程实例之间互不影响 流程实例任务(Tasks) 一个流程实例对应多个流程任务(人工与自动)

流程引擎(flowable)之流程相关

代码示例:流程部署/发布 InputStream inputStream new DefaultResourceLoader().getResource("classpath:BusinessProcessBeanTest.test.bpmn20.xml").getInputStream();Deployment deploy configuration.getRepositoryService().createDeployment()//…

流程引擎应用及分析

介绍:工作流引擎目前比较热门的有Activiti、Flowable等,Flowable是Activiti(Alfresco持有的注册商标)的fork版本。下面就两种工作流引擎做一个比较和入门分析。 模块一 对比: Activiti现存文档比Flowable多,有大量与业务集成的文…

《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例

14天学习训练营导师课程: 邓澎波《Flowable流程引擎-基础篇【2022版】》 邓澎波《Flowable流程引擎-高级篇【2022版】》 学习笔记《Flowable流程引擎从零到壹》回城传送 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创…

流程引擎的架构设计

流程引擎的架构设计 1 什么是流程引擎 流程引擎是一个底层支撑平台,是为提供流程处理而开发设计的。流程引擎和流程应用,以及应用程序的关系如下图所示。 常见的支撑场景有:Workflow、BPM、流程编排等。本次分享,主要从 BPM 流程…

流程引擎是什么?有什么作用?

编者按:本文详细论述了流程引擎的概念,流程引擎的作用以及选型的要旨,并介绍了自主研发具有中国特色的流程引擎。 关键词:流程引擎,集成性,数据分析,BPMN2.0规范,中国特色&#xff…

流程引擎BPM对比

流程引擎定义 流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。通俗的…

流程引擎camunda

简介 Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。笔者单位里主要是用于业务审批。 学习了解资料尽量去官方查看https://docs.camunda.org,查看版本7.18,一步一个环节比较详…

选对流程引擎,玩转流程设计不是梦

编者按:本文详细论述了流程引擎的概念,流程引擎选择的要旨,并介绍了流程引擎的应用场景。 流程引擎的概念流程引擎怎么选流程引擎能做什么 在这个数字化办公时代,流程设计对于企业管理者来具有重大意义,一个优秀的工作…

pojo类转换工具

每次pojo类转换的时候很麻烦,所以就在搜pojo类快速转换方法,突然发现一个比较好的pojo类转换工具mapstruct 。 项目中只需要添加如下依赖: 然后定义一个接口添加Mapper(componentModel "spring")注解 便可以直接使用该工具…

JOIOJI

JOIOJI (joioji.c/.cpp/.pas) 【问题描述】 JOIOJIさん是JOI君的叔叔。“JOIOJI”这个名字是由“J、O、I”三个字母各两个构成的。 最近,JOIOJIさん有了一个孩子。JOIOJIさん想让自己孩子的名字和自己一样由“J、O、I”三个字母构成,并且想让“J、O、…

ARM BTI指令介绍

目录 一、JOP 二、BTI 三、启用BTI 四、BTI是怎么实现的 一、JOP JOP(Jump-oriented programming)类似于ROP(Return-Oriented Programming)。在 ROP 攻击中,会扫描出useful gadgets(易被攻击的一段代码…

Jopr介绍

转载文章请注明:转载自JBossWeek.com [ http://www.jbossweek.com] 如果您是一名系统管理员,正在承受着如下的煎熬:发疯地寻找配置某个服务的JBoss AS配置文件;痛苦地敲着冗长的JBoss管理命令行;眼花缭乱地在n个终端窗…

JOptionPane

JOptionPane提供了许多对话框样式,该类能够让你在不编写任何专门对话框代码的情况下弹出一个简单的对话框。 JOptionPane类提供了7个构造方法用于创建JOptionPane的类对象,不过在实际使用时, 通常不是用new方式创建,而是使用JOpti…

什么pojo

pojo(Plain Ordinary Java Object):普通的Java对象,其实就是简单的JavaBean实体类。对应数据库里的某一张表,pojo里的每一个属性都和该表中的字段一 一对应。 POJO有一些private的参数作为对象的属性。然后针对每个参…

随机变量的期望和方差

X服从两点分布,则 X服从超几何分布,即 ,则 X服从二项分布,即 ,则 X服从泊松分布,即 ,则 连续型 X服从均匀分布,即 ,则 , X服从指数分布&#xff…

概率论 —— 相关分布以及期望方差的求法汇总

离散型 1. 两点分布(伯努利分布) 在一次试验中,事bai件A出现的概du率为P,事件A不出现的概率为ql -p,若以X记一次试zhi验中A出现的次数,则X仅取0、I两个值。 两点分布是试验次数为1的伯努利试验。 2. 二项…