天天看點

activiti小程式

1.建表

/*
    * 生成activiti所需的25張表
    */
    @Test
    public void testCreateTable(){
        ProcessEngineConfiguration pec = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
        pec.setJdbcDriver("com.mysql.jdbc.Driver");
        pec.setJdbcUrl("jdbc:mysql://localhost:3306/activitiTest?useUnicode=true&characterEncoding=utf8&serverTimeZone=GMT%2b8");
        pec.setJdbcUsername("root");
        pec.setJdbcPassword("111111");
        /*
         * 配置模式true 自動建立和更新表
         */
        pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);

        ProcessEngine pe = pec.buildProcessEngine();

    }
    /*
     * 使用配置檔案生成activiti所需的25張表
     */
    @Test
    public void testCfgCreateTable(){
        ProcessEngineConfiguration pec = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        ProcessEngine pe = pec.buildProcessEngine();
    }
           

其中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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activitiTest?useUnicode=true"/>
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUsername" value="root"/>
        <property name="jdbcPassword" value="111111"/>
     </bean>
</beans>
           

2.已有bpmn,流程啟動

package com.tongyao.activiti.flow;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.jupiter.api.Test;

import java.util.List;

public class HelloWorldProcess {
    /*
     *擷取預設流程引擎執行個體,會自動調用activiti.cfg.xml
    */
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    /*部署*/
    @Test
    public void deploy(){
        Deployment deployment = processEngine.getRepositoryService()//擷取部署相關service
        .createDeployment()//建立部署
        .addClasspathResource("diagrams/HelloWorld.bpmn")//加載資源檔案
        .deploy();//部署

        System.out.println("流程部署id="+deployment.getId());
        System.out.println("流程部署name="+deployment.getName());
    }

    /*啟動流程執行個體*/
    @Test
    public void start(){
       ProcessInstance pi = processEngine.getRuntimeService()//擷取運作service
       .startProcessInstanceByKey("myFirstProcess");//流程定義表procedef的key值

        System.out.println("流程執行個體ID:"+pi.getId());
        System.out.println("流程定義ID:"+pi.getProcessDefinitionId());
    }

    /*檢視任務*/
    @Test
    public void findTask(){
        List<Task> taskList = processEngine.getTaskService()//擷取任務service
        .createTaskQuery()//建立任務查詢
        .taskAssignee("peimx")//指定某人
        .list();

        for(Task task:taskList){
            System.out.println("任務ID:"+task.getId());
            System.out.println("任務Name:"+task.getName());
            System.out.println("任務建立時間:"+task.getCreateTime());
            System.out.println("任務委派人:"+task.getAssignee());
            System.out.println("流程執行個體ID:"+task.getProcessInstanceId());
        }

    }

    /*完成任務*/
    @Test
    public void completeTask(){
        processEngine.getTaskService()//擷取任務service
        .complete("2504");
    }
}
           

繼續閱讀