一文了解Activiti7

文章目录

    • ☃️1.1 Activiti 介绍
    • ☃️1.2 Activiti 开发流程
    • ☃️1.3 BPMN 2.0 规范是什么
    • ☃️1.4 BPMN 2.0 基本流程符号
      • ❄️❄️1.4.1 事件 Event
      • ❄️❄️1.4.2 活动
      • ❄️❄️1.4.3 网关 Gateway
    • ☃️1.5 Activiti API 服务接口
      • ❄️❄️1.5.1 核心Service接口及其获取


在这里插入图片描述

☃️1.1 Activiti 介绍

Activiti 是由 jBPM (BPM,Business Process Management 即业务流程管理) 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解 决方案。

Activiti 作为一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调 度。 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于Java的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。

Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形 式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。 Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快 速、稳定的BPMN 2.0流程引擎。Activiti是在ApacheV2许可下发布的,可以运行在任何类型的Java程序中,例如服 务器、集群、云服务等。

Activiti可以完美地与Spring集成。同时,基于简约思想的设计使Activiti非常轻量级。 官网:https://www.activiti.org/

☃️1.2 Activiti 开发流程

  1. 画流程定义模型: 遵守BPMN的流程规范,使用BPMN的流程定义工具,通过 流程符号 把整个业务流程定义出来,可以将流程 定义文件字节流保存到模型数据表中(Model)。
  2. 部署流程定义: 加载画好的流程定义文件,将它转换成流程定义数据(ProcessDefinition),保存到流程定义数据表中。
  3. 启动流程(提交流程申请): 生成流程实例数据(ProcessInstance),生成第1节点任务数据(Task)。
  4. 处理人审批流程节点任务: 完成任务审批,生成审批结果,生成下一节点任务数据。

☃️1.3 BPMN 2.0 规范是什么

业务流程模型注解(Business Process Modeling Notation - BPMN)是业务流程模型的一种标准图形注解。这个 标准是由对象管理组(Object Management Group - OMG)维护的。

标准的早期版本(1.2版以及之前)仅仅限制在模型上, 目标是在所有的利益相关者之间形成通用的理解, 在文 档,讨论和实现业务流程之上。 BPMN标准证明了它自己,现在市场上许多建模工具都使用了BPMN标准中的元素 和结构。

BPMN规范的2.0版本,当前已经处于最终阶段了, 允许添加精确的技术细节在BPMN的图形和元素中, 同时制定 BPMN元素的执行语法。 通过使用XML语言来指定业务流程的可执行语法, BPMN规范已经演变为业务流程的语 言, 可以执行在任何兼容BPMN2的流程引擎中, 同时依然可以使用强大的图形注解。

目前BPMN2.0是最新的版本,它用于在BPM上下文中进行布局和可视化的沟通。BPMN 2.0是使用一些符号来明确 业务流程设计流程图的一整套符号规范,它能增进业务建模时的沟通效率。

☃️1.4 BPMN 2.0 基本流程符号

❄️❄️1.4.1 事件 Event

开始 中间事件 结束

image-20211215201353917.png

❄️❄️1.4.2 活动

活动是工作或任务的一个通用术语。一个活动可以是一个任务,还可以是一个当前流程的子处理流程;

❄️❄️1.4.3 网关 Gateway

网关用来处理决策:

image-20211215201600134.png

  • 排他网关 (x)

只有一条路径会被选择。流程执行到该网关时,按照输出流的顺序逐个计算,当条件的计算结果为true时,继 续执行当前网关的输出流; 如果多条线路计算结果都是 true,则会执行第一个值为 true 的线路。如果所有网关计算结果没有true,则引 擎会抛出异常。 排他网关需要和条件顺序流结合使用,default 属性指定默认顺序流,当所有的条件不满足时会执行默认顺序流。

  • 并行网关 (+)

所有路径会被同时选择 分支: 并行执行所有输出顺序流,为每一条顺序流创建一个并行执行线路。 汇聚 :所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。

  • 包含网关 (o)

可以同时执行多条线路,也可以在网关上设置条件分支:计算每条线路上的表达式,当表达式计算结果为true时,创建一个并行线路并继续执行 汇聚:所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。

  • 事件网关 (o+)

专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关 后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。

☃️1.5 Activiti API 服务接口

Activiti 流程引擎包含了25张表,而且表之间的关系也比较复杂,比如包含各种外键约束。

