日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

「Activiti精品 悟纤出品」核心类以及如何在SpringBoot集成说明 - 第328篇

發(fā)布時(shí)間:2023/12/8 javascript 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「Activiti精品 悟纤出品」核心类以及如何在SpringBoot集成说明 - 第328篇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)歷史文章(閱讀本文前,您可能需要先看下之前的系列👇

國(guó)內(nèi)最全的Spring?Boot系列之三

2020上半年發(fā)文匯總「值得收藏」

程序CPU占用率飆升,如何定位線程的堆棧信息?「超詳細(xì),值得收藏」看不懂還有配套視頻?-?第319篇

「工作流Activiti」介紹-新手上路,注意安全?-?第320篇

「Activiti精品?悟纖出品」activiti介紹-十萬(wàn)個(gè)為什么?-?第321篇

「Activiti精品?悟纖出品」Activiti6?Getting?Started-?穩(wěn)扎穩(wěn)打?-?第322篇

「Activiti精品?悟纖出品」Activiti7?Getting?Started-摸石頭過河?-?第323篇

「Activiti精品?悟纖出品」流程模型搭建-小試牛刀?-?第324篇

「Activiti精品 悟纖出品」基于mysql初始化「圖圖為啥消失了」- 第325篇

師傅:萬(wàn)事俱備只欠東風(fēng)了,我們借下東風(fēng),接下來能夠無(wú)往不利。

悟纖:師傅,你這是諸葛轉(zhuǎn)世吶,還能借東風(fēng)了。

師傅:為師這個(gè)是比喻,也就是馬上要大功告成了,就差那么一丟丟,你語(yǔ)文是體育老師教的么(體育老師很無(wú)賴:為什么我躺著也要中槍吶?)

悟纖:哎,提起這個(gè),當(dāng)年的往事不堪回首吶,徒兒不是在睡覺就是在睡覺的路上,看別人不是在學(xué)習(xí),就是在學(xué)習(xí)的路上,不能比呀。

師傅:這不,現(xiàn)在要搬磚了吧,趕緊的不搬磚,晚飯別吃了。

悟纖:…. 師傅,我得奮發(fā)學(xué)習(xí),爭(zhēng)取能搬更多的磚。

師傅:…. 這….

?

?

前言

???????原本是計(jì)劃直接開干,講解如何在Spring Boot中如何集成Activiti的,但在實(shí)操的時(shí)候,發(fā)現(xiàn)直接開干的話,確實(shí)有點(diǎn)難于理解。本篇先把思路和概念性的東西過掉,這樣后續(xù)對(duì)于怎么集成就會(huì)比較好理解。

一、Activiti流程模型搭建回顧

1.1?核心的幾個(gè)步驟

???????我們回顧下之前的文章中流程模型搭建的核心步驟,這里以activiti6的操作來進(jìn)行說明,如果你還不知道怎么流程搭建的,請(qǐng)回看文章《「工作流Activiti」流程模型搭建-小試牛刀》。

???????我們來簡(jiǎn)單回顧一下核心的步驟:

(1)創(chuàng)建用戶和用戶組:主要是用于流程中的發(fā)起和審批使用的。

(2)創(chuàng)建流程實(shí)例:用于流程的設(shè)計(jì),具體的操作就是使用了可視化的操作,進(jìn)行BPMN規(guī)定的元素進(jìn)行操作,最終就是一個(gè)XML的文件。

(3)創(chuàng)建表單:用于流程某些節(jié)點(diǎn)的數(shù)據(jù)源,比如提交請(qǐng)假審批,那么就要有一個(gè)請(qǐng)假單進(jìn)行填寫。

(4)創(chuàng)建App和發(fā)布:我們通過創(chuàng)建一個(gè)應(yīng)用,然后應(yīng)用中綁定流程進(jìn)行流程的發(fā)布,發(fā)布之后的流程就可以進(jìn)行操作了,用戶可以發(fā)起此應(yīng)用發(fā)起流程。

?

1.2?其它說明

???????我們?cè)谑褂胊ctiviti-app的種種操作,核心就是為了獲取到bpmn文件,在和spring boot集成的時(shí)候,這個(gè)文件就是核心了,那么我們是必須要使用activiti-app才能進(jìn)行創(chuàng)建bpmn文件嘛,答案:不是。在前面的小節(jié),我們也介紹了相應(yīng)的工具的插件,在實(shí)際開發(fā)的過程中,開發(fā)人員使用插件的方式肯定是比activiti-app的方式方便吶。

