1.工作流入门

2023-10-24 12:12
文章标签 工作 流入

本文主要是介绍1.工作流入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


        应公司诉求,最近需要做一个业务物料相关的主数据创建流程审批项目,思前想后,记得以前接触过Activiti但很久没有使用了,咨询身边朋友发现他们已不再使用Activiti了,而使用Flowable来代替了。查阅相关资料了解到,Flowable其实就是Activiti的衍生物。

flowable中文文档地址:https://tkjohn.github.io/flowable-userguide/#_introduction

1、为什么需要⼯作流

在任何行业和企业中,都有各种各样的流程,例如:

  1. 请假流程
  2. 报销流程
  3. 入职流程
  4. 离职流程
  5. 出差流程
    等等……

就算你自己没有设计过工作流,那么你每天肯定也在使用各种流程。

2、工作流引擎使用场景

        工作流在企业管理系统中是高频使用的功能,一个最常见的例子是请假加班申请与审批的过程。事实上,工作流引擎能支持的业务场景远远不止单据审批,几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流引擎作为支撑。基于工作流引擎,可以搭建客户关系管理系统(CRM)、运输管理系统(TMS)、仓储管理系统(WMS)、财务费用系统等多种复杂业务系统。对于达到一定规模的企业,良好的 BPM(业务流程管理,Business Process Management)体系可以支持创建公司内横跨不同部门的复杂业务流程,既提高工作效率、又可推动企业规范化发展。

3、三⼤⼯作流

        ⼀个⽐较早的⼯作流是 jBPM,这是⼀个由 Java 实现的企业级流程引擎,是 JBoss 公司开发的产品之⼀。
        jBPM 的创建者是 Tom Baeyens,这个⼤佬后来离开了 JBoss,并加⼊到 Alfresco,并推出了基于 jBPM4 的开源⼯作流系统 Activiti,⽽ jBPM 则在 后续的代码中完全放弃了 jBPM4 的代码。从这个过程中也能看出来,jBPM 在发展 过程中,由于意⻅相左,后来变成了两个 jBPM 和 Activiti。
        然⽽戏剧的是,Activiti5 没搞多久,从 Activiti 中⼜分出来⼀个 Camunda,Activiti 继续发展,⼜从中分出来⼀个 Flowable 。。。
        j由于开发 jBPM、Activiti、Camunda 以及 Flowable 的⼈多多少少有⼀些关 联性,让⼈不得不猜测意⻅相左拉⼀票⼈出来单⼲是他们的企业⽂化。 所以现在市⾯上主流的 流程 引擎就⼀共有三个:

  • Activiti
  • Flowable
  • Camunda

这三个各有特点:

  1. Activiti ⽬前是侧重云,他⽬前的设计会向 Spring Cloud、Docker 这些去靠 拢。
  2. Flowable 核⼼思想还是在做⼀个功能丰富的流程引擎⼯具,除了最最基础的⼯作流,他还提供了很多其他的扩展点,我们可以基于 Flowable 实现出许多我们想要的功能,这也是⼩伙伴们觉得 Flowable 使⽤复杂的原因之⼀。
  3. Camunda 相对于前两个⽽⾔⽐较轻量级,Camunda 有⼀个⽐较有特⾊的功能就是他提供了⼀个⼩巧的编辑器,基于 bpmn.io 来实现的。如果你的项⽬需求是做⼀个轻巧的、灵活的、定制性强的编辑器,⼯作流是嵌⼊式的,那么可以选择 Camunda。

4、流程图

        上面提到过3种工作流,这三个不同的⼯作流画出来的流程图都是相同的。⼯作流程图这块其实有⼀个统⼀的标准,那就是 BPMN。BPMN 全称是 Business Process Model and Notation,中⽂译作业务流程模型和标记法。
        这是⼀套图形化表⽰法,⽤图形来表⽰业务流程模型。BPMN 最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发, BPMI 于 2005 年与对象管理组织(OMG, Object Management Group)合并, 并于 2011 年 1 ⽉ OMG 发布 2.0 版本,同时改为现在的名称。
        ⼀句话,就是流程图这块有⼀个特别古⽼的规范,那就是 BPMN,⽽我们前⾯所说的⽆论是 Activiti、 Flowable 还是 Camunda,都是⽀持这个规范的,所以呢, ⽆论你使⽤哪⼀个 流程引擎,都可以使⽤同⼀套流程图。
