activiti 多部门审批_Activiti 基本介绍
簡介
這兩天工作中要用到Activiti,就簡單學習了下,做一個記錄,好腦子不如爛筆頭,記下來牢靠些,來吧,話不多說,一個字:干。
Activiti是什么,為什么要用它
Activiti項目是一項新的基于Apache許可的開源BPM平臺,從基礎開始構建,旨在提供支持新的BPMN 2.0標準,包括支持對象管理組(OMG),可以定義流程、執行流程并以不同方式對其實現運行。(巴拉巴拉一大堆,其實我也沒聽懂)。
還是用自己的化總結下吧。
其實就是一個工作審批流,在我們日常生活中,審批是非常常見的,加班打車,需要把發票貼到報銷單,然后提交給組長,組長審批完畢,提交給部門主管,部門主管審核完畢,給財務部門,財務部分審核完畢,給你銀行卡打錢,一個審批的流程結束了。
其實可以理解為審批流就是一個載體(火車),它不管你是什么業務數據(人還是貨物),它能驅動業務向前發展(目的地)。
Activiti 生成表
既然它能管理我們的審批,肯定要存儲數據,數據庫表是必不可少的,所以我們先建下表。
新建一個SpringBoot 項目
Pom.xml 文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>com.gljgroupId> <artifactId>activiti-create-tableartifactId> <version>0.0.1-SNAPSHOTversion> <packaging>jarpackaging> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.0.4.RELEASEversion> <relativePath/> parent> <dependencies> <dependency> <groupId>org.activitigroupId> <artifactId>activiti-spring-boot-starter-basicartifactId> <version>6.0.0version>dependency><dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>1.3.2version>dependency> <dependency> <groupId>io.springfoxgroupId> <artifactId>springfox-swagger2artifactId> <version>2.8.0version>dependency><dependency> <groupId>io.springfoxgroupId> <artifactId>springfox-swagger-uiartifactId> <version>2.8.0version>dependency><dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope>dependency> dependencies>project>application.properties
server.port=8080spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/db_activiti?autoReconnect=true&characterEncoding=utf8&useSSL=falsespring.datasource.username=rootspring.datasource.password=rootmybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=com.glj.modelspring.activiti.check-process-definitions=false項目入口類
package com.glj;import org.activiti.spring.boot.SecurityAutoConfiguration;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan;@ComponentScan(basePackages = {"com.glj"})@MapperScan(basePackages = {"com.glj"})@SpringBootApplication(exclude = SecurityAutoConfiguration.class)public class ActivitiApplication { public static void main(String[] args) { SpringApplication.run(ActivitiApplication.class, args); }}運行后,生成28張表
表說明
表名默認以“ACT_”開頭,并且表名的第二部分用兩個字母表明表的用例,而這個用例也基本上跟Service API匹配。
ACT_GE_* : “GE”代表“General”(通用),用在各種情況下;
ACT_HI_* : “HI”代表“History”(歷史),這些表中保存的都是歷史數據,比如執行過的流程實例、變量、任務,等等。Activit默認提供了4種歷史級別:
ACT_ID_* : “ID”代表“Identity”(身份),這些表中保存的都是身份信息,如用戶和組以及兩者之間的關系。如果Activiti被集成在某一系統當中的話,這些表可以不用,可以直接使用現有系統中的用戶或組信息;
ACT_RE_* : “RE”代表“Repository”(倉庫),這些表中保存一些‘靜態’信息,如流程定義和流程資源(如圖片、規則等);
ACT_RU_* : “RU”代表“Runtime”(運行時),這些表中保存一些流程實例、用戶任務、變量等的運行時數據。Activiti只保存流程實例在執行過程中的運行時數據,并且當流程結束后會立即移除這些數據,這是為了保證運行時表盡量的小并運行的足夠快;
| act_evt_log | 事件處理日志表 | |
| 一般數據 | act_ge_bytearray | 通用的流程定義和流程資源 | 
| act_ge_property | 系統相關屬性 | |
| 流程歷史記錄 | act_hi_actinst | 歷史的流程實例 | 
| act_hi_attachment | 歷史的流程附件 | |
| act_hi_comment | 歷史的說明性信息 | |
| act_hi_detail | 歷史的流程運行中的細節信息 | |
| act_hi_identitylink | 歷史的流程運行過程中用戶關系 | |
| act_hi_procinst | 歷史的流程實例 | |
| act_hi_taskinst | 歷史的任務實例 | |
| act_hi_varinst | 歷史的流程運行中的變量信息 | |
| 用戶用戶組表 | act_id_group | 身份信息-組信息 | 
| act_id_info | 身份信息-組信息 | |
| act_id_membership | 身份信息-用戶和組關系的中間表 | |
| act_id_user | 身份信息-用戶信息 | |
| act_procdef_info | 死信任務 | |
| 流程定義表 | act_re_deployment | 部署單元信息 | 
| act_re_model | 模型信息 | |
| act_re_procdef | 已部署的流程定義 | |
| 運行實例表 | act_ru_deadletter_job | 執行失敗任務表 | 
| act_ru_event_subscr | 運行時事件 | |
| act_ru_execution | 運行時流程執行實例 | |
| act_ru_identitylink | 運行時用戶關系信息 | |
| act_ru_job | 運行時作業 | |
| act_ru_suspended_job | 運行時暫停任務 | |
| act_ru_task | 運行時任務 | |
| act_ru_timer_job | 運行時定時任務 | |
| act_ru_variable | 運行時變量表 | 
具體的表結構及詳細介紹可參考
Activiti數據庫表結構 里面有詳細的每個表介紹。
流程概念和術語
(1) 一個ProcessDefinition代表的業務流程。它用于定義流程中不同步驟的結構和行為。
(2) 部署流程定義意味著將流程定義加載到Activiti數據庫中。
(3) 流程定義主要由BPMN 2.0標準定義,也可以使用Java代碼定義它們,定義的所有術語也可用作Java類。
(4) 一旦我們開始運行流程定義,就可以稱為一個流程process。
(5) processInstance是ProcessDefinition一個執行實例。
(6) 一個StartEvent與每一個業務流程有關,它表示該流程的切入點,同樣,有一個EndEvent表示流程的結束。我們可以定義這些事件的條件。
(7) 開始和結束之間的所有步驟(或元素)稱為任務,任務可以是各種類型的。最常用的任務是UserTasks和ServiceTasks。
顧名思義,UserTasks需要由用戶手動執行,另一方面,ServiceTasks配置了一段代碼,每當執行到達這段代碼時,代碼將被執行。
SequenceFlows用來連接任務,我們可以通過它將源元素和目標元素連接起來定義一個SequenceFlows;同樣,我們還可以在SequenceFlow上定義條件,這樣能在流程中創建條件路徑。
有了流程定義,我們可以使用Activiti提供的服務功能進行流程運行。
Activiti提供的服務
RepositoryService幫助我們實現流程定義的部署。此服務會處理與流程定義相關的靜態數據。
RuntimeService管理 ProcessInstances(當前正在運行的流程)以及流程變量
TaskService會跟蹤 UserTasks,需要由用戶手動執行的任務是Activiti API的核心。我們可以使用此服務創建任務,聲明并完成任務,分配任務的受讓人等。
FormService是一項可選服務,它用于定義中開始表單和任務表單。
IdentityService管理用戶和組。
HistoryService會跟蹤Activiti Engine的歷史記錄。我們還可以設置不同的歷史級別。
ManagementService與元數據相關,在創建應用程序時通常不需要。
DynamicBpmnService幫助我們在不重新部署的情況下更改流程中的任何內容。
IDE 安裝插件
由于我用的是eclipse,所以目前只說下再eclipse中是怎么添加Activiti插件的。
打開Eclipse -> Help -> Install New SoftWare-> Add
然后按照如下對話框輸入:
Name: ? Activiti Designer
Location: http://activiti.org/designer/update/
輸入完成后,單擊OK按鈕等待下載完成后安裝。安裝完成后在菜單選項中會出現activiti的目錄選項。
設置eclipse activit插件的畫流程圖 選項
打開菜單Windows --> Preferences --> Activiti -->Save 下流程圖片的生成方式
勾選上Create process definition image when saving ?the diagram操作,勾選上這個操作后在畫流程圖后保存eclipse會自動生成對應的流程圖片。
結束語
現在表也建立好了,開發環境也好了,接下來就是設計審批模板,然后就可以發起一個審批任務了
總結
以上是生活随笔為你收集整理的activiti 多部门审批_Activiti 基本介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 如下为利用Linux内核链表创建,Lin
 - 下一篇: python自动爬取更新电影网站_pyt