?

二、Spring Boot中集成Activiti說明

2.1?集成說明

???????對(duì)于Spring Boot中的集成一般都是引入相關(guān)的依賴即可。

對(duì)于activiti6和7的依賴是有很大的區(qū)別的:

Actviti6:

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version> </dependency>

Actviti7:

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M6</version> </dependency>

??????當(dāng)然對(duì)于依賴而言,只是這個(gè)依賴配置不一樣,但是底層的一些核心還是一樣的。

2.2?集成思路

???????對(duì)于Activiti的單獨(dú)使用我們已經(jīng)有了一個(gè)了解,對(duì)于如何集成,和activiti的使用有一定的相通之處。

???????我們看看核心的一些點(diǎn):

2.2.1?構(gòu)建流程圖文件bpmn

???????對(duì)于流程圖而言,最新的就是這個(gè)bpmn描述文件了,所以我們第一步就是要有這么一個(gè)文件才能后續(xù)的操作。

2.2.2?流程的操作

???????不管是流程的發(fā)布還是流程的發(fā)起、審批都是流程的操作,在activiti-app中是activiti-app這個(gè)工程的底層幫我們完成了,那么底層是如何完成的吶,是不是activiti的引擎進(jìn)行完成的呢,是的。

Activiti的工作流引擎幫我們把這些在流程中的節(jié)點(diǎn)進(jìn)行進(jìn)行處理,以完成整個(gè)流程。那么在我們自己集成的Spring Boot中,引入了activiti相關(guān)的jar文件,那么對(duì)于要發(fā)起流程是不是只要調(diào)用activiti中的相關(guān)的發(fā)起流程方法就好了。

?

三、Activiti的核心類

???????在上面分析到了Activiti工作流引擎是由核心的一些指令進(jìn)行發(fā)起相應(yīng)的操作的,我們這里看看具體都有什么核心的類,可以供我們進(jìn)行操作,這里很重要,后續(xù)的集成例子會(huì)用到部分的類。

3.1?架構(gòu)圖和核心類圖

Activiti采用了一個(gè)分層架構(gòu)完成自底向上的包裝。架構(gòu)圖如下:

?

?

???????對(duì)于Activiti的架構(gòu)這里不展開說明,要是展開說明這一節(jié)又講不完了,哎一講東西就多,這是要鬧哪樣吶。

???????我們還是來看下核心類圖吧:

???????接下來我們就看看這些類都是用來做什么的。

?

3.2?核心類

3.2.1 ProcessEngine

???????流程引擎的抽象,可以通過此類獲取需要的所有服務(wù)。

3.2.2 repositoryService

?????? activiti是不能直接識(shí)別xml格式的流程圖的,流程圖文件必須被部署到activiti中才能被activiti識(shí)別并使用。而這個(gè)過程就是使用repositoryService來完成的,流程圖被導(dǎo)入后,會(huì)放到act_re_打頭的幾個(gè)表中。repositoryService提供了若干個(gè)接口,既可以部署xml文件到數(shù)據(jù)庫(kù)中,也可以從數(shù)據(jù)庫(kù)檢索特定流程圖供處理。

3.2.3 runtimeService

activiti最重要的一個(gè)服務(wù),基本上所有的關(guān)于流程的操作都是通過此服務(wù)來執(zhí)行的。例如啟動(dòng)流程、審批、會(huì)簽等等。

3.2.4 formService

工作流的設(shè)計(jì)思路之一就是將每個(gè)節(jié)點(diǎn)需要顯示的數(shù)據(jù)直接綁定到此節(jié)點(diǎn)。而formService就是專門為此服務(wù)的,使用formService可以獲取某個(gè)節(jié)點(diǎn)綁定的表單數(shù)據(jù)。當(dāng)然,如果沒有表單綁定到此節(jié)點(diǎn),此服務(wù)就沒有任何用處。

3.2.5 identityService

activiti自帶的用于管理自身的組織機(jī)構(gòu)的服務(wù)。activiti自身的組織機(jī)構(gòu)包括user和group兩大類,而user、group以及user和group的關(guān)系都是通過自服務(wù)來維護(hù)的。因此如果需要使用activiti自身的組織機(jī)構(gòu)的,就會(huì)使用到此服務(wù)。不過通常情況下我們都是是用的框架中的身份認(rèn)證和組織機(jī)構(gòu),所以此服務(wù)使用頻率也不高

