BPMN工作流的基本概念!詳解工作流框架Activiti的服務(wù)架構(gòu)和組件

      網(wǎng)友投稿 1120 2022-05-30

      工作流

      工作流簡(jiǎn)介

      工作流(Workflow): 工作流就是通過(guò)計(jì)算機(jī)技術(shù)對(duì)業(yè)務(wù)流程進(jìn)行自動(dòng)化管理。實(shí)現(xiàn)多個(gè)參與者按照預(yù)定的流程去自動(dòng)執(zhí)行業(yè)務(wù)流程。

      定義: 通過(guò)計(jì)算機(jī)對(duì)業(yè)務(wù)流程自動(dòng)化執(zhí)行管理

      主要解決的是: 使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則自動(dòng)進(jìn)行傳遞文檔,信息或任務(wù)的過(guò)程.從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)

      工作流管理系統(tǒng)的目標(biāo):

      管理工作的流程以確保工作在正確的時(shí)間被期望的人員所執(zhí)行

      在自動(dòng)化進(jìn)行的業(yè)務(wù)過(guò)程中插入人工的執(zhí)行和干預(yù)

      工作流框架:

      Activiti,JBPM,OSWorkFlow,WorkFlow

      工作流框架底層需要有數(shù)據(jù)庫(kù)提供支持

      工作流術(shù)語(yǔ)

      ProcessEngine對(duì)象: 這是Activiti工作的核心.負(fù)責(zé)生成流程運(yùn)行時(shí)的各種實(shí)例及數(shù)據(jù),監(jiān)控和管理流程的運(yùn)行

      業(yè)務(wù)流程管理:

      是一種以規(guī)范化的構(gòu)造端到端的卓越業(yè)務(wù)流程為中心,以持續(xù)的提高組織業(yè)務(wù)績(jī)效為目的的系統(tǒng)化方法

      常見(jiàn)商業(yè)管理教育如EMBA,MBA等均將BPM包含在內(nèi)

      業(yè)務(wù)流程建模與標(biāo)注:

      這些圖如何組合成一個(gè)業(yè)務(wù)流程圖(Business Process Diagram)

      討論BPMN的各種的用途:包括以何種精度來(lái)影響一個(gè)流程圖中的模型

      BPMN作為一個(gè)標(biāo)準(zhǔn)的價(jià)值

      BPMN未來(lái)發(fā)展的遠(yuǎn)景

      一個(gè)業(yè)務(wù)流程圖有三個(gè)流對(duì)象的核心元素

      事件

      一個(gè)事件用圓圈來(lái)描述,表示一個(gè)業(yè)務(wù)流程期間發(fā)生的東西

      事件影響流程的流動(dòng).一般有一個(gè)原因(觸發(fā)器)或一個(gè)影響(結(jié)果)

      基于它們對(duì)流程的影響,有三種事件:開(kāi)始事件,中間事件,終止事件

      活動(dòng)

      用圓角矩形表示,一個(gè)流程由一個(gè)活動(dòng)或多個(gè)活動(dòng)組成

      條件

      條件用菱形表示,用于控制序列流的分支與合并。

      可以作為選擇,包括路徑的分支與合并

      內(nèi)部的標(biāo)記會(huì)給出控制流的類(lèi)型

      Activiti開(kāi)源工作流框架

      Activiti簡(jiǎn)介

      Activiti是一個(gè)開(kāi)源的工作流引擎,它實(shí)現(xiàn)了BPMN 2.0規(guī)范,可以發(fā)布設(shè)計(jì)好的流程定義,并通過(guò)api進(jìn)行流程調(diào)度

      Activiti 作為一個(gè)遵從 Apache 許可的工作流和業(yè)務(wù)流程管理開(kāi)源平臺(tái),其核心是基于Java的超快速,超穩(wěn)定的 BPMN2.0 流程引擎,強(qiáng)調(diào)流程服務(wù)的可嵌入性和可擴(kuò)展性,同時(shí)更加強(qiáng)調(diào)面向業(yè)務(wù)人員

      Activiti 流程引擎重點(diǎn)關(guān)注在系統(tǒng)開(kāi)發(fā)的易用性和輕量性上.每一項(xiàng)BPM業(yè)務(wù)功能Activiti流程引擎都以服務(wù)的形式提供給開(kāi)發(fā)人員.通過(guò)使用這些服務(wù),開(kāi)發(fā)人員能夠構(gòu)建出功能豐富,輕便且高效的BPM應(yīng)用程序

      Activiti服務(wù)結(jié)構(gòu)

      Activiti系統(tǒng)服務(wù)結(jié)構(gòu)圖

      核心類(lèi):

      ProcessEngine: 流程引擎的抽象,可以通過(guò)此類(lèi)獲取需要的所有服務(wù)

      服務(wù)類(lèi):

      XxxService: 通過(guò)ProcessEngine獲取,Activiti將不同生命周期的服務(wù)封裝在不同Service中,包括定義,部署,運(yùn)行.通過(guò)服務(wù)類(lèi)可獲取相關(guān)生命周期中的服務(wù)信息

      RepositoryService

      Repository Service提供了對(duì)repository的存取服務(wù)

      Activiti中每一個(gè)不同版本的業(yè)務(wù)流程的定義都需要使用一些定義文件,部署文件和支持?jǐn)?shù)據(jù)(例如BPMN2.0XML文件,表單定義文件,流程定義圖像文件等),這些文件都存儲(chǔ)在Activiti內(nèi)建的Repository中

      BPMN工作流的基本概念!詳解工作流框架Activiti的服務(wù)架構(gòu)和組件

      RuntimeService

      Runtime Service提供了啟動(dòng)流程,查詢(xún)流程實(shí)例,設(shè)置獲取流程實(shí)例變量等功能.此外它還提供了對(duì)流程部署,流程定義和流程實(shí)例的存取服務(wù)

      TaskService

      Task Service提供了對(duì)用戶(hù)Task和Form相關(guān)的操作.它提供了運(yùn)行時(shí)任務(wù)查詢(xún),領(lǐng)取,完成,刪除以及變量設(shè)置等功能

      HistoryService

      History Service用于**獲取正在運(yùn)行或已經(jīng)完成的流程實(shí)例的信息,**與Runtime Service中獲取的流程信息不同,歷史信息包含已經(jīng)持久化存儲(chǔ)的永久信息,并已經(jīng)被針對(duì)查詢(xún)優(yōu)化

      FormService

      使用Form Service可以存取啟動(dòng)和完成任務(wù)所需的表單數(shù)據(jù)并且根據(jù)需要來(lái)渲染表單

      Activiti中的流程和狀態(tài)Task均可以關(guān)聯(lián)業(yè)務(wù)相關(guān)的數(shù)據(jù)

      IdentityService

      Identity Service提供了對(duì)Activiti系統(tǒng)中的用戶(hù)和組的管理功能

      Activiti中內(nèi)置了用戶(hù)以及組管理的功能,必須使用這些用戶(hù)和組的信息才能獲取到相應(yīng)的Task

      ManagementService

      Management Service提供了對(duì)Activiti流程引擎的管理和維護(hù)功能

      這些功能不在工作流驅(qū)動(dòng)的應(yīng)用程序中使用,主要用于 Activiti 系統(tǒng)的日常維護(hù)

      核心業(yè)務(wù)對(duì)象:

      org.activiti.engine.impl.persistence.entity包下的類(lèi),包括Task,ProcessInstance,Execution等

      根據(jù)不同職責(zé)實(shí)現(xiàn)相應(yīng)接口的方法(如需要持久化則繼承PersistentObject接口),與傳統(tǒng)的實(shí)體類(lèi)不同

      Activiti組件

      Activiti上下文組件Context: 用來(lái)保存生命周期比較長(zhǎng),全局性的信息,類(lèi)似Application.主要包括如下三類(lèi):

      CommandContext: 命令上下文-保存每個(gè)命令必要的資源,如持久化需要的session

      ProcessEngineConfigurationImpl: 流程引擎相關(guān)配置信息-整個(gè)引擎全局的配置信息.如數(shù)據(jù)源DataSource等.該對(duì)象為單例,在流程引擎創(chuàng)建的時(shí)候初始化

      ExecutionContext: 持有ExecutionEntity對(duì)象

      持久化組件:

      Activiti使用mybatis作OR映射,并在此基礎(chǔ)上增加設(shè)計(jì)了自己的持久化框架

      在流程引擎創(chuàng)建時(shí)初始化,頂層接口Session,SessionFactory

      Session有兩個(gè)實(shí)現(xiàn)類(lèi):

      DbSqlSession: 負(fù)責(zé)sql表達(dá)式的執(zhí)行

      AbstractManager: 負(fù)責(zé)對(duì)象的持久化操作

      SessionFactory有兩個(gè)實(shí)現(xiàn)類(lèi):

      DbSqlSessionFactory: 負(fù)責(zé)DbSqlSession相關(guān)操作

      GenericManagerFactory: 負(fù)責(zé)AbstractManager相關(guān)操作

      Event-Listener組件:

      Activiti允許客戶(hù)代碼介入流程執(zhí)行,提供了事件監(jiān)聽(tīng)組件

      監(jiān)聽(tīng)的事件類(lèi)型:

      TaskListener

      JavaDelegate

      Expression

      ExecutionListener

      ProcessEngineConfigurationImpl持有DelegateInterceptor的某個(gè)實(shí)例,方便調(diào)用handleInvocation

      Cache組件

      DbSqlSession中有cache的實(shí)現(xiàn)

      Activiti基于List和Map來(lái)做緩存:如查詢(xún)時(shí)先查緩存,沒(méi)有則直接查詢(xún)并放入緩存

      異步執(zhí)行組件

      Activiti可以執(zhí)行任務(wù),JobExecutor為其核心類(lèi),JobExecutor包含三個(gè)主要屬性:

      JobAcquisitionThread

      BlockingQueue

      ThreadPoolExecutor

      方法ProcessEngines在引擎啟動(dòng)時(shí)調(diào)用JobExecutor.start,JobAcquisitionThread 線(xiàn)程即開(kāi)始工作,其run方法不斷循環(huán)執(zhí)行AcquiredJobs中的job,執(zhí)行一次后線(xiàn)程等待一定時(shí)間直到超時(shí)或者JobExecutor.jobWasAdded方法,因?yàn)橛行氯蝿?wù)而被調(diào)用。

      流程虛擬機(jī)PVM

      流程虛擬機(jī)API暴露了流程虛擬機(jī)的POJO核心,流程虛擬機(jī)API描述了一個(gè)工作流流程必備的組件,這些組件包括:

      PvmProcessDefinition: 流程的定義,形象點(diǎn)說(shuō)就是用戶(hù)畫(huà)的那個(gè)圖.靜態(tài)含義

      PvmProcessInstance: 流程實(shí)例,用戶(hù)發(fā)起的某個(gè)PvmProcessDefinition的一個(gè)實(shí)例.動(dòng)態(tài)含義

      PvmActivity: 流程中的一個(gè)節(jié)點(diǎn)

      PvmTransition: 銜接各個(gè)節(jié)點(diǎn)之間的路徑,形象點(diǎn)說(shuō)就是圖中各個(gè)節(jié)點(diǎn)之間的連接線(xiàn)

      PvmEvent: 流程執(zhí)行過(guò)程中觸發(fā)的事件

      Activiti架構(gòu)

      Activiti Engine:

      最核心的模塊

      提供針對(duì)BPMN 2.0規(guī)范的解析,執(zhí)行,創(chuàng)建,管理(任務(wù),流程實(shí)例),查詢(xún)歷史記錄并根據(jù)結(jié)果生成報(bào)表

      Activiti Modeler:

      模型設(shè)計(jì)器

      適用于業(yè)務(wù)人員把需求轉(zhuǎn)換為規(guī)范流程定義

      Activiti Designer:

      功能和Activiti Modeler類(lèi)似,同樣提供了基于BPMN 2.0規(guī)范的可視化設(shè)計(jì)功能,但是目前還沒(méi)有完全支持BPMN規(guī)范的定義

      可以把業(yè)務(wù)需求人員用Signavio設(shè)計(jì)的流程定義(XML格式)導(dǎo)入到Designer中,從而讓開(kāi)發(fā)人員將其進(jìn)一步加工成為可以運(yùn)行的流程定義

      Activiti Explorer:

      可以用來(lái)管理倉(cāng)庫(kù),用戶(hù),組,啟動(dòng)流程,任務(wù)辦理等

      此組件使用REST風(fēng)格API,提供一個(gè)基礎(chǔ)的設(shè)計(jì)模型.如果業(yè)務(wù)簡(jiǎn)單,也可以直接使用無(wú)需開(kāi)發(fā).還可以作為后臺(tái)管理員的流程、任務(wù)管理系統(tǒng)使用

      Activiti REST:

      提供RESTful風(fēng)格的服務(wù)

      允許客戶(hù)端以JSON的方式與引擎的REST API交互

      通用的協(xié)議具有跨平臺(tái),跨語(yǔ)言的特性

      Activiti數(shù)據(jù)庫(kù)支持

      Activiti的后臺(tái)由有數(shù)據(jù)庫(kù)的支持

      所有的表都以ACT_開(kāi)頭

      第二部分是表示表的用途的兩個(gè)字母標(biāo)識(shí)

      用途也和服務(wù)的API對(duì)應(yīng)

      ACT_RE_* : 'RE'表示repository. 這個(gè)前綴的表包含了流程定義和流程靜態(tài)資源(圖片,規(guī)則...) ACT_RU_* : 'RU'表示runtime.這些運(yùn)行時(shí)的表, 包含流程實(shí)例,任務(wù),變量,異步任務(wù),等運(yùn)行中的數(shù)據(jù). Activiti只在流程實(shí)例執(zhí)行過(guò)程中保存這些數(shù)據(jù),在流程結(jié)束時(shí)就會(huì)刪除這些記錄.這樣運(yùn)行時(shí)表可以一直很小速度很快 ACT_ID_* : 'ID'表示identity.這些表包含身份信息, 比如用戶(hù),組... ACT_HI_* : 'HI'表示history.這些表包含歷史數(shù)據(jù), 比如歷史流程實(shí)例,變量,任務(wù)... ACT_GE_* :通用數(shù)據(jù). 用于不同場(chǎng)景下, 如存放資源文件

      資源庫(kù)流程規(guī)則表 (ACT_RE_*:'RE’表示repository. 這個(gè)前綴的表包含了流程定義和流程靜態(tài)資源(圖片,規(guī)則…))

      act_re_deployment 部署信息表 act_re_model 流程設(shè)計(jì)模型部署表 act_re_procdef 流程定義數(shù)據(jù)表

      運(yùn)行時(shí)數(shù)據(jù)庫(kù)表 (ACT_RU_*:'RU’表示runtime.這些運(yùn)行時(shí)的表, 包含流程實(shí)例,任務(wù),變量,異步任務(wù),等運(yùn)行中的數(shù)據(jù).Activiti只在流程實(shí)例執(zhí)行過(guò)程中保存這些數(shù)據(jù),在流程結(jié)束時(shí)就會(huì)刪除這些記錄.這樣運(yùn)行時(shí)表可以一直很小速度很快)

      act_ru_execution 運(yùn)行時(shí)流程執(zhí)行實(shí)例表 act_ru_identitylink 運(yùn)行時(shí)流程人員表,主要存儲(chǔ)任務(wù)節(jié)點(diǎn)與參與者的相關(guān)信息 act_ru_task 運(yùn)行時(shí)任務(wù)節(jié)點(diǎn)表 act_ru_variable 運(yùn)行時(shí)流程變量數(shù)據(jù)表

      組織機(jī)構(gòu)表 (ACT_ID_* : 'ID’表示identity.這些表包含身份信息, 比如用戶(hù),組…)

      act_id_group 用戶(hù)組信息表 act_id_info 用戶(hù)擴(kuò)展信息表 act_id_membership 用戶(hù)與用戶(hù)組對(duì)應(yīng)信息表 act_id_user 用戶(hù)信息表 這四張表很常見(jiàn),基本的組織機(jī)構(gòu)管理,關(guān)于用戶(hù)認(rèn)證方面建議還是自己開(kāi)發(fā)一套,組件自帶的功能太簡(jiǎn)單,使用中有很多需求難以滿(mǎn)足

      歷史數(shù)據(jù)庫(kù)表 (ACT_HI_*:'HI’表示history.這些表包含歷史數(shù)據(jù), 比如歷史流程實(shí)例,變量,任務(wù)…)

      act_hi_actinst 歷史節(jié)點(diǎn)表 act_hi_attachment 歷史附件表 act_hi_comment 歷史意見(jiàn)表 act_hi_identitylink 歷史流程人員表 act_hi_detail 歷史詳情表,提供歷史變量的查詢(xún) act_hi_procinst 歷史流程實(shí)例表 act_hi_taskinst 歷史任務(wù)實(shí)例表 act_hi_varinst 歷史變量表

      組織機(jī)構(gòu)表 (ACT_GE_*:通用數(shù)據(jù). 用于不同場(chǎng)景下, 如存放資源文件)

      act_ge_bytearray 二進(jìn)制數(shù)據(jù)表 act_ge_property 屬性數(shù)據(jù)表存儲(chǔ)整個(gè)流程引擎級(jí)別的數(shù)據(jù),初始化表結(jié)構(gòu)時(shí),會(huì)默認(rèn)插入三條記錄

      activiti.cfg.xml: Activiti核心配置文件,配置流程引擎創(chuàng)建工具的基本參數(shù)和數(shù)據(jù)庫(kù)連接池參數(shù)

      定義數(shù)據(jù)庫(kù)配置參數(shù)

      配置連接池參數(shù)

      Activiti特點(diǎn)

      Activiti的設(shè)計(jì)思想是簡(jiǎn)潔,快速

      瓶頸體現(xiàn)在和數(shù)據(jù)庫(kù)交換數(shù)據(jù)的過(guò)程中,針對(duì)這一點(diǎn)Activiti選擇了使MyBatis,從而可以通過(guò)最優(yōu)的SQL語(yǔ)句執(zhí)行Command,僅憑如此就能讓引擎在速度上保持最高的性能

      Activiti流程引擎重點(diǎn)關(guān)注在系統(tǒng)開(kāi)發(fā)的易用性和輕量性上,每一項(xiàng)BPM業(yè)務(wù)功能Activiti流程引擎都以服務(wù)的形式提供給開(kāi)發(fā)人員,通過(guò)使用這些服務(wù),開(kāi)發(fā)人員能夠構(gòu)建出功能豐富,輕便且高效的BPM應(yīng)用程序

      activiti.cfg.xml文件為核心配置文件,該配置文件集成在Spring的IOC容器當(dāng)中,可以產(chǎn)生ProcessEngineConfiguration對(duì)象,這個(gè)對(duì)象就是流程引擎的配置對(duì)象

      ProcessEngine對(duì)象為流程引擎對(duì)象,該對(duì)象是工作流業(yè)務(wù)系統(tǒng)的核心,所有的業(yè)務(wù)操作都是由這個(gè)對(duì)象所派生出來(lái)的對(duì)象實(shí)現(xiàn)

      Activiti引擎提供了七大Service接口,均通過(guò)ProcessEngine獲取,并且支持鏈?zhǔn)紸PI編程風(fēng)格

      基于Web的Activiti Modeler流程設(shè)計(jì)器

      IDEA的actiBPM插件

      Activiti原生支持Spring,可以很輕松地進(jìn)行Spring集成,非常方便管理事務(wù)和解析表達(dá)式(Expression)

      Activiti繼承自jBPM4,在表結(jié)構(gòu)設(shè)計(jì)方面也遵循運(yùn)行時(shí)與歷史數(shù)據(jù)的分離

      這樣的設(shè)計(jì)可以快速讀取運(yùn)行時(shí)數(shù)據(jù),僅當(dāng)需要查詢(xún)歷史數(shù)據(jù)時(shí)再?gòu)膶?zhuān)門(mén)的歷史數(shù)據(jù)表中讀取.這種設(shè)計(jì)方式可以大幅提高數(shù)據(jù)的存取效率,尤其是當(dāng)數(shù)據(jù)日積月累時(shí)依然能夠快速反應(yīng)

      API 函數(shù)工作流 FunctionGraph

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:【愚公系列】2022年01月 Mysql數(shù)據(jù)庫(kù)-MySQL索引
      下一篇:java實(shí)現(xiàn)find迷宮路徑
      相關(guān)文章
      亚洲熟女少妇一区二区| 亚洲伊人久久精品影院| 久久精品国产亚洲AV高清热| 亚洲色欲久久久综合网| 在线观看亚洲av每日更新| 国产成人精品曰本亚洲79ren| 伊在人亚洲香蕉精品区麻豆| 香蕉视频亚洲一级| 在线观看亚洲电影| 另类专区另类专区亚洲| 国产亚洲精品美女2020久久| 亚洲高清国产拍精品青青草原| 国产精品亚洲一区二区三区久久 | 亚洲欧洲在线播放| 亚洲精品视频专区| 亚洲国产精品成人精品软件| 亚洲国产精品yw在线观看| 亚洲人成日本在线观看| 亚洲欧洲日本在线观看| 亚洲欧洲专线一区| 亚洲αⅴ无码乱码在线观看性色| 国产精品无码亚洲精品2021| 无码不卡亚洲成?人片| 亚洲国产精品人人做人人爽| 久久亚洲av无码精品浪潮| 亚洲中文字幕久久精品无码APP| 久久亚洲精品无码| 亚洲av无码国产精品色午夜字幕| 亚洲国产精品久久久久网站| 亚洲欧洲国产成人精品| 精品久久久久久亚洲精品| 亚洲熟女综合一区二区三区| 久久精品国产亚洲av天美18| 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲日本人成中文字幕| 亚洲国产成人精品无码区花野真一| 国产亚洲一卡2卡3卡4卡新区| 亚洲精品综合久久| 亚洲av日韩av无码| 亚洲伊人久久精品| 风间由美在线亚洲一区|