工作流01

article/2025/8/25 16:37:14

工作流 workflow

18.1 状态机解决流程问题

工作流:就是一个可以处理复杂情况的状态机。

例如,员工请假这个流程:首先员工提交请假申请,假设有项目经理进行审批,审批有两种结果:通过或者拒绝。

实现上面这个需求:

1创建一张请假表,表中有员工的 id,请假的天数、请假的理由、项目经理的 id、请假的状态 status。

2当员工请假的时候,就自动向这张表中添加一条记录。

3然后,当项目经理登录到 OA 的时候,就来这张表中查询自己需要审批的请假申请,查到之后,可以选择批准或者拒绝。

4接下来,员工登录之后,就可以查询到自己的请假申请的审批结果。

在这样的实现思路中,请假的流程我们是通过 status 这个字段来控制的。例如:

●status=0 表示待审批

●status=1 表示审批通过

●status=2 表示拒绝

上面这个例子,status 就是状态码,通过这个字段的值来控制流程的状态,这种方式我们可以称之为使用状态机来解决流程问题,但是,这种思路,只能解决非常简单的流程问题。

18.2 一些复杂的流程

报销审批流程

大区经理审批

财务审批

提交报销申请

部门经理审批

自动打款

结束

一审批不通过,用户重新提交申请一

一审批不通过,用户重新提交申请一

一审批不通过,用户重新提交中请

在这个流程中,已经没法使用 status 去描述这个请假走到哪一步了。如果非要用 status,那么 status 可能会有很多取值:

●0:表示员工提交报销申请

●1: 表示部门经理审批通过

●2:表示部门经理审批不通过,员工需要重新提交

●3:表示大区经理审批通过

●4:表示大区经理审批不通过

●。。。

笔记本电脑生产流程

一审批不通过,重新设计

设计一台笔记本电

准备生产线

经理审批

载入生产图纸

(子流程)

开始

生产屏幕

等待准备工作

完成

组装笔记本

生产键盘

结束

生产主板

这个流程中, 不仅有串行任务,也有并行任务。虽然技术上来说,status 也还能做,但是,用 status 字段去描述这个流程,会非常非常复杂。

18.3 三大工作流

三大主流工作流,只要掌握其中一个,另外两个可以非常容易的上手。

最早的工作流是 jBPM,可以目前市面上大部分工作流的共同祖先。

●Activiti:当 jBPM 发展到 jBPM4 这个版本的时候,内部发生了分歧,然后一波人出来单干,基于 jBPM4 开发出来了 Activiti5;留下来的人,继续开发 jBPM5 的时候,几乎完全重写了 jBPM4 的代码。目前 Activiti 的设计侧重于云,即更靠拢 Spring Cloud、Docker、K8s 等。

●Flowable:Activiti5 在发展了一段时间之后,又从中分离出来一个团队,开发出来了 Flowable。Flowable 目前的核心思路还是做一个功能非常非常完善的流程引擎工具。除了常用的最最基本的工作流之外,Flowable 还提供了很多扩展点。

●Camunda:Activiti5 发展没多久,从 Activiti5 中分离中的团队,开发的 Camunda。在这三个主流的流程引擎中,Camunda 是最为轻量级的一个,如果我们的系统,当用户在使用的过程中,需要动态的绘制流程图,那么可以使用 Camunda,这是一个小巧的工具,可以非常的方便的嵌入到我们自己的系统中。Camunda 还提供了一个 bpmn.js 的工具,可以非常方便的实现流程图的绘制。

18.4 流程图

工作流执行的基础是流程图。

一个完整的流程,要干嘛,先得画出来一个完整的流程图。

上面介绍了三种不同的工作流,那么三种不同的工作流的流程图绘制方式是否一样?

其实,流程图的绘制,有一套统一的标准:BPMN(Business Process Model And Notation),中文译作业务流程模型和标记法。

BPMN 就是一套图形化表示法,用图形来绘制、梳理业务流程模型。就是说,BPMN 其实是一套非常古老的流程图规范,Activiti、Flowable 以及 Camunda 都是支持这个规范的。所以,无论使用哪一个流程图,都可以依照 BPMN 规范去绘制流程图。

虽然 BPMN 大家都支持,但是,在具体的使用细节上,不同的流程引擎还是有差别的。

18.5 BPMN 流程图绘制规范

一审批不通过,重新设计

