1. 程式人生 > >Activiti工作流入門

Activiti工作流入門

(個人學習記錄,如有誤導請指正) 一 : 安裝Eclipse外掛 開啟:Help ----> Install New Software ----> Add 輸入 Name: Activiti Designer  Location: http://activiti.org/designer/update/  輸入完成後,單擊OK按鈕等待下載完成後安裝即可 二:設定eclipse activiti外掛的畫流程圖選項 開啟選單 Windows --> Preferences --> Activiti -->Save 下流程圖片的生成方式
勾選上Create process definition image when saving the diagram操作,勾選上這個操作後在畫流程圖後儲存eclipse會自動生成對應的流程圖片。 三 : 向資料庫中匯入相關聯的表(初始化資料庫,三種方式)
方式1:匯入資料表
共計25張表: 流程部署相關表 act_re_deployement 部署物件表 act_rep_procdef 流程定義表 act_ge_bytearray 資原始檔表 act_ge_prperty 主鍵生成策略表(對於部署物件表的主鍵ID) 流程例項相關表 act_ru_execution 正在執行的執行物件表(包含執行物件ID和流程例項ID,如果有多個執行緒可能流程例項ID不一樣) act_hi_procinst 流程例項歷史表 act_hi_actinst 存放歷史所有完成的任務 Task 任務相關表 act_ru_task 代辦任務表 (只對應節點是UserTask的) act_hi_taskinst 代辦任務歷史表 (只對應節點是UserTask的) act_hi_actinst 所有節點活動歷史表 (對應流程的所有節點的活動歷史,從開始節點一直到結束節點中間的所有節點的活動都會被記錄) 流程變量表 act_ru_variable 正在執行的流程變量表 act_hi_variable 流程變數歷史表 方式二2:程式碼生成表:
/** * 初始化資料庫 * @author fyy * @date 2017年2月18日 下午7:23:51 */ @Test public void createTable(){ //1.建立activiti配置物件的例項 ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //2.設定資料庫連線資訊 configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver") .setJdbcUrl("jdbc:mysql:///activiti?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC") .setJdbcUsername("root") .setJdbcPassword("root"); //3.設定資料庫建表策略 /** * DB_SCHEMA_UPDATE_FALSE = "false" 如果不存在表就丟擲異常 * DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop" 每次都先刪除表,再建立表 * DB_SCHEMA_UPDATE_TRUE = "true" 如果不存在表就建立,存在就直接使用 */ configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); //4.使用配置物件建立流程引擎例項 ProcessEngine processEngine = configuration.buildProcessEngine(); System.out.println(processEngine); } 方式3:使用配置檔案生成25張表:
在src下新增配置檔案activiti.cfg.xml : <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql:///activiti?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC" /> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <!-- 設定資料庫建表策略 --> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans> 程式碼:
四:maven下,activiti案例: 1、maven依賴: <dependencies> <!-- activiti start --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.21.0</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>5.21.0</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> <version>5.21.0</version> </dependency> <!-- activiti end --> <!-- spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.4.RELEASE</version> </dependency> <!-- spring end --> <!-- Mybatis start --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- Mybatis end --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.6</version> </dependency> <!-- mysql驅動 start--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version> </dependency> <!-- mysql驅動 end--> </dependencies> 2、畫一個activiti流程圖 (1)在src下建立資料夾 diagrams :
(2)選中專案,右鍵-----》選擇New -----》Activiti Diagram
建立:
畫出下圖:其中一個流程必須包含一個開始節點和一個結束節點,結束節點可以有多個。 然後使用StartEvent, UserTask,EndEvent畫出下面的流程圖,然後用Connection中的SequenceFlow連線連線起來。
補充:畫圖時,選中一個UserTask,然後對其Properties進行設定 對其Id 、Name 、Assignee進行設定
(3)釋出 /** * 部署流程定義 */ @Test public void deploy(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); Deployment deploy = processEngine.getRepositoryService() //部署相關Service .createDeployment() // 建立部署 .addClasspathResource("diagrams/HelloWorld.bpmn") // 載入資原始檔 .addClasspathResource("diagrams/HelloWorld.png") // 載入資原始檔 .name("HelloWorld流程") // 流程名稱 .deploy(); // 部署 System.out.println("流程部署ID:"+deploy.getId()); System.out.println("流程部署Name:"+deploy.getName()); } 注意事項:釋出前src下必須有這個配置檔案:activiti.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql:///activiti?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC" /> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <!-- 設定資料庫建表策略 --> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans> 執行結果 :
(4)啟動流程 /** * 啟動流程 */ @Test public void startProcess(){ // 獲取流程引擎物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //啟動流程 ProcessInstance instanceByKey = processEngine.getRuntimeService().startProcessInstanceByKey("HelloWorldKey"); System.out.println("pid : " + instanceByKey.getId() + " , activitiId : " + instanceByKey.getActivityId()); } ( 5 ) 檢視個人任務 /** * 檢視個人任務 表 :act_ru_task */ @Test public void personalTask(){ //獲取流程引擎物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //檢視個人任務 TaskService taskService = processEngine.getTaskService(); // 指定任務Assignee 的值 List<Task> list = taskService.createTaskQuery().taskAssignee("shelly").list(); for (Task task : list) { System.out.println( "任務辦理人 : " + task.getAssignee()); System.out.println( "待辦任務id : " + task.getId()); System.out.println( "任務 : " + task.getName()); System.out.println( "任務建立時間 : " + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ").format(task.getCreateTime())); System.out.println( "任務優先順序 : " + task.getPriority()); System.out.println( "流程例項id : " + task.getProcessInstanceId()); System.out.println( "執行物件Id : " + task.getExecutionId()); System.out.println( "任務定義key : " + task.getTaskDefinitionKey()); System.out.println( "流程定義id : " + task.getProcessDefinitionId()); } } (6)完成待辦任務(追蹤資料表 act_ru_task ,可以觀察整個任務的執行流程) 表: act_hi_actinst 為任務執行的歷史記錄表 /** * 完成任務,根據待辦事物id */ @Test public void completeTask(){ // 獲取流程引擎物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 完成任務 processEngine.getTaskService().complete("2504"); //待辦任務id == task.getId() System.out.println("完成任務"); }

相關推薦

Activiti工作入門

(個人學習記錄,如有誤導請指正) 一 : 安裝Eclipse外掛 開啟:Help ----> Install New Software ----> Add 輸入 Name: Activiti Designer  Location: http://activiti

Activiti 工作入門

基礎知識 工作流: 可以認為是一系列的規範流程,讓業務按照擬定的規則處理和運轉,本質上是一系列邏輯相關的活動的集合。例如某校學生申請獎學金這一業務,必須按照“學生申請→輔導員審批→學生處審批→教務處審批”這一流程運轉,也就是“學生申請”、“輔導員審批

Activiti工作學習筆記入門(四)——流程例項的構建、判斷狀態、歷史流程例項查詢和歷史活動查詢

第一節:構建學生請假審批流程 第二節:執行物件概念 第三節:判斷流程例項狀態 第四節:歷史流程例項查詢 第五節:歷史活動查詢 package com.java1234.activiti.flow; import java.util.List; import or

Activiti工作學習筆記入門(五)——流程變數

package com.java1234.activiti.variable; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; i

Activiti工作】6.Activiti入門程式HelloWorld演示流程的執行(下)

上一次我們在配置好Activiti的開發環境之後,進行了以下開發: 1.繪製流程圖 2.編寫流程引擎載入類 3.通過流程引擎獲取RepositoryService,載入bpmn檔案進行部署。 我們在上篇中看到,當我們成功部署我們的流程物件之後,資料庫中儲存了 我們的一些流程

Activiti工作簡單入門

BPMN 2.0 BPMN最初由業務流程倡議組織(BPMI)定案,現在BPMI併入到OMG(Object Management Group)了,則由OMG建立規範和維護。 BPMN 2.0正式更名為(Business Process Model And Notation)業務流程符號和模型,也有人繼

activiti工作系列-activitirume

例如 參與者 span fin 動態 完全 def ini gin 1、什麽是工作流? 工作流就是讓多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程,工作流由實體(Entity)、參與者(Participant)、流程定義(Flow Definition)、工作

Activiti工作引擎數據庫表結構

activit let repr 通過 運行時 工作流 用例 pro ext Activiti工作流引擎數據庫表結構 一、數據庫表的命名   Acitiviti數據庫中表的命名都是以ACT_開頭的。第二部分是一個兩個字符用例表的標識。此用例大體與服務API是匹配的。 l

Java Activiti 工作引擎 springmvc SSM 流程審批 後臺框架源碼

Activiti6.0工作流模塊----------------------------------------------------------------------------------------------------------1.模型管理 :web在線流程設計器、預覽流程xml、導出x

activiti工作EL表達式出現亂碼導致comment亂碼

com 重啟 down true 情況 工作流 原因 表達式 AC EL表達式出現亂碼的原因有很多,我記錄一下自己的情況。 在response和頁面都已設置utf-8編碼時仍然出現亂碼。 我修改了tomcat conf目錄下的server.xml文件 在原始配置上添加了u

Java Activiti 工作引擎 流程審批 後臺框架源碼 springmvc SSM

物流查詢接口 主表 快速 font sql www. 物流 sock hit 博文來源:http://www.fhadmin.org/webnewsdetail1.html工作流模塊----------------------------------------------

工作3-activiti工作流程定義的CURD

activiti的流程定義API Explain:activiti對流程的增刪該查 (學習源自傳智播客itcast) 獲取引擎 ProcessEngine processEngine = ProcessEngine.getDefaultProcessEngine();

Activiti工作引擎學習總結

經過這三天對與Activiti的軟磨硬泡,也算是小有所獲。 想要學會工作流引擎其實很簡單,搞清楚processengine (Activiti引擎),並且理解其中幾大服務介面: 服務:    reposit

Activiti工作引擎學習及流程設計器的安裝(Eclipse外掛)

工作流簡介     我們先來描述一個在工作中經常用到的一個流程:請假     員工張三請假一天 主管王五批准     員工李四請假一天 主管王五不批准  &nbs

activiti工作,資料庫表解析。

-- 釋出的流程資訊 存有id和名稱。   該id分別在“部署的流程” 和“通用資料” 中記錄 以該表為紐帶,關聯 “部署的流程act_re_procdef” 與“部署流程的配置資訊(該配置資訊記錄在‘通用資料’act_ge_bytearray表中)” select *

IDEA建立Activiti工作開發第一篇(Maven專案)

首先建立一個新的Maven專案,建立完成後我們要安裝Activiti的外掛,首先開啟FIle的setting功能,搜尋Plugins: 輸入actiBPM,然後點選搜尋: 如圖點選安裝,它就會下載安裝 安裝好後點擊應用: 然後重啟IDEA,點選File檔案中的

帶你瞭解什麼是Activiti工作Activiti工作資料庫表詳細介紹(23張表)

帶你五分鐘瞭解工作流 什麼是工作流 說到工作流,一圖勝萬言。 工作流 Georgakopoulos給出的工作流定義是:工作流是將一組任務組織起來以完成某個經營過程:定義了任務的觸發順序和觸發條件,每個任務可以由一個或多個軟體系統完成,也可以由一個或一組人完成,還可以由一個或多個

Activiti工作的環境配置

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Activiti工作demo

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Activiti工作的使用(Idea)(感覺文章沒啥用)

原文地址:https://www.cnblogs.com/kanyun/p/8079501.html 首先安裝cativiti外掛,安裝成功後重啟IDEA 然後在資料夾右鍵選擇 然後就可以畫圖了,但是畫圖之後,沒有連線圖示怎麼辦呢 把滑鼠放在開頭的那個圖示上,此時游標的形