按照传统的方式,有了数据库表后,就应该为每张表创建 Entity 实体类,然后为其创建对应的 DAO 接口,然 后再创建对应的 Service来实现对表数据的增删改查;

但是按照传统方式的,就会有一个很严峻的问题,表的数量太多,并且关系复杂,还要兼顾流程引擎的处理方 式,自己去搞一套,几乎不可能;

其实不需要我们去创建Entity 、 DAO、Service、Controller,因为Activiti已经把这些东西给搞好了,只需要 调用即可。

Process Engine API 和服务

引擎 API 是与 Activiti 交互的最常见方式。

可以从ProcessEngine中获取包含工作流/ BPM方法的各种服务。

ProcessEngine和服务对象是线程安全的。因此,可以为整个服务器保留对其中之一的引用。

Service 是工作流引擎提供用于进行工作流部署、执行、管理的服务接口,我们使用对应Service接口可以操作对应 的数据表。

image-20211129233459602.png

❄️❄️1.5.1 核心Service接口及其获取

// 会在首次调用时初始化并构建一个流程引擎,此后始终返回相同的流程引擎。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 引擎管理类
ManagementService managementService = processEngine.getManagementService();
// 动态修改流程管理类
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();
// 流程运行管理类
RuntimeService runtimeService = processEngine.getRuntimeService();
// 流程仓库管理类
RepositoryService repositoryService = processEngine.getRepositoryService();
// 任务管理类
TaskService taskService = processEngine.getTaskService();
// 历史管理类
HistoryService historyService = processEngine.getHistoryService();




在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/548584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

M2 运行 llamafile

安装llamafile很简单,进入官网,按照步骤安装运行即可。 https://github.com/Mozilla-Ocho/llamafile 下载 llava-v1.5-7b-q4.llamafile赋予运行权限chmod x llava-v1.5-7b-q4.llamafile运行 ./llava-v1.5-7b-q4.llamafile -ngl 9999 速度确实是比 olla…

HBase2.x学习笔记

文章目录 一、HBase 简介1、HBase 定义1.1 概述1.2 HBase 与 Hadoop 的关系1.3 RDBMS 与 HBase 的对比1.4 HBase 特征简要 2、HBase 数据模型2.1 HBase 逻辑结构2.2 HBase 物理存储结构2.3 HBase的表数据模型 3、HBase 基本架构3.1 Master3.2 Region Server3.3 Zookeeper3.4 HD…

哪个牌子的电视盒子好用?经销商整理线下热销电视盒子排行榜

在选购电视盒子的时候许多朋友并不了解哪个牌子的电视盒子好用,如何才能买到最满意的电视盒子呢?我身为数码实体店老板,做电视盒子这块有七年了,经常会有用户问我电视盒子相关问题,我按照店内销量整理了电视盒子排行榜…

微信小程序英文版:实现一键切换中英双语版(已组件化)

已经重新优化代码做成了组件,需要可自取:https://github.com/CrystalCAI11/wechat-language-compoment 所有操作都打包在组件里不需要在额外的地方添加代码,直接在你需要的页面里导入组件,再在对应页面的onLoad()里set文本就行了。…

difference between make and cmake

链接: https://earthly.dev/blog/cmake-vs-make-diff/#:~:textIn%20summary%3A%20The%20difference%20between,used%20to%20create%20a%20Makefile.

OpenHarmony开发案例:【自定义通知】

介绍 本示例使用[ohos.notificationManager] 等接口,展示了如何初始化不同类型通知的通知内容以及通知的发布、取消及桌面角标的设置,通知类型包括基本类型、长文本类型、多行文本类型、图片类型、带按钮的通知、点击可跳转到应用的通知。 效果预览&am…

✯✯✯宁波 IATF16949 认证:助力汽车企业迈向卓越✯✯✯

🌈🌈🌈宁波IATF16949认证:💝助力汽车企业迈向卓越💗 🕵️‍♂️宁波,这座繁华的🦊港口城市,不仅以其🐯独特的地理位置和丰富的🕊️历史…

霍夫曼编码(含完整源码)

1.第一步 统计所有的字符【*】出现的频次并按频次进行从小到大的排序 2.第二步 进行权值的合并 3.第三步 编码 左0 右 1 huffman编码大致分为以下步骤: 统计所有字符出现的频次构建huffman树huffman树生成huffman编码将源文件压缩成huffman编码结构收到源文件之后…