设计一台笔记本电

准备生产线

经理审批

载入生产图纸

(子流程)

开始

生产屏幕

等待准备工作

完成

组装笔记本

生产键盘

结束

生产主板

从上图中,大致上可以归类出,流程分为:

●事件

●连线

●任务

●网关

事件

开始事件/结束事件等等。

开始

结束

这是我们上面用到的事件,实际上,还有很多其他类型的事件。

DAO

连线

审批不通过,重新设计

设计一台笔记本电

载入生产图

经理审批

连接各个不同元素之间的线条,就是连线。

注意,线条之上,可能会有条件。例如,在互斥网关上,满足一定的条件,流程图就继续往下走,不满足条件,流程图就回到之前的某一个位置上。

任务

在上面的流程图中,所有的矩形,都是任务,但是任务还有很多细分。

●用户任务

需要人工参与完成的工作建模。

设计一台笔记本电

●服务任务

机器自动完成的事情,例如用户请假,经理审批通过,审批通过之后,想通过企业微信给用户发送一个通知,告诉他请假通过。这样的任务,可以使用服务任务,当流程走到这一步的时候,自动调用某一个 Java Bean,或者某一个远程服务去完成通知的发送,这是自动完成的,不需要人工介入。

组装笔记本

●活动

活动可以算是一种特殊的任务。活动之中,往往可以在活动中,调用另外一个流程使之作为当前流程的子流程去执行。活动一般又可以继续细分为用户活动、脚本活动等等。。。

准备生产线

(子流程)

●接收任务

这个接收任务中,其实并不需要做什么额外的事情,流程到这一步就自动停下来,需要人工去助力一把,去推动流程继续向下走。

●发送任务

将消息发送给外部的参与者。

●脚本任务

一个自动化的活动,当流程执行到脚本任务的时候,自动执行相应的脚本。

●业务规则任务

BPMN2.0 中引入的用来对接业务规则的引擎,业务规则主要用于同步执行一个或者多个规则。

虽然这里分类比较多,但是实际上,任务主要就两种:

1用户任务:需要用户介入的任务。

2服务任务:机器自动完成的任务。发送任务、接收任务、脚本任务等等,这些其实都是服务任务的细分而已。

网关

●互斥网关

这个可以有多个入口,但是只有一个有效的出口。

●并行网关

并行网关一般是成对出现的,当有并行操作的时候,可以使用并行网关。

●相容网关

这种网关可能会存在多个有效的出口。

●事件网关

通过中间事件驱动的网关,当等待的事件触发之后,才会触发决策。


http://chatgpt.dhexx.cn/article/2VWVTDTn.shtml

相关文章

工作流[zt]

工作流 做过不短时间的工作流,一直没有进行好好的总结。最近theserverside.com登了下面的文章, The State of Workflow, 文章的内容比较浅显,概要介绍了工作流的基础。我也做个小结。 工作流的模型大多数都是参考WfMC的模型从图中可以看到有5个接口。实…

工作流体系----走进工作流管理平台(flowable版)(3)

当我们完成流程预设置后,整体产品体系就基本成型了------2021年8月20日,我对长沙团队的兄弟们说。 历经了一年半的从头再来,我们基本恢复到.net平台80%的水平了。我们会尽快的完善相关的业务,抓住核心主线 【合同/案件/法务/合规…

工作流 - 2 工作流发展

工作流 - 目录 工作流 - 2 工作流发展 一、工作流 - 发展1. JBPM2. activiti3. flowable4. camunda5. 对比6. 主要人物和发展历史 一、工作流 - 发展 1. JBPM 官网:https://jbpm.org/ 目前最新版本: 7.38.0分水岭jbpm5:BPM5使用http://jBo…

工作流(Workflow) -- 工作流简介

工作流(Workflow) – 工作流简介 数据库 Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。 ACT_RE_: RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。ACT…

工作流运行

工作流运行 定义内涵 工作流运行是工作流模板的依次执行,在工作流运行时,用户可以随时取消或查看正在 运行的任务。由于工作流运行的模板的不同,运行过程中可能会产生不同的新资源,如数据 处理类型的工作流会产生新的数据集&…

工作流(Workflow)

工作流(Workflow) 是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是&#xff1…

工作流-数据流转

