工作流 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

開始 中間事件 結束

在這里插入圖片描述

????1.4.2 活動

活動是工作或任務的一個通用術語。一個活動可以是一個任務,還可以是一個當前流程的子處理流程;

????1.4.3 網關 Gateway

網關用來處理決策:

在這里插入圖片描述

  • 排他網關 (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接口可以操作對應 的數據表。

在這里插入圖片描述

????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();




在這里插入圖片描述



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20086.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI科普:TensorFlow 的基本概念和使用場景

TensorFlow是一個開源的深度學習框架,由Google開發并于2015年發布。它提供了一個使用數據流圖進行數值計算的接口,可以在不同的硬件平臺上運行,包括CPU、GPU和TPU。 TensorFlow的核心概念是張量(Tensor)和計算圖&…

fps游戲如何快速定位矩陣

fps游戲如何快速定位矩陣 矩陣特點: 1、第一行第一列值的范圍在**-1 ---- 1**之間&#xff0c;如果開鏡之后值會變大。 2、第一行第三列的值始終為 0。 3、第一行第四列 的值比較大 &#xff0c; >300或者**<-300**。 根據這三個特點&#xff0c;定位矩陣已經足夠了…

centos7.9離線安裝mysql5.7

centos7.9離線安裝mysql5.7 查詢mysql查詢組查詢用戶不存在創建即可&#xff0c;創建mysql用戶組上傳下載的安裝包創建my.cnf文件修改配置文件修改mysql登陸密碼 centos7.9 mysql5.7 查詢mysql rpm -qa | grep mysql我這里查詢是不存在&#xff0c;如果你的存在可以用rm -rf […

11- Redis 中的 SDS 數據結構

字符串在 Redis 中是很常用的&#xff0c;鍵值對中的鍵是字符串類型&#xff0c;值有時也是字符串類型。 Redis 是用 C 語言實現的&#xff0c;但是它沒有直接使用 C 語言的 char* 字符數組來實現字符串&#xff0c;而是自己封裝了一個名為簡單動態字符串&#xff08;simple d…

ubuntu22 部署zookeeper + kafka集群 配置開機自啟動

ufw disabled #關閉防火墻 或者 放開指定端口 vim /etc/hosts #配置ip host映射關系 10.3.1.96 node1 10.3.1.97 node2 #1.所有機器安裝jdk apt install openjdk-8-jdk -y java -version #export JAVA_HOME/usr/lib/jvm/jdk1.8.0_202 #2.部署zookeeper集群 cd /usr…

【spring】Spring Boot3.3.0發布啦

spring最新版本 springboot官網&#xff1a;Spring Boot :: Spring Boot Spring Boot 3.3 發行說明&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.3-Release-Notes 開發環境的要求對比表 Spring BootJDKSpringMavenGradle3.3.017 ~ 226.1…

Mac電腦pd虛擬機專用windows系統鏡像(m1/intel)win10、11鏡像文件

入手了Mac電腦后&#xff0c;由于需要用到Windows軟件&#xff0c;又嫌安裝雙系統太復雜&#xff0c;這時候Mac就用到了安裝虛擬機&#xff0c;目前最好用的虛擬機是Parallels Desktop&#xff0c;win鏡像版本要根據自己的喜好選對&#xff0c;在此提供分別兼容M1和Intel的win1…

PS Mac Photoshop 2024 for Mac[破]圖像處理軟件[解]PS 2024安裝教程[版]

Mac分享吧 文章目錄 效果一、準備工作二、開始安裝1、Anticc簡化版安裝1.1雙擊運行軟件&#xff0c;安裝1.2 解決來源身份不明的開發者問題**此代碼為打開&#xff1a;系統偏好設置 – 隱私與安全性&#xff0c;中的【任何來源】&#xff0c;如下圖&#xff1a;**1.3 再次運行…

11Linux學習筆記

Linux 實操篇 目錄 文章目錄 Linux 實操篇1.rtm包&#xff08;軟件&#xff09;1.1 基本命令1.2 基本格式1.3安裝rtm包1.4卸載rtm包 2.apt包2.1 基本命令結構2.2 常用選項2.3常用命令 1.rtm包&#xff08;軟件&#xff09; 1.1 基本命令 1.2 基本格式 1.3安裝rtm包 1.4卸載r…

2024年度CCF-阿里云瑤池科研基金正式發布

2024年度CCF-阿里云瑤池科研基金正式發布 截止時間&#xff1a;2024年7月1日24:00&#xff08;北京時間&#xff09; 歡迎CCF會員積極申報 “CCF-阿里云瑤池科研基金”由CCF與阿里云計算有限公司于2024年聯合設立&#xff0c;專注于數據庫領域&#xff0c;旨在為領域學者提供…

ACL 2024 | 如何避免LLM生成有毒回復?基于知識編輯的大模型祛毒初探

論文鏈接&#xff1a; https://arxiv.org/abs/2403.14472 代碼鏈接&#xff1a; https://github.com/zjunlp/EasyEdit Benchmark: https://huggingface.co/datasets/zjunlp/SafeEdit 摘要 當下大模型&#xff08;LLMs&#xff09;雖然取得了顯著的成功&#xff0c;但在實際應用…

k8s kubeadm在安裝 基于arm架構

目錄 k8s kubeadm在安裝 基于arm架構 第一章 k8s及中間件安裝 1.主機名解析2.主機名設置3.禁用iptables和firewalld4. 禁用selinux(linux下的一個安全服務&#xff0c;必須禁用)5.禁用swap分區(主要是注釋最后一行)6.修改系統的內核參數7.配置ipvs功能8.安裝docker9.安裝kubern…

Django企業招聘后臺管理系統開發實戰四

前言 首先我們看一下產品的需求背景&#xff0c;這個產品為了解決招聘面試的過程中&#xff0c;線下面試管理效率低&#xff0c;面試過程和結果不方便跟蹤的痛點 招聘管理的系統幾乎是每一家中小公司都需要的產品 我們以校園招聘的面試為例子來做 MVP 產品迭代 首先我們來看一下…

uniapp 嵌套H5頁面會看到插值表達式的問題

項目背景應用中需要用到地圖不使用高德地圖 直接使用leaflet的方式加載地圖故使用H5的方式 H5中引入Vue 發現能看如<div>{{data}}</div>這樣的數據節點 給用戶體驗不好需優化 可使用以下方式處理 v-cloak指令&#xff08;用于在 Vue 實例加載和編譯之前隱藏元素…

推薦的Pytest插件

推薦的Pytest插件 Pytest的插件生態系統非常豐富&#xff0c;以下是一些特別推薦的Pytest插件&#xff1a; pytest-sugar 這個插件改進了Pytest的默認輸出&#xff0c;添加了進度條&#xff0c;并立即顯示失敗的測試。它不需要額外配置&#xff0c;只需安裝即可享受更漂亮、更…

Linux-在centos7中為普通用戶配置sudo認證

目錄 前言一、sudo是什么&#xff1f;二、配置sudo三、測試 前言 本篇文章介紹如何在centos7中為普通用戶配置sudo認證 一、sudo是什么&#xff1f; sudo是一個命令&#xff0c;其作用是為普通用戶以臨時管理員&#xff08;root&#xff09;的身份去執行一條命令。 例如&…

Ehcache 筆記

前言 說道緩存&#xff0c;大家想到的是一定是Redis&#xff0c;確實在國內Redis被大量應用&#xff0c;推上了新的高度&#xff01;但是不一定所有的場合都要使用Redis&#xff0c;例如服務器資源緊缺&#xff0c;集成不方便的時候就可以考慮使用本地緩存。 簡介 緩存應該是每…

禪道的原理及應用詳解(三)

本系列文章簡介&#xff1a; 在快速發展的軟件開發和項目管理領域中&#xff0c;尋找一款高效、實用且易于上手的項目管理工具是每個團隊都面臨的挑戰。禪道&#xff0c;作為一款國產開源的項目管理軟件&#xff0c;憑借其獨特的管理理念、豐富的功能和友好的用戶體驗&#xff…

翻譯《The Old New Thing》- What a drag: Dragging a virtual file (HGLOBAL edition)

What a drag: Dragging a virtual file (HGLOBAL edition) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080318-00/?p23083 Raymond Chen 2008年03月18日 拖拽虛擬文件&#xff08;HGLOBAL 版本&#xff09; 現在我們已經對簡單的數據…

數據庫(13)——DQL分組查詢

語法 SELECT 字段列表 FROM 表名 [WHERE 條件] GROUP BY 分組字段名 [HAVING 分組后過濾條件] 示例 原始表&#xff1a; 根據性別分組并統計人數 select sex,count(*) from information group by sex; 根據性別分組&#xff0c;并求年齡的平均值&#xff1a;