3.2.6 taskService

???????任務(wù)是activiti的核心功能之一,所有涉及到任務(wù)的操作都是通過此服務(wù)來完成的。例如任務(wù)的查詢、分配、認(rèn)領(lǐng)、完成等。

3.2.7 historyService

所有流程實(shí)例的信息都會(huì)被保存的歷史信息中,當(dāng)一個(gè)流程實(shí)例結(jié)束之前,它是被保存在runtime和history兩個(gè)地方,當(dāng)它結(jié)束后,就只有history里了。

3.2.8 managementService

提供對(duì)activiti數(shù)據(jù)庫(kù)的直接訪問,因此通常情況下使用不到此服務(wù)。

?

3.3 Event-Listener組件

?????? Activiti允許客戶代碼介入流程執(zhí)行,提供了事件監(jiān)聽組件。監(jiān)聽的事件類型可以分為TaskListener、JavaDelegate、Expression、ExecutionListener。ProcessEngineConfigurationImpl持有DelegateInterceptor的某個(gè)實(shí)例,方便調(diào)用handleInvocation。

3.4?異步執(zhí)行組件

?????? Activiti可以執(zhí)行任務(wù),JobExecutor為啟核心類,JobExecutor包含三個(gè)主要屬性:JobAcquisitionThread,BlockingQueue,ThreadPoolExecutor。方法ProcessEngines在引擎啟動(dòng)時(shí)調(diào)用JobExecutor.start,JobAcquisitionThread 線程即開始工作,其run方法不斷循環(huán)執(zhí)行AcquiredJobs中的job,執(zhí)行一次后線程等待一定時(shí)間直到超時(shí)或者JobExecutor.jobWasAdded方法,因?yàn)橛行氯蝿?wù)而被調(diào)用。

?

悟纖小結(jié)

師傅:這一節(jié)的主要是目的是要梳理下集成時(shí)的核心思路以及Activiti的核心類,在后續(xù)的開發(fā)中,這些核心類占據(jù)著很重要的位置。好了徒兒,不知道你消化了為師的思路否?

悟纖:差不多吧。

師傅:記著多少了?

悟纖:七八成吧。

師傅:現(xiàn)在呢?

悟纖:都忘了,一點(diǎn)都不記住了。

師傅:你以為你在練太極劍法吶。

悟纖:師傅,這是無(wú)形中喚醒了我的記憶《倚天屠龍記》。

師傅:別扯淡了,趕緊趁熱總結(jié)下。

悟纖:好的,馬上。

(1)流程模型搭建:對(duì)于流程模型搭建這個(gè)要在心中有劍,這樣就能理解Activiti的一個(gè)工作機(jī)制了。

(2)對(duì)于Spring Boot集成Activiti有一個(gè)大體的思路:這樣有助于后續(xù)的實(shí)戰(zhàn)集成操作。

(3)Activiti的核心類:runtimeService、taskService這個(gè)是核心的核心,千萬(wàn)要記住。

?

我就是我,是顏色不一樣的煙火。 我就是我,是與眾不同的小蘋果。

à悟空學(xué)院:https://t.cn/Rg3fKJD

學(xué)院中有Spring?Boot相關(guān)的課程!點(diǎn)擊「閱讀原文」進(jìn)行查看!

SpringBoot視頻:http://t.cn/A6ZagYTi

SpringBoot交流平臺(tái):https://t.cn/R3QDhU0

SpringSecurity5.0視頻:http://t.cn/A6ZadMBe

ShardingJDBC分庫(kù)分表:http://t.cn/A6ZarrqS

分布式事務(wù)解決方案:http://t.cn/A6ZaBnIr

JVM內(nèi)存模型調(diào)優(yōu)實(shí)戰(zhàn):http://t.cn/A6wWMVqG

Spring入門到精通:https://t.cn/A6bFcDh4

大話設(shè)計(jì)模式之愛你:https://dwz.cn/wqO0MAy7

總結(jié)

以上是生活随笔為你收集整理的「Activiti精品 悟纤出品」核心类以及如何在SpringBoot集成说明 - 第328篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。