一、流程图 二、数据流转 1. 部署流程分析 部署流程时会保存3张表:act_re_deployment、act_re_procdef、act_re_bytearray。 2. 启动流程 2.1启动流程流转 act_ru_execution:流程实例和执行流,每发起一次申请就会生成两条记录&#…

什么是开源工作流平台?

在办公职场中,有没有一款软件是实现提质增效的平台?如果让办公实现流程化管理,引用什么平台产品较为合适?低代码开发平台是近些年较为流行的办公软件平台,可以有效管理数据资源,制作表格可视化操作更简便&a…

Activiti教程(一)activiti工作流简介

一.工作流简介 BPM是Business Process Management 的缩写 简称BPM 即业务流程管理,即现在的工作流. 二.工作流概念 (1)流程定义:定义一个流程 即开始-任务x-结束 (2)流程部署:生成一个.bpmn规范的流程定义文件 进行发布. (3)流程执行:流程发布后既可以进入执行状态开始执行流…

普元EOS_工作流引擎相关数据表记录---工作流工作笔记002

由于现在在用普元的工作流引擎,但是,说明文档中没有对数据表的说明 所以整理一下记录下来: 业务流程(com.eos.workflow.data.WFProcessDefine) 属性 名称 类型 processDefID 业务流程ID long processDefName 业务流程名称 String processChName 业务流程显示名称 String desc…

微信小程序代码提交步骤

微信小程序提交代码分为两步: 一.本地提交 二.推送到github 1.点击右上角版本控制按钮,选择需要提交的文件,在下面协商更新日志,点击提交按钮(注意:本次提交仅为本地提交,实际没有上传到服务…

微信小程序远程git代码管理

这篇博客介绍一下微信小程序的代码管理,及将代码上传到远程git库。用来更新、优化、管理自身代码。由于时间的问题,仅仅介绍关联远程git仓库,上传本地代码到远程仓库,更多应用需求可自行摸索留言。 1.介绍的关联git仓库功能是基于…

使用vscode开发微信小程序

1. 安装插件 2. 文件-打开文件夹-将新建的微信小程序导入,代码会有高亮的效果 3. 编辑内容,查看效果,如果有就说明插件引入成功。

微信小程序授权登录

微信小程序授权登录 最近在学习微信小程序,学到授权登录这里,做个笔记记录一下。 我们使用的工具是微信开发者工具,我们创建一个项目,项目结构如图所示: 我们先准备好我们的index.wxml文件,代码如下&…

微信小程序休眠setTimeout

在java C#中,都有自己的休眠函数,那在微信小程序中,也有对应的休眠函数。那是-------setTimeout 使用小案例 这个我在写微信小程绘制 canvas,生产图片的案例,因为绘制头像需要一点时间,这里先让程序停留20毫秒&#x…

【小程序】如何获取微信小程序代码上传密钥?

当使用uniapp开发微信小程序的时候,发行微信小程序,自动上传微信平台,需要程序代码上传密钥 在下面的演示里重置才能获取

微信小程序9-发布代码

微信小程序1-小程序基础,开发工具安装使用 微信小程序2-WXSS,WXS 微信小程序3-小程序生命周期和组件 微信小程序4-小程序的api 微信小程序5-真机测试 微信小程序6-云开发-云数据库 微信小程序7-云存储 微信小程序8-云函数 1.在小程序开发工具中点击上传代码 2.输入版本后上传 …

小程序源代码_如何找回微信小程序源代码

如何找回微信小程序代码 今年暑假,把自己电脑重装系统后,发现自己以前好多的程序代码都找不回来了,自己又不想重写,也没有保存到代码仓库,不知道如何是好? 最近找到一个反编译的方法,试试能不能找回自己的小程序源代码。 先配置好node.js环境之后,再去下载wxapkg包。 w…

没有灵魂的微信小程序代码转支付宝小程序代码

没有灵魂的微信小程序代码转支付宝小程序代码 微信小程序与支付宝小程序直面代码的替换内容功能快捷键 微信小程序与支付宝小程序 作为一个微信小程序的半新手,支付宝小程序的全新手! 在公司安排的这次任务中,需要把已经上线的支付宝小程序更…

获取微信小程序源代码教程

准备工作: 1、安装node.js,下载地址:下载 | Node.js 中文网 win7系统的安装下面这个版本: windows764位系统可以安装的Node.js最高版本-互联网文档类资源-CSDN下载 2、 电脑上安装逍遥模拟器或者夜神模拟器(模拟器要启…