【Activiti学习之四】Activiti API(三)

环境
  JDK 1.8
  MySQL 5.6
  Tomcat 7
  Eclipse-Luna
  activiti 6.0

一、启动流程

多种方式启动

package com.wjy.pro;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;

public class Start {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();
        // 运行时服务
        RuntimeService runService = engine.getRuntimeService();
        // 任务服务
        TaskService taskService = engine.getTaskService();
        // 部署
        Deployment dep = rs.createDeployment().addClasspathResource("start.bpmn").deploy();
        ProcessDefinition pd = rs.createProcessDefinitionQuery().deploymentId(dep.getId()).singleResult();
        // 启动流程
        ProcessInstance pi = runService.startProcessInstanceById(pd.getId(), "abc");
        //根据流程文件中定义process节点的id来启动
        //runService.startProcessInstanceByKey("");
        //根据消息名称启动流程  在流程定义的开始事件中加入消息定义 <messageEventDefinition/>
        //runService.startProcessInstanceByMessage("");
       
        System.out.println(pi.getId());
    }

}

二、流程操作与数据查询

1、流程触发-ReceiveTask

package com.wjy.handle;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;

public class ReceiveTaskTest {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();
        // 运行时服务
        RuntimeService runService = engine.getRuntimeService();
        // 任务服务
        TaskService taskService = engine.getTaskService();
        // 部署ReceiveTask类型任务
        Deployment dep = rs.createDeployment().addClasspathResource("receiveTask.bpmn").deploy();
        ProcessDefinition pd = rs.createProcessDefinitionQuery().deploymentId(dep.getId()).singleResult();
        // 启动流程
        ProcessInstance pi = runService.startProcessInstanceById(pd.getId());
        // 查当前的子执行流(只有一个)
        Execution exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();

        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());//37505, 当前节点:receivetask1
        
        // 让它往前走  同complete
        runService.trigger(exe.getId());
        
        exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();
        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());//37505, 当前节点:usertask1
    }

}

2、触发信号事件

messaga

package com.wjy.handle;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;

public class MessageTest {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();
        // 运行时服务
        RuntimeService runService = engine.getRuntimeService();
        // 任务服务
        TaskService taskService = engine.getTaskService();
        // 部署
        Deployment dep = rs.createDeployment()
                .addClasspathResource("MessageEvent.bpmn").deploy();
        ProcessDefinition pd = rs.createProcessDefinitionQuery()
                .deploymentId(dep.getId())
                .singleResult();
        // 启动流程
        ProcessInstance pi = runService.startProcessInstanceById(pd.getId());
        // 查当前的子执行流(只有一个)
        Execution exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();

        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());
        
        // 等待外面发送的消息才会让它往前走
//        <intermediateCatchEvent id="messageintermediatecatchevent1" name="MessageCatchEvent">
//            <messageEventDefinition messageRef="testMsg"></messageEventDefinition>
//        </intermediateCatchEvent>
        runService.messageEventReceived("testMsg", exe.getId());
        
        exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();
        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());
    }

}

signal

package com.wjy.handle;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;

public class SingleEventTest {

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        // 存储服务
        RepositoryService rs = engine.getRepositoryService();
        // 运行时服务
        RuntimeService runService = engine.getRuntimeService();
        // 任务服务
        TaskService taskService = engine.getTaskService();
        // 部署
        Deployment dep = rs.createDeployment()
                .addClasspathResource("SingleEvent.bpmn").deploy();
        ProcessDefinition pd = rs.createProcessDefinitionQuery()
                .deploymentId(dep.getId()).singleResult();
        // 启动流程
        ProcessInstance pi = runService.startProcessInstanceById(pd.getId());
        // 查当前的子执行流(只有一个) createExecutionQuery
        Execution exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();

        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());
        //等待外面传送定义的信号才会执行
//        <intermediateCatchEvent id="signalintermediatecatchevent1" name="SignalCatchEvent">
//            <signalEventDefinition signalRef="testSignal"></signalEventDefinition>
//        </intermediateCatchEvent>
        runService.signalEventReceived("testSignal");
        
        //流程查询createExecutionQuery
        exe = runService.createExecutionQuery()
                .processInstanceId(pi.getId())
                .onlyChildExecutions()
                .singleResult();

        System.out.println(pi.getId() + ", 当前节点:" + exe.getActivityId());
    }

}

三、工作产生与管理

猜你喜欢

转载自www.cnblogs.com/cac2020/p/11506810.html