【activiti】spring boot with activiti

為了深入得學(xué)習(xí)activiti驼鞭,從頭開始,這次用spring boot作為項(xiàng)目框架尺碰,來一步一步搭建一個(gè)activiti流程管理程序挣棕。作文以記之。

什么是activiti亲桥?

Activiti is battle-tested Business Process Management (BPM).
Activiti是一個(gè)身經(jīng)百戰(zhàn)的業(yè)務(wù)流程管理引擎洛心。

不是某卓的活動(dòng)。

為什么要用工作流引擎题篷?

簡(jiǎn)單來說词身,就是為了統(tǒng)一管理流程業(yè)務(wù)。
想想看番枚,如果要設(shè)計(jì)一個(gè)流程的程序法严,通常需要在數(shù)據(jù)庫中存各種狀態(tài)值,比如一個(gè)訂單程序葫笼,要標(biāo)記訂單是未付款深啤、已付款、已出庫等等狀態(tài)路星,而這些各種各樣的狀態(tài)參雜在程序中溯街,邏輯自然就變得復(fù)雜了。
而將這些狀態(tài)對(duì)應(yīng)流程里的一個(gè)個(gè)步驟奥额,交由流程引擎去管理苫幢,這樣不僅簡(jiǎn)化了業(yè)務(wù)邏輯代碼访诱,而且垫挨,還有很強(qiáng)的擴(kuò)展性。我可以修改我的流程触菜,我可以添加一些步驟而不用改我的數(shù)據(jù)庫表結(jié)構(gòu)九榔,不用改我的業(yè)務(wù)邏輯。

在spring boot中使用activiti api

spring boot的初始配置請(qǐng)參考:
http://www.reibang.com/p/3ec727e987a8

依賴:

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>${activiti.version}</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>${activiti.version}</version>
        </dependency>

activiti相關(guān)配置:

/**
 * Created by liuruijie on 2017/2/20.
 * activiti工作流配置
 */
@Configuration
public class Cfg_Activiti extends Cfg_EnvProvider{

    //流程配置,與spring整合采用SpringProcessEngineConfiguration這個(gè)實(shí)現(xiàn)
    @Bean
    public ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager){
        SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
        processEngineConfiguration.setDataSource(dataSource);
        processEngineConfiguration.setDatabaseSchemaUpdate("true");
        processEngineConfiguration.setDatabaseType("mysql");

        processEngineConfiguration.setTransactionManager(transactionManager);

        return processEngineConfiguration;
    }

    //流程引擎哲泊,與spring整合使用factoryBean
    @Bean
    public ProcessEngineFactoryBean processEngine(ProcessEngineConfiguration processEngineConfiguration){
        ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
        processEngineFactoryBean.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);
        return processEngineFactoryBean;
    }

    //八大接口
    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine){
        return processEngine.getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine){
        return processEngine.getRuntimeService();
    }

    @Bean
    public TaskService taskService(ProcessEngine processEngine){
        return processEngine.getTaskService();
    }

    @Bean
    public HistoryService historyService(ProcessEngine processEngine){
        return processEngine.getHistoryService();
    }

    @Bean
    public FormService formService(ProcessEngine processEngine){
        return processEngine.getFormService();
    }

    @Bean
    public IdentityService identityService(ProcessEngine processEngine){
        return processEngine.getIdentityService();
    }

    @Bean
    public ManagementService managementService(ProcessEngine processEngine){
        return processEngine.getManagementService();
    }

    @Bean
    public DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine){
        return processEngine.getDynamicBpmnService();
    }

    //八大接口 end
}

配置主要由兩大部分:
一個(gè)是ProcessEngineConfiguration剩蟀,這個(gè)是activiti基礎(chǔ)參數(shù)的配置,如:數(shù)據(jù)源什么的切威。
還有一個(gè)是activiti的八個(gè)service接口育特,這是使用activiti的關(guān)鍵,每個(gè)接口都有不同的職責(zé)先朦。而這些接口需要通過ProcessEngine來獲取缰冤,activiti為了和spring整合提供了ProcessEngineFactroyBean,可通過它來獲取ProcessEngin喳魏。

