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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【青铜打铁篇】Activiti 工作流从入门到入土?

發(fā)布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【青铜打铁篇】Activiti 工作流从入门到入土? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上方“好好學java”,選擇“置頂”公眾號

重磅資源、干貨,第一時間送達

?重磅推薦?

① 純福利 | 公眾號資源大匯總,一年才一次!

② 重磅!!2018年Java全套入門到進階學習視頻及項目實戰(zhàn)

③?2018年java架構(gòu)師學習視頻教程資源

④ 源碼系列!!spring源碼深度解析

文章源碼托管:https://github.com/OUYANGSIHAI/Activiti-learninig
歡迎 star !!!

本文由自己原創(chuàng)的多篇博客組成,不足之處,還請多多指正。

一、activiti介紹

Activiti5是由Alfresco軟件在2010年5月17日發(fā)布的業(yè)務(wù)流程管理(BPM)框架,它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個開源的、靈活的、易擴展的可執(zhí)行流程語言框架。Activiti基于Apache許可的開源BPM平臺,創(chuàng)始人Tom Baeyens是JBoss jBPM的項目架構(gòu)師,它特色是提供了eclipse插件,開發(fā)人員可以通過插件直接繪畫出業(yè)務(wù)流程圖。

  • 官網(wǎng):

    http://www.activiti.org/

  • 下載:

    http://www.activiti.org/download.html

目前,Activiti5中的5.22版本是用的最多的一個版本,本次教程也是使用這個版本進行講解,最新版本到了7.0版本。

在開始教程之前,我們需要先明確下面的一些概念和知識,可以幫助我們更好的理解工作流的開發(fā)。

二、工作流引擎

ProcessEngine對象,這是Activiti工作的核心。負責生成流程運行時的各種實例及數(shù)據(jù)、監(jiān)控和管理流程的運行。

用百度更為通俗的話來說就是:就是一輛汽車的發(fā)動機,就好比一輛汽車,外表做得再漂亮,如果發(fā)動機有問題就只是一個擺設(shè)。應(yīng)用系統(tǒng)的彈性就好比引擎轉(zhuǎn)速方面的性能,加速到100 公里需要1 個小時(業(yè)務(wù)流程發(fā)生變動需要進行半年的程序修改)還能叫好車嗎?引擎動不動就熄火(程序因為邏輯的問題陷入死循環(huán))的車還敢開嗎?

三、BPMN

在Activiti工作流中用到了一個BPMN的文件,主要是用來描述業(yè)務(wù)流程的基本的符號,利用各個組件能夠組成一個業(yè)務(wù)流程圖,整個業(yè)務(wù)也是根據(jù)這個圖來走的,其實用xml格式打開,就是一個xml文件。

下面就是bpmn組件的示意圖

圖片.png

四、數(shù)據(jù)庫

在我們進行業(yè)務(wù)流程開發(fā)的時候,是會產(chǎn)生很多的數(shù)據(jù)的,那么這些數(shù)據(jù)都是放在哪里呢?

是的,其實就是存放在數(shù)據(jù)庫的。

在Activiti工作流的后臺是有數(shù)據(jù)庫的支持的,所有的表都以ACT_開頭,利用這些數(shù)據(jù)庫的表,就能夠把整個業(yè)務(wù)流程的數(shù)據(jù)保存下來,然后利用這些數(shù)據(jù)進行不同的業(yè)務(wù)的開發(fā)。

數(shù)據(jù)庫表示意圖

圖片.png

下面對這些表做一些基本的解釋,這些可以先不看,等看完后面的教程后再回過頭來看,你會發(fā)現(xiàn)其實很簡單的。

  • 資源庫流程規(guī)則表

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

  • 運行時數(shù)據(jù)庫表

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

  • 歷史數(shù)據(jù)庫表

