成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Activiti工作流淺析

開發(fā) 架構(gòu)
從公司講,工作流系統(tǒng)規(guī)范了公司的業(yè)務(wù)流程,優(yōu)化了企業(yè)內(nèi)部的管理,提高了團隊間地協(xié)作效率,能夠幫助企業(yè)向知識型企業(yè)轉(zhuǎn)變。

一、工作流

1、工作流概述

在一個公司業(yè)務(wù)中,每一個業(yè)務(wù)的開始和結(jié)束,都可以理解成為一個工作流。例如公司請假的基本流程。

圖片

如圖所示,員工先提出請假申請,提交該申請給直屬領(lǐng)導(dǎo)審批,直屬領(lǐng)導(dǎo)審批后,再提交給人事部門審批,審批完成后,通知提出申請的員工,即請假流程結(jié)束。整個步驟按照正常工作方式一步步完成,這就是一個簡單而又完整的工作流;工作流可以理解為從開始節(jié)點發(fā)起流程,然后經(jīng)過其中多個節(jié)點,完成動作,最后到結(jié)束節(jié)點的整個過程。

在沒有工作流引擎之前,為了實現(xiàn)上述的流程控制,開發(fā)人員最常用的做法是采用狀態(tài)值跟蹤流程的狀態(tài)變化,假設(shè)初始值為0,每一個流程的流轉(zhuǎn),狀態(tài)值+1,然后給出相應(yīng)的處理邏輯。可以看出工作的流程和業(yè)務(wù)高度耦合,當(dāng)流程發(fā)生變化時,我們的業(yè)務(wù)代碼也要做出同等的調(diào)整。

如果有一個工具幫助我們管理工作流,當(dāng)業(yè)務(wù)流程變化后,程序不需要發(fā)生變化,最終將會讓我們的開發(fā)能力和業(yè)務(wù)能力大幅提升。于是乎,工作流引擎應(yīng)運而生!

二、Activiti介紹

1、簡介

  • Activiti是一個開源的工作流引擎,它實現(xiàn)了BPMN 2.0規(guī)范,可以發(fā)布設(shè)計好的流程定義,并通過api進行流程調(diào)度
  • Activiti是一種輕量級,可嵌入的BPM引擎,可以將復(fù)雜的業(yè)務(wù)流程抽取出來,然后使用專門的建模語言BPMN2.0定義執(zhí)行流程,最終業(yè)務(wù)系統(tǒng)通過訪問Activiti的接口去驅(qū)動預(yù)定義的流程執(zhí)行
  • Activiti 流程引擎重點關(guān)注在系統(tǒng)開發(fā)的易用性和輕量性上.每一項BPM業(yè)務(wù)功能Activiti流程引擎都以服務(wù)的形式提供給開發(fā)人員.通過使用這些服務(wù),開發(fā)人員能夠構(gòu)建出功能豐富,輕便且高效的BPM應(yīng)用程序

2、Activiti服務(wù)架構(gòu)

圖片

activiti.cfg.xml:

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

核心類:

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

服務(wù)類:

  • XxxService: 通過ProcessEngine獲取,Activiti將不同生命周期的服務(wù)封裝在不同Service中,包括定義,部署,運行.通過服務(wù)類可獲取相關(guān)生命周期中的服務(wù)信息
  • RepositoryServiceRepository Service提供了對repository的存取服務(wù) Activiti中每一個不同版本的業(yè)務(wù)流程的定義都需要使用一些定義文件,部署文件和支持?jǐn)?shù)據(jù)(例如BPMN2.0XML文件,表單定義文件,流程定義圖像文件等),這些文件都存儲在Activiti內(nèi)建的Repository中
  • RuntimeServiceRuntime Service提供了啟動流程,查詢流程實例,設(shè)置獲取流程實例變量等功能.此外它還提供了對流程部署,流程定義和流程實例的存取服務(wù)
  • TaskServiceTask Service提供了對用戶Task和Form相關(guān)的操作.它提供了運行時任務(wù)查詢,領(lǐng)取,完成,刪除以及變量設(shè)置等功能
  • HistoryServiceHistory Service用于獲取正在運行或已經(jīng)完成的流程實例的信息,與Runtime Service中獲取的流程信息不同,歷史信息包含已經(jīng)持久化存儲的永久信息,并已經(jīng)被針對查詢優(yōu)化
  • FormService使用Form Service可以存取啟動和完成任務(wù)所需的表單數(shù)據(jù)并且根據(jù)需要來渲染表單 Activiti中的流程和狀態(tài)Task均可以關(guān)聯(lián)業(yè)務(wù)相關(guān)的數(shù)據(jù)
  • IdentityServiceIdentity Service提供了對Activiti系統(tǒng)中的用戶和組的管理功能 Activiti中內(nèi)置了用戶以及組管理的功能,必須使用這些用戶和組的信息才能獲取到相應(yīng)的Task
  • ManagementServiceManagement Service提供了對Activiti流程引擎的管理和維護功能 這些功能不在工作流驅(qū)動的應(yīng)用程序中使用,主要用于 Activiti 系統(tǒng)的日常維護