RepositoryService:提供與流程定義相關(guān)的方法棉浸,可查詢模型(model)、流程定義(process definition)刺彩、流程部署(deployment)迷郑。
RuntimeService:提供流程執(zhí)行時(shí)相關(guān)的方法,可查詢流程實(shí)例(process insatnce)创倔、執(zhí)行實(shí)例(execution)嗡害,可開啟流程實(shí)例。
TaskService:提供任務(wù)相關(guān)的方法畦攘,可進(jìn)行查詢就漾、指派、完成任務(wù)等操作念搬。
HistoriyService:提供歷史記錄相關(guān)的方法抑堡,可查詢歷史任務(wù)(historic task instance),歷史流程實(shí)例(historic process instance)等朗徊。
FormService:提供表單相關(guān)的方法首妖,一個(gè)用戶任務(wù)可對(duì)應(yīng)一個(gè)formkey,可通過formkey查找表單爷恳,提供表單的獲取等方法有缆。
IdentityService:提供用戶權(quán)限認(rèn)證相關(guān)的方法,可查詢用戶温亲、組等信息棚壁,可設(shè)置當(dāng)前用戶。
ManagementService:與引擎配置相關(guān)栈虚,可獲取引擎數(shù)據(jù)庫信息袖外,并且可以執(zhí)行自定義的命令(command)。
DynamicBpmnService:提供動(dòng)態(tài)獲取魂务,以及動(dòng)態(tài)修改流程定義的方法曼验。

配置好了這些泌射,activiti的基本配置就完成了,現(xiàn)在就可以在程序中通過注入來得到各種service的實(shí)例鬓照。

一個(gè)流程控制中心程序熔酷,基本上就是這幾個(gè)service配合使用來實(shí)現(xiàn)的,所以搭好基礎(chǔ)環(huán)境后豺裆,就可以開始編寫自己的流程控制中心了拒秘。

最后分享一個(gè)大佬的主頁,學(xué)習(xí)activiti可以去看看臭猜。里面有demo程序翼抠。
http://www.kafeitu.me/activiti.html

activiti version 5.22.0
spring boot version 1.5.1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市获讳,隨后出現(xiàn)的幾起案子阴颖,更是在濱河造成了極大的恐慌,老刑警劉巖丐膝,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件量愧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帅矗,警方通過查閱死者的電腦和手機(jī)邮辽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門搂捧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昼窗,“玉大人对人,你說我怎么就攤上這事×菥悖” “怎么了紊馏?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蒲犬。 經(jīng)常有香客問我朱监,道長(zhǎng),這世上最難降的妖魔是什么原叮? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任赫编,我火速辦了婚禮,結(jié)果婚禮上奋隶,老公的妹妹穿的比我還像新娘擂送。我一直安慰自己,他們只是感情好唯欣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布嘹吨。 她就那樣靜靜地躺著,像睡著了一般黍聂。 火紅的嫁衣襯著肌膚如雪躺苦。 梳的紋絲不亂的頭發(fā)上身腻,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天产还,我揣著相機(jī)與錄音匹厘,去河邊找鬼。 笑死脐区,一個(gè)胖子當(dāng)著我的面吹牛愈诚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牛隅,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炕柔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了媒佣?” 一聲冷哼從身側(cè)響起匕累,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎默伍,沒想到半個(gè)月后欢嘿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡也糊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年炼蹦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狸剃。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掐隐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钞馁,到底是詐尸還是另有隱情虑省,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布僧凰,位于F島的核電站慷妙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏允悦。R本人自食惡果不足惜膝擂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隙弛。 院中可真熱鬧架馋,春花似錦、人聲如沸全闷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽总珠。三九已至屏鳍,卻和暖如春勘纯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钓瞭。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工驳遵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人山涡。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓堤结,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鸭丛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竞穷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容