1. 程式人生 > >工作流學習2----入門

工作流學習2----入門

XML drive pos 流程引擎 service() created pre tails 流程

引入jar包

技術分享

  創建activiti表

  第一種方式:使用代碼來創建activiti工作流的表

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.junit.Test;

public class TestActiviti {
    
    @Test
    public
void run() { // 1.創建流程引擎配置 ProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration(); // 2設置配置對象連接數據庫 configuration.setJdbcDriver("com.mysql.jdbc.Driver"); configuration.setJdbcUrl("jdbc:mysql:///db_activiti"); configuration.setJdbcUsername(
"root"); configuration.setJdbcPassword("root"); // 3.設置數據生成策略 : 設置在我們程序運行的時候創建db_activiti數據庫表 configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); // 4.獲取流程引擎對象 ProcessEngine processEngine = configuration.buildProcessEngine();
//打印測試 System.out.println(processEngine); } }

技術分享

  第二種方式:使用配置文件創建activiti工作流表

  在類路徑下創建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"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql:///db_activiti" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="root" />
        <property name="databaseSchemaUpdate" value="true" />
    </bean>
</beans>

然後通過代碼來加載配置文件中的內容

public class Demo {
    
    @Test
    public void run() {
        
        /**
         * 第一種:
         * 直接指定文件的位置和名稱,但是很少使用
         */
        /*// 1.創建流程引擎的配置對象:通過加載classpath下的配置文件
        ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                .createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        // 2.獲取流程引擎
        ProcessEngine processEngine2 = configuration.buildProcessEngine();
        System.out.println(processEngine2);*/
        
        /**
         * 第二種:
         *     需要註意的幾個點:( 如果使用這種方法獲取流程引擎)
         *     1. 首先規定工作流的配置文件必須放在classpath的根路徑下
         *     2.配置文件的名稱必須叫做activiti.cfg.xml
         *     這種獲取在實戰開發中比較常用
         */
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        System.out.println(processEngine);
    }
}

入門程序:

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.Test;

public class QuickDemo {
    
    // 1.獲取流程引擎,作為成員變量
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    /**
     * 流程定義:ProcessDefinition
     * 預定義的規則被稱為流程定義
     * 
     */
    @Test
    public void run() {
        // 1.獲取倉庫服務:只要跟流程定義或者部署對象有關的都是用倉庫服務,並加載資源文件,獲取部署對象
        Deployment deploy = processEngine.getRepositoryService().createDeployment()
            .name("HelloWorldDeploy")
            .addClasspathResource("diagrams/HelloWorld.bpmn")
            .addClasspathResource("diagrams/HelloWorld.png")
            .deploy();
        
        // 2.查詢信息
        System.out.println(deploy.getId());
        System.out.println(deploy.getName());
        System.out.println(deploy.getDeploymentTime());
    }
    
    /**
     * 啟動流程服務
     * 運行服務
     */
    @Test
    public void startProcessInstance() {
        
        // 1.流程定義的key
        String processDefinitionKey = "HelloWorldKey";
        // 2.啟動流程實例,獲取到流程實例對象
        ProcessInstance processInstance = processEngine.getRuntimeService()
            .startProcessInstanceByKey(processDefinitionKey);
        // 3.打印流程實例數據
        System.out.println("流程實例id:"+processInstance.getId());
        System.out.println("流程部署id:"+processInstance.getDeploymentId());
        System.out.println("流程定義id:"+processInstance.getProcessDefinitionId());
    }
    
    /**
     * 查看正在執行任務實例
     */
    @Test
    public void queryUserTask() {
        String asssignee = "巴莫";
        Task task = processEngine.getTaskService().createTaskQuery()
            .taskAssignee(asssignee)
            .singleResult();
        System.out.println("TaskId:"+task.getId());
        System.out.println("流程實例ID:"+task.getProcessInstanceId());
    }
    
    /**
     * 辦理任務
     */
    @Test
    public void completeTask() {
        String taskId = "7504";
        processEngine.getTaskService().complete(taskId);
        System.out.println("辦理成功!!!");
    }
}

  技術分享

  有一篇別人講解的特別好,值得我們學習;

    http://blog.csdn.net/zwk626542417/article/details/46594505

  

工作流學習2----入門