JavaScript入门--数组

JavaScript入门--数组 前言数组的操作1、在数组的尾部添加元素2、删除数组尾部的元素,也就是最后一个元素3、删除头部第一个元素4、在数组的前面添加元素 小案例5、数组的翻转6、数组的排序7、数组的合并8、数组的切片 前言 JS中的数组类似于python中的列表&#x…

软件设计:UML 模型图总结

1. 相关链接 参考教程: https://sparxsystems.com/resources/tutorials/ https://sparxsystems.com/enterprise_architect_user_guide/15.2/model_domains/whatisuml.html Unified Modeling Language (UML) description, UML diagram examples, tutorials and r…

产品经理技术脑:怎么看懂接口文档

日常产品开发过程中,涉及前后端数据交互的时候,往往会离不开接口调用,尽管产品经理一般不需要写接口文档(负责接口中间层产品经理除外),但对接口了解,对于需求沟通、需求传达还是很有帮助的。 …

集成电路测试学习

集成电路(Integrated Circuit,IC)整个设计流程包括:电路设计、晶圆制造、晶圆测试、IC封装、封装后测试。 IC测试目的:一、确认芯片是否满足产品手册上定义的规范;二、通过测试测量,确认芯片可以…

【艾体宝方案】智驾未来:高性能实时数据库,车企的数据分析变革!

近年来,汽车行业持续朝向互联互通以及自动化方向的演进,无论是在优化制造流程、提升车辆安全与性能,还是提供定制化客户体验方面,汽车行业的都未来牢牢根植于其有效处理和利用数据的能力。 一、汽车行业面临的挑战 (…

Java(120):使用Java对TiDB数据库批量写入数据

使用Java对TiDB数据库批量写入数据 1、前言: 本次对TiDB数据库测试需要1w条数据,如果MySQL可用存储过程造数,结果发现TiDB用不了。只能想其他办法,一种是Java直接批量插入,一种是Jmeter插入。这里用的Java插入。 如果…

CANoe中关于NetworkHardwareConfiguration中的setup设置参数的详解

前提说明 本文是以VN1640A中的CAN_FD工程为例,为大家讲解。 1:首先打开相关配置 重点讲解红色框中的参数,其他参数该如何设置,请参考我另外一篇文章“关于CANoe硬件及接口的学习笔记(VN1640A)”或自行查阅…

js 写 视频轮播

html代码 <div class"test_box"> <div class"test"> <a href"#"> <div class"test_a_box"> <div class"test_a_mask"></div> <div class"test_a_layer"> <div cla…

偏微分方程算法之混合边界差分

目录 一、研究对象 二、差分格式 2.1 向前欧拉格式 1. 中心差商 1.1.1 理论推导 1.1.2 算例实现 2. x0处向前差商&#xff0c;x1处向后差商 1.2.1 理论推导 1.2.2 算例实现 2.2 Crank-Nicolson格式 2.2.1 理论推导 2.2.2 算例实现 一、研究对象 这里我们以混合边界…

高分一号卫星(GF-1):中国遥感科技的骄傲

高分一号卫星&#xff08;GF-1&#xff09;是中国遥感科技领域的一项突破性成就&#xff0c;其引入了先进的成像技术和灵活的数据获取模式&#xff0c;为中国的资源管理、环境监测和城市规划等领域带来了巨大的变革。本文将深入介绍高分一号卫星的技术参数、成像能力以及应用场…

抽奖系统设计

如何设计一个百万级用户的抽奖系统&#xff1f; - 掘金 如何设计百万人抽奖系统…… 在实现抽奖逻辑时&#xff0c;Redis 提供了多种数据结构&#xff0c;选择哪种数据结构取决于具体的抽奖规则和需求。以下是一些常见场景下推荐使用的Redis数据结构&#xff1a; 无序且唯一奖…

解析数据科学,探索ChatGPT背后的奥秘

在当今这个由数据驱动和AI蓬勃发展的时代&#xff0c;数据科学作为一门融合多种学科的综合性领域&#xff0c;对于推动各行各业实现数字化转型升级起着至关重要的作用。近年来&#xff0c;大语言模型技术发展态势强劲&#xff0c;为数据科学的进步做出了巨大贡献。其中&#xf…