組件

  • 持久化組件:

?Activiti使用mybatis作OR映射,并在此基礎(chǔ)上增加設(shè)計了自己的持久化框架在流程引擎創(chuàng)建時初始化,頂層接口Session,SessionFactorySession有兩個實現(xiàn)類:DbSqlSession: 負(fù)責(zé)sql表達式的執(zhí)行AbstractManager: 負(fù)責(zé)對象的持久化操作SessionFactory有兩個實現(xiàn)類:DbSqlSessionFactory: 負(fù)責(zé)DbSqlSession相關(guān)操作GenericManagerFactory: 負(fù)責(zé)AbstractManager相關(guān)操作

  • Event-Listener組件:

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

  • Cache組件:

DbSqlSession中有cache的實現(xiàn)Activiti基于List和Map來做緩存:如查詢時先查緩存,沒有則直接查詢并放入緩存

  • 異步執(zhí)行組件:

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

  • 上下文組件Context:

用來保存生命周期比較長,全局性的信息,類似Application.主要包括如下三類:CommandContext: 命令上下文-保存每個命令必要的資源,如持久化需要的sessionProcessEngineConfigurationImpl: 流程引擎相關(guān)配置信息-整個引擎全局的配置信息.如數(shù)據(jù)源DataSource等.該對象為單例,在流程引擎創(chuàng)建的時候初始化ExecutionContext: 持有ExecutionEntity對象

3、Activiti數(shù)據(jù)庫支持

  • 所有的表都以ACT_開頭
  • 第二部分是表示表的用途的兩個字母標(biāo)識
  • 用途也和服務(wù)的API對應(yīng)
ACT_RE_* : 'RE'表示repository. 這個前綴的表包含了流程定義和流程靜態(tài)資源(圖片,規(guī)則...)
ACT_RU_* : 'RU'表示runtime.這些運行時的表, 包含流程實例,任務(wù),變量,異步任務(wù),等運行中的數(shù)據(jù).
Activiti只在流程實例執(zhí)行過程中保存這些數(shù)據(jù),在流程結(jié)束時就會刪除這些記錄.這樣運行時表可以一直很小速度很快
ACT_ID_* : 'ID'表示identity.這些表包含身份信息, 比如用戶,組...
ACT_HI_* : 'HI'表示history.這些表包含歷史數(shù)據(jù), 比如歷史流程實例,變量,任務(wù)...
ACT_GE_* :通用數(shù)據(jù). 用于不同場景下, 如存放資源文件

資源庫流程規(guī)則表說明:

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

運行時數(shù)據(jù)庫表說明:

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

組織結(jié)構(gòu)表說明:

act_id_group       用戶組信息
act_id_info 用戶擴展信息表
act_id_membership 用戶與用戶組對應(yīng)信息表
act_id_user 用戶信息表

4、BPM/BPMN介紹

BPM(Business Process Management),即業(yè)務(wù)流程管理,是一種規(guī)范化的構(gòu)造端到端的業(yè)務(wù)流程,以持續(xù)的提高組織業(yè)務(wù)效率。常見商業(yè)管理教育如EMBA、MBA等均將BPM包含在內(nèi)。BPMN(Business Process Model AndNotation)即業(yè)務(wù)流程模型和符號,是一套標(biāo)準(zhǔn)的業(yè)務(wù)流程建模符號,使用 BPMN 提供的符號可以創(chuàng)建業(yè)務(wù)流程。Activiti 就是使用 BPMN 進行流程建模、流程執(zhí)行管理的。BPMN2.0 是業(yè)務(wù)流程建模符號 2.0 的縮寫,它由 Business Process Management Initiative 這個非營利協(xié)會創(chuàng)建并不斷發(fā)展。BPMN2.0 是使用一些符號來明確業(yè)務(wù)流程設(shè)計流程圖的一套符號規(guī)范,能增進業(yè)務(wù)建模時的溝通效率。目前 BPMN2.0 是最新的版本,它用于在 BPM 上下文中進行布局和可視化的溝通

