首页 > 代码库 > 工作流学习2----入门

工作流学习2----入门

引入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----入门