1)act_hi_actinst ? ? ? ? 歷史節(jié)點表
2)act_hi_attachment ? ? ? ?歷史附件表
3)act_hi_comment ? ? ? ?歷史意見表
4)act_hi_identitylink ? ? ? ?歷史流程人員表
5)act_hi_detail ? ? ? ? ? ?歷史詳情表,提供歷史變量的查詢
6)act_hi_procinst ? ? ? ?歷史流程實例表
7)act_hi_taskinst ? ? ? ?歷史任務(wù)實例表
8)act_hi_varinst ? ? ? ? ? ?歷史變量表

  • 組織機構(gòu)表

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

這些表用的很少,因為我們一般會自己做一個權(quán)限管理,所以不會用activiti自身所帶的表。

  • 通用數(shù)據(jù)表

1)act_ge_bytearray ? ? ? ?二進制數(shù)據(jù)表
2)act_ge_property ? ? ? ? ? ?屬性數(shù)據(jù)表存儲整個流程引擎級別的數(shù)據(jù),初始化表結(jié)構(gòu)時,會默認插入三條記錄。

這兩張表的數(shù)據(jù)是不能夠隨意刪除的,刪除可能會出問題。

五、總結(jié)

工作流的概念就先介紹這么多了,更多的去官網(wǎng)查看,下一節(jié)將用一個入門的實例來對工作流進行講解。

一、前言

在上一節(jié)中我們對activiti進行了基本的介紹activiti進行了基本的介紹,同時介紹了基本的概念。

這一節(jié),我將用一個入門程序,介紹如何使用activiti。

二、環(huán)境準備

2.1、編譯器選擇

這里我們使用Idea進行工作流開發(fā),雖然Idea對于工作流的友好度不是很好,因為會有一些小的bug,但是,Idea對于Java的開發(fā)還是非常的好的。

在用Idea開發(fā)之前,我們需要在idea中安裝bpmn開發(fā)的插件。方法如下

打開設(shè)置

圖片.png

選擇plugins

圖片.png

搜索actiBPM

圖片.png

重啟idea,新建文件

如果能夠找到下面的創(chuàng)建方法,就代表成功了。

圖片.png

新建后出現(xiàn)下面的編輯頁面

圖片.png

到現(xiàn)在,bpmn編輯插件就準備好了。

2.2、其他環(huán)境準備

  • JDK:1.8

  • 數(shù)據(jù)庫:mysql5.7

  • activiti jar包:使用maven依賴

三、入門程序

3.1、新建maven項目

新建的maven項目目錄如下

圖片.png

3.2、添加pom依賴

這里需要的pom依賴有以下幾個:junit、druid、mysql、lombok(日志)、activiti

<?xml?version="1.0"?encoding="UTF-8"?><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.0</modelVersion><groupId>com.sihai</groupId><artifactId>acitvitiDemo</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--?druid?--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency><!--?mysql?--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!--?lombok?--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.12</version></dependency><!--?logback?--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.8</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.8</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.22</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>5.22.0</version></dependency></dependencies><build><pluginManagement><!--?lock?down?plugins?versions?to?avoid?using?Maven?defaults?(may?be?moved?to?parent?pom)?--><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></pluginManagement></build> </project>

3.3、日志配置文件

<?xml?version="1.0"?encoding="UTF-8"?> <configuration?scan="true"?scanPeriod="60?seconds"><appender?name="STDOUT"?class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd?HH:mm:ss.SSS}?[%thread]?%-5level?%logger?-?%msg%n</pattern></encoder></appender><!--<appender?name="permission"?class="ch.qos.logback.core.rolling.RollingFileAppender">--><!--<file>${catalina.home}/logs/permission.log</file>--><!--<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--><!--<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>--><!--</rollingPolicy>--><!--<layout?class="ch.qos.logback.classic.PatternLayout">--><!--<pattern>%d{yyyy-MM-dd?HH:mm:ss.SSS}?[%thread]?%-5level?%logger?-?%msg%n</pattern>--><!--</layout>--><!--</appender>--><!----><!--<logger?name="xxx"?level="INFO">--><!--<appender-ref?ref="permission"/>--><!--</logger>--><!--?TRACE?<?DEBUG?<?INFO?<?WARN?<?ERROR?--><root?level="INFO"><appender-ref?ref="STDOUT"/></root></configuration>

