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

来源:互联网 发布:怎么查手机网络制式 编辑:程序博客网 时间:2024/05/16 04:51

流程图

这里写图片描述

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

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 0
原创粉丝点击