BPMN2.0基本符號介紹

簡要列表如下:

圖片

圖片

圖片

三、springboot整合Activiti

  • 新建springboot項目
  • pom.xml導(dǎo)入相關(guān)依賴

圖片

  • 在resource目錄下新建process目錄作為*.bmnp的存儲路徑

圖片

  • application.yml配置

圖片

  • idea安裝插件Activiti BPMN visualizer,創(chuàng)建流程圖

圖片

打開該文件,右鍵選中如圖:

圖片

最終會生成xml文件:

圖片

 通過讀取png和bmnp獲取請假流程:

圖片

四、考慮使用Activiti的場景

1、關(guān)鍵業(yè)務(wù)流程: 訂單、報價處理、合同審核、客戶電話處理、供應(yīng)鏈管理等

2、行政管理類:出差申請、加班申請、請假申請、用車申請、各種辦公用品申請、購買申請、日報周報等

3、人事管理類: 員工培訓(xùn)安排、績效考評、職位變動處理、員工檔案信息管理等。

4、財務(wù)相關(guān)類: 付款請求、應(yīng)收款處理、日常報銷處理、出差報銷、預(yù)算和計劃申請等。

5、客戶服務(wù)類: 客戶信息管理、客戶投訴、請求處理、售后服務(wù)管理等。

五、總結(jié)

從公司講,工作流系統(tǒng)規(guī)范了公司的業(yè)務(wù)流程,優(yōu)化了企業(yè)內(nèi)部的管理,提高了團隊間地協(xié)作效率,能夠幫助企業(yè)向知識型企業(yè)轉(zhuǎn)變。

作為技術(shù)開發(fā)人員,Activiti在小項目中基于串行并行流轉(zhuǎn)能夠基本滿足業(yè)務(wù)和開發(fā)的需求;但是Activiti對于技術(shù)的要求門檻相對較高,二次開發(fā)難度大,需要技術(shù)人員不斷提升和學(xué)習(xí),在實戰(zhàn)中研發(fā)出具有極高價值的工作流系統(tǒng)。

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2023-07-05 09:48:44

Activiti部署

2009-09-01 18:19:39

C#工作流

2021-12-17 08:39:39

SpringbootActiviti網(wǎng)關(guān)路由

2010-06-24 16:40:16

Bittorrent協(xié)

2021-10-14 11:34:05

技術(shù)工作流引擎

2013-04-23 10:28:08

IBeamMDAAWF

2024-04-25 08:00:00

DevOps架構(gòu)軟件開發(fā)

2012-07-23 10:36:46

工作流

2009-03-03 09:13:36

工作流BPM業(yè)務(wù)流程

2010-01-04 17:42:50

SilverLight

2023-01-04 08:02:16

工作流架構(gòu)設(shè)計

2011-12-14 09:58:58

JavajBPM

2009-06-19 15:38:43

Java虛擬機

2015-07-14 09:26:28

微型工作流引擎設(shè)計

2024-08-05 12:46:51

2015-06-24 10:18:26

2025-01-26 15:13:00

2013-09-29 17:13:59

PowerShell工作流

2024-07-31 08:01:48

2024-10-17 08:39:32

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产视频久久久 | 免费黄色录像片 | 成人免费视频网站在线观看 | 成人免费视频网站 | 午夜av在线| 日韩毛片 | 欧美看片 | 免费v片在线观看 | 亚洲网站在线观看 | 成人在线看片 | 亚洲网站在线观看 | 狠狠伊人 | 亚欧精品| 亚洲激情综合 | 亚洲激情在线观看 | 婷婷福利 | 日韩精品一区二区三区第95 | 中文字幕不卡在线观看 | 一区二区免费视频 | 国产高清一区二区三区 | 国产精品人人做人人爽 | 欧美日韩国产在线观看 | 日韩电影中文字幕 | 欧美亚洲国产一区二区三区 | 欧美成人免费在线视频 | 国产免费一区二区 | 看一级毛片视频 | 黄色av网站在线观看 | 日本在线视频不卡 | 国产精品一区二区福利视频 | 北条麻妃视频在线观看 | 人人干人人干人人 | 亚洲国产成人av | 日韩精品1区2区3区 国产精品国产成人国产三级 | 成人精品久久日伦片大全免费 | 国产高清久久久 | 超级黄色一级片 | 日本 欧美 三级 高清 视频 | 久久爱综合 | 成人av在线播放 | 欧美激情精品久久久久久免费 |