Activiti6.0整合SpringBoot2.0學(xué)習(xí)(一)

一、學(xué)習(xí)背景

近期因工作需要研究了一波Activiti工作流,流程中需要根據(jù)業(yè)務(wù)來(lái)推進(jìn)流程的流轉(zhuǎn)、多人處理任務(wù)、排他網(wǎng)關(guān)、定時(shí)邊界任務(wù)、撤回等功能。不多說(shuō),直接上正文。

二、從零開(kāi)始

新建springboot項(xiàng)目并創(chuàng)建activiti6的28張表,這里不闡述28張表每個(gè)的含義,主要有ACT_HI_(歷史信息表)、ACT_RU_(運(yùn)行時(shí)信息表)、ACT_ID_(身份信息類(lèi))、ACT_RE_(靜態(tài)資源類(lèi))。

配置文件:

@Configuration
public class ActivitiConfig {
    @Autowired
    private DataSource dataSource;
    @Autowired
    private ResourcePatternResolver resourceLoader;
    /**
    * 初始化配置,將創(chuàng)建28張表
    * @return
    */
    @Bean
    public StandaloneProcessEngineConfiguration processEngineConfiguration() {
        StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
        configuration.setDataSource(dataSource);
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setAsyncExecutorActivate(false);
        return configuration;
    }
    @Bean
    public ProcessEngine processEngine() {
        return processEngineConfiguration().buildProcessEngine();
    }
    @Bean
    public RepositoryService repositoryService() {
        return processEngine().getRepositoryService();
    }
    @Bean
    public RuntimeService runtimeService() {
        return processEngine().getRuntimeService();
    }
    @Bean
    public TaskService taskService() {
        return processEngine().getTaskService();
    }
}

上文代碼中將activiti常用的幾個(gè)service注入到spring容器中,方便在其他地方直接注入即可使用。

TestProcess.bpmn文件

User Task配置信息

三、ActivitiHelloWorld

寫(xiě)一個(gè)controller,實(shí)現(xiàn)部署流程、啟動(dòng)流程、完成任務(wù)節(jié)點(diǎn),具體代碼如下:

@RestController
@RequestMapping("/activiti")
public class ActivitiController {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@RequestMapping("helloWorld") 
    public void helloWorld() { 
        //根據(jù)bpmn文件部署流程 
        Deployment deploy = repositoryService.createDeployment()
        .addClasspathResource("TestProcess.bpmn")
        .deploy(); 
        //獲取流程定義 
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult(); 
        //啟動(dòng)流程定義,返回流程實(shí)例 
        ProcessInstance pi = runtimeService.startProcessInstanceById(processDefinition.getId()); 
        String processId = pi.getId(); 
        System.out.println("流程創(chuàng)建成功,當(dāng)前流程實(shí)例ID:"+processId); 
        Task task=taskService.createTaskQuery().processInstanceId(processId).singleResult(); 
        System.out.println("執(zhí)行前,任務(wù)名稱(chēng):"+task.getName()); 
        taskService.complete(task.getId()); 
        task = taskService.createTaskQuery().processInstanceId(processId).singleResult(); 
        System.out.println("task為null,任務(wù)執(zhí)行完畢:"+task); 
    }
}

運(yùn)行此程序,瀏覽器訪問(wèn) http://localhost:8080/activiti/helloWorld
可以看到如下信息:

到這里,一個(gè)activiti的demo已經(jīng)可以運(yùn)行,接下來(lái)將陸續(xù)更新。。。

github地址:https://github.com/KevinZc007/acitviti6.0.git

初次寫(xiě)文,如有不當(dāng),請(qǐng)各位大佬指正,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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