在这里插入图片描述
从上图中可以看到,⼀个 流程 图中主要包含四⽅⾯的内容:

  1. 事件
  2. 连线
  3. 任务
  4. ⽹关

事件
⾸先在⼀个流程图中应该有开始事件和结束事件,也就是上图⼤家看到的两个圆圈。 另外还有⼀些中间事件、边界事件等。举个中间定时事件的例⼦,⽐如⽤户下单之 后,可以有⼀个中间定时事件,延迟 5 分钟发货。

连线
连线就是将事件、 任务 、⽹关等连在⼀起的线条,⼀般情况下就是普通连线,有的时候连线会有⼀些条件,如果经理审批通过,就载⼊图纸准备⽣产,如果经理审批不通过,就重新设计。

任务

  1. 接收任务
    在这里插入图片描述
    在上⾯的流程图中,等待准备⼯作完成这⼀项就是⼀个接收任务 。这个任务⾥并不需要额外做什么事情, 流程到这⼀步就⾃动停下来了,需要⼈⼯去点⼀下,推动流程继续向下执⾏。
  2. 发送任务
    在这里插入图片描述
    这个⼀般⽤来把消息发送给外部参与者。
  3. 服务任务
    在这里插入图片描述
    这个⼀般由系统⾃动完成,其实说⽩了就是我们的⼀个⾃定义类,可以在⼀个⾃定义 类⾥边完成想要做的事情。
  4. 脚本任务
    在这里插入图片描述
    ⼀个⾃动化活动。当流程执⾏到脚本任务时,⾃动执⾏相应的脚本。
  5. 业务规则任务
    在这里插入图片描述
    BPMN2.0 新引⼊⽤来对接业务规则引擎,业务规则任务⽤于同步执⾏⼀个或多个规则。
  6. 用户任务
    在这里插入图片描述
    ⽤于为那些需要由⼈⼯参与者完成的⼯作建模。 虽然细分类别很多,但是仔细看,其实这⼏种⼜可以归为两⼤类:
  • 用户任务 :表⽰⼈⼯要介⼊做的事情。⽐如同意与否,或者输⼊⼀些参数,要让⼈⼯完成任务,就需要⼀个表单系统,让⼈⼯输⼊数据,或者显⽰数据给⼈看,这也是为什么 ⽤⼾ 任务 和表单系统结合在⼀起的原因,用户任务需要⽤户向引擎提交⼀个完成任务的动作,否则流程会暂停在这⾥等待。
  • 服务任务 :表⽰机器⾃动做的事情。调⽤服务的任务 ,这个服务可以是⼀个 Spring JavaBean,也可以是⼀个远程 REST服务, 流程 会⾃动执⾏服务任务 。
  1. 活动
    活动可以算是⼀种特殊的任务 。活动可以调⽤另外⼀个流程使之作为当前流程的⼦流程去运⾏。活动也可以分为用户活动、脚本活动等等。从显⽰上来说,活动⽐任务边框深⼀些。仅此⽽已。

  2. ⽹关

  • 互斥⽹关 :这种⽹关也叫排他性⽹关,这种⽹关有且仅有⼀个有效出⼝。
    在这里插入图片描述

  • 相容⽹关:这种⽹关会有多个出⼝,只要条件满⾜,都会执⾏。
    在这里插入图片描述

  • 事件⽹关:事件⽹关是通过中间事件驱动,它在等待的事件发⽣后才会触发决策。基于事件的⽹关允许基于事件作出决策。
    在这里插入图片描述

  • 并⾏⽹关:并⾏⽹关⼀般是成对出现的,上⾯⽣产笔记本的那个流程中,⽣产屏幕、键盘等并⾏操作,就是通过并⾏⽹关来实现的。
    在这里插入图片描述

这篇关于1.工作流入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275093

相关文章

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工