11.activiti工作流-开始活动节点

流程图

这里写图片描述

部署流程定义+启动流程实例+查询流程实例+查询历史流程实例

package i_start;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

public class StartTest {
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    /** 部署流程定义(从inputStream) */
    @Test
    public void deploymentProcessDefinition_inputStream() {
        InputStream inputStreamBpmn = this.getClass().getResourceAsStream(
                "start.bpmn");
        InputStream inputStreamPng = this.getClass().getResourceAsStream(
                "start.png");
        Deployment deployment = processEngine.getRepositoryService()// 与流程定义和部署对象相关的Service
                .createDeployment()// 创建一个部署对象
                .name("开始活动")// 添加部署的名称
                .addInputStream("start.bpmn", inputStreamBpmn)//
                .addInputStream("start.png", inputStreamPng)//
                .deploy();// 完成部署
        System.out.println("部署ID:" + deployment.getId());//
        System.out.println("部署名称:" + deployment.getName());//
    }

    /** 启动流程实例 */
    @Test
    public void startProcessInstance() {
        // 流程定义的key
        String processDefinitionKey = "start";
        ProcessInstance pi = processEngine.getRuntimeService()// 与正在执行的流程实例和执行对象相关的Service
                .startProcessInstanceByKey(processDefinitionKey);// 使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
        System.out.println("流程实例ID:" + pi.getId());// 流程实例ID 101
        System.out.println("流程定义ID:" + pi.getProcessDefinitionId());// 流程定义ID
                                                                    // helloworld:1:4
        /** 判断流程是否结束,查询正在执行的执行对象表 */
        ProcessInstance rpi=processEngine.getRuntimeService().createProcessInstanceQuery()//
                .processDefinitionId(pi.getId())//
                .singleResult();

        //说明流程实例结束了
        if(rpi==null){
            /**查询历史,获取流程的相关信息*/
            HistoricProcessInstance hpi=processEngine.getHistoryService()//
                    .createHistoricProcessInstanceQuery()//
                    .processInstanceId(pi.getId())//使用流程实例id查询
                    .singleResult();
            System.out.println(hpi.getId()+"    "+hpi.getStartTime()+"   "+hpi.getEndTime()+"   "+hpi.getDurationInMillis());


        }
    }

}

总结
1):结束节点没有出口
2):其他节点有一个或多个出口。
如果有一个出口,则代表是一个单线流程;
如果有多个出口,则代表是开启并发流程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值