3.4、測試實例

下面是添加一個junit測試實例,通過測試生成activiti底層需要的數(shù)據(jù)庫表,總共有25張,如果數(shù)據(jù)庫生成了25張表結(jié)構(gòu),則說明成功!

/***?@Author?ouyangsihai*?@Description?生成activiti底層數(shù)據(jù)庫表結(jié)構(gòu)*?@Date?16:24?2019/1/26*?@Param*?@return**/ public?class?Activiti_01?{/***?@return?void*?@Author?ouyangsihai*?@Description?//生成數(shù)據(jù)庫表結(jié)構(gòu)*?@Date?20:57?2018/12/5*?@Param?[]**/@Testpublic?void?test_createDatabase()?{//?創(chuàng)建流程引擎配置信息對象ProcessEngineConfiguration?pec?=?ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();//?設(shè)置數(shù)據(jù)庫的類型pec.setDatabaseType("mysql");//?設(shè)置創(chuàng)建數(shù)據(jù)庫的方式 //????????ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE(true);//如果沒有數(shù)據(jù)庫表就會創(chuàng)建數(shù)據(jù)庫表,有的話就修改表結(jié)構(gòu).//?ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE(false):?不會創(chuàng)建數(shù)據(jù)庫表//?ProcessEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP(create-drop):?先創(chuàng)建、再刪除.pec.setDatabaseSchemaUpdate("true");//?設(shè)置數(shù)據(jù)庫驅(qū)動pec.setJdbcDriver("com.mysql.jdbc.Driver");//?設(shè)置jdbcURLpec.setJdbcUrl("jdbc:mysql://localhost:3306/activitiTest?useUnicode=true&characterEncoding=UTF-8");//?設(shè)置用戶名pec.setJdbcUsername("root");//?設(shè)置密碼pec.setJdbcPassword("root");pec.setJdbcPassword("XXXX");//?構(gòu)建流程引擎對象ProcessEngine?pe?=?pec.buildProcessEngine();?//?調(diào)用訪方法才會創(chuàng)建數(shù)據(jù)表//?調(diào)用close方法時,才會刪除pe.close();} }

3.5、運行測試實例

運行上面的測試實例后,將會生成下面的25張表結(jié)構(gòu)。

日志信息

圖片.png

表結(jié)構(gòu)

圖片.png

四、總結(jié)

通過上面是入門實例,就將activiti的環(huán)境準備好了!

一、前言

在上一節(jié)中,通過一個入門程序,把activiti的環(huán)境準備好了,這一節(jié),將整合spring,并且部署一個最簡單的bpmn流程圖。

二、環(huán)境準備

這一節(jié)的內(nèi)容在上一節(jié)入門程序的基礎(chǔ)上進行環(huán)境配置,如果需要完整的配置文件,請到上一節(jié)查看。

2.1 spring配置

首先,需要添加spring的配置文件

<?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"?xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd?????http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx.xsd"><bean?id="propertyConfigurer"?class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property?name="ignoreUnresolvablePlaceholders"?value="true"/><property?name="locations"><list><value>classpath:settings.properties</value></list></property></bean><bean?id="dataSource"?class="com.alibaba.druid.pool.DruidDataSource"?init-method="init"?destroy-method="close"><property?name="driverClassName"?value="${db.driverClassName}"/><property?name="url"?value="${db.url}"/><property?name="username"?value="${db.username}"/><property?name="password"?value="${db.password}"/><property?name="initialSize"?value="3"/><property?name="minIdle"?value="3"/><property?name="maxActive"?value="20"/><property?name="maxWait"?value="60000"/><property?name="filters"?value="stat,wall"/></bean><!--?tx?--><bean?id="transactionManager"?class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property?name="dataSource"?ref="dataSource"/></bean><tx:annotation-driven?transaction-manager="transactionManager"/><!--?druid?--><bean?id="stat-filter"?class="com.alibaba.druid.filter.stat.StatFilter"><property?name="slowSqlMillis"?value="3000"/><property?name="logSlowSql"?value="true"/><property?name="mergeSql"?value="true"/></bean><bean?id="wall-filter"?class="com.alibaba.druid.wall.WallFilter"><property?name="dbType"?value="mysql"/></bean></beans>

2.2 數(shù)據(jù)庫等環(huán)境配置文件

然后,添加數(shù)據(jù)庫等環(huán)境配置文件

db.driverClassName=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost:3306/activitiTest?useUnicode=true&characterEncoding=UTF-8 db.username=root db.password=root

到目前為止,就把spring的配置環(huán)境搭建好了,接下來,我們需要加入activiti的整合環(huán)境的配置了。

2.3 spring整合activiti

這一步,我們加入spring整合activiti環(huán)境的配置

<?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd"><!--?配置流程引擎配置信息對象?--><bean?id="processEngineConfiguration"?class="org.activiti.spring.SpringProcessEngineConfiguration"p:dataSource-ref="dataSource"p:transactionManager-ref="transactionManager"p:databaseSchemaUpdate="true"p:jobExecutorActivate="false"p:databaseType="mysql"p:activityFontName="宋體"p:labelFontName="黑體"p:xmlEncoding="utf-8"/><!--?配置流程引擎?--><bean?id="processEngine"?class="org.activiti.spring.ProcessEngineFactoryBean"p:processEngineConfiguration-ref="processEngineConfiguration"/><!--?配置六個服務(wù)Bean?--><bean?id="repositoryService"?factory-bean="processEngine"factory-method="getRepositoryService"/><bean?id="runtimeService"?factory-bean="processEngine"factory-method="getRuntimeService"/><bean?id="taskService"?factory-bean="processEngine"factory-method="getTaskService"/><bean?id="historyService"?factory-bean="processEngine"factory-method="getHistoryService"/><bean?id="formService"?factory-bean="processEngine"factory-method="getFormService"/><bean?id="identityService"?factory-bean="processEngine"factory-method="getIdentityService"/></beans>

到2.3這一步,spring整合activiti的環(huán)境就配置好了,接下來,我們創(chuàng)建一個簡單的bpmn文件,然后,做一個簡單的測試,部署bpmn文件。

三、部署實例

3.1 繪制

打開idea的bpmn編輯器,繪制一個簡單的bpmn文件,如下

圖片.png

注意: 用idea編輯的時候,是不會和eclipse一樣會自動的生成png文件的,這里有兩種方式解決。

方式一

用eclipse打開編輯,會自動生成,這個簡單,這里就不多說了。

方式二

將bpmn后綴改為xml

圖片.png

右鍵xml文件,找到下面的按鍵

圖片.png

出現(xiàn)下面的界面

圖片.png

右鍵,選擇export to file

圖片.png

生成如下

圖片.png

最后將xml后綴改為bpmn

3.2 測試

通過上面的介紹,繪制了bpmn文件和png圖片,下面寫一個測試實例,部署流程。

/***?@Author?歐陽思海*?@Description?部署*?@Date?16:24?2019/1/26*?@Param*?@return**/ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations?=?{"classpath:applicationContext-core.xml","classpath:applicationContext-activiti.xml" }) @Slf4j public?class?test02_spring?{@Autowiredprivate?ProcessEngine?processEngine;@Autowiredprivate?TaskService?taskService;@Autowiredprivate?RuntimeService?runtimeService;@Autowiredprivate?HistoryService?historyService;/***?@return?void*?@Author?歐陽思海*?@Description?部署流程實例*?@Date?16:17?2018/12/19*?@Param?[]**/@Testpublic?void?testTask()?throws?Exception?{//?1?發(fā)布流程InputStream?inputStreamBpmn?=?this.getClass().getResourceAsStream("/bpmn/test_01.xml");InputStream?inputStreamPng?=?this.getClass().getResourceAsStream("/bpmn/test_01.png");processEngine.getRepositoryService().createDeployment().addInputStream("test_01.xml",?inputStreamBpmn).addInputStream("test_01.png",?inputStreamPng).deploy();ProcessInstance?pi?=?processEngine.getRuntimeService()//.startProcessInstanceByKey("test_01");System.out.println("pid:"?+?pi.getId());} }

注意上面的test_01是你的bpmn文件的id。

3.3 測試結(jié)果

圖片.png

四、總結(jié)

這一節(jié)通過整合spring,繪制簡單的bpmn文件,然后成功部署了bpmn文件。下一節(jié),將講解activit的API

你「在看」嗎?????

????點擊「閱讀原文」,更多精彩

總結(jié)

以上是生活随笔為你收集整理的【青铜打铁篇】Activiti 工作流从入门到入土?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 美女视频黄a视频全免费观看 | sm国产在线调教视频 | 日本女优中文字幕 | 免费在线播放视频 | 蜜乳av懂色av粉嫩av | 成人午夜大片 | 性折磨bdsm欧美激情另类 | 久久精品中文字幕 | 精品久久久久久久久久 | 搞黄视频在线观看 | 重口味av | 国产午夜精品在线观看 | 国产suv精品一区二区60 | 久久久久无码精品国产 | 俄罗斯破处 | 欧美一区二区在线免费观看 | 老熟妇高潮一区二区高清视频 | 免费观看日韩毛片 | 欧美a√ | 日本成人在线免费视频 | 国产做受麻豆动漫 | 操三八男人的天堂 | 亚洲欧美在线免费 | 成人性视频网站 | 国产美女永久免费无遮挡 | 超碰成人在线观看 | 性猛交xxxx乱大交3 | av2018| 成人午夜精品福利免费 | 国产美女作爱全过程免费视频 | 亚洲中午字幕 | 国内久久久 | 亚洲AV无码国产精品播放在线 | 免费观看国产精品视频 | 成人福利在线播放 | 都市激情 亚洲 | 国产乱淫av公| 中文字幕无线精品亚洲乱码一区 | 在线观看国产精品视频 | 欧美八区 | 亚洲一区二区三区四区电影 | 日韩免费小视频 | 正在播放adn156松下纱荣子 | 人人插人人射 | 欧美日本一本 | 狠狠干男人的天堂 | 视频一区二区三区在线观看 | 美女一区二区三区视频 | 精品乱码一区二区三四区视频 | 麻豆一区二区在线观看 | 日本在线一区二区三区 | 色综合国产 | 免费av在线播放网址 | 亚洲无限码 | 日韩欧美专区 | 国产日产精品一区二区三区 | a天堂中文网 | 国产农村妇女精品一区二区 | 久久国产亚洲 | 色就是色欧美 | 国产成人+综合亚洲+天堂 | 久久久久久久偷拍 | 欧美系列在线观看 | 国产精品扒开腿做爽爽 | av动漫免费看| 日韩av片在线播放 | 一区二区免费视频 | 日韩精品成人 | cao在线| 久久久久久国产精品三级玉女聊斋 | 日韩中文字幕在线免费观看 | 俄罗斯一级片 | 狠狠干2021 | 草草网址| 日本美女性生活视频 | 99re99热| 99热黄色| 亚洲成人久久久 | 爱露出| 日本h漫在线观看 | 97在线精品视频 | 中文字幕无码人妻少妇免费 | 永久国产 | 麻豆亚洲av熟女国产一区二 | 国产黄色一区 | 一个人在线免费观看www | 久久久久久亚洲中文字幕无码 | 善良的少妇伦理bd中字 | 91精品国产综合久久久久久久 | 一本色道久久综合亚洲精品按摩 | 在线一二三区 | 亚洲在线看 | 日本精品专区 | 影音先锋男人资源网站 | 欧美成人做爰大片免费看黄石 | 国内一级视频 | 污网站免费在线 | 美女少妇一区二区 | 探花视频在线观看 |