【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)。

為什么要用工作流引擎?

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

在spring boot中使用activiti api

spring boot的初始配置請參考:
http://www.itdecent.cn/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ù)可對應(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容