• Activiti学习记录(四)


    1 连线

    注意:如果将流程图放置在和java类相同的路径,需要配置

    1.1 部署流程定义+启动流程实例

    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        /**
         * 部署流程定义
         */
        @Test
        public void deployProcessDefinition() {
            InputStream inputStream = this.getClass().getResourceAsStream("sequenceFlow.bpmn");
            InputStream inputStream2 = this.getClass().getResourceAsStream("sequenceFlow.png");
            
            Deployment deploy = processEngine.getRepositoryService().createDeployment()
                         .name("连线")
                         .addInputStream("sequenceFlow.bpmn", inputStream)
                         .addInputStream("sequenceFlow.png", inputStream2)
                         .deploy();
            System.out.println("部署ID:"+deploy.getId());
            System.out.println("部署名称:"+deploy.getName());
            
        }
        /**
         * 启动实例
         */
        @Test
        public void startProcessInstance() {
            String processDefinitionKey = "sequenceFlow";
            ProcessInstance startProcessInstanceByKey = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
            System.out.println("流程实例ID:"+startProcessInstanceByKey.getId());
            System.out.println("流程定义ID:"+startProcessInstanceByKey.getProcessDefinitionId());
        }

    1.2 查询我的个人任务

    /**
         * 查看个人任务
         */
        @Test
        public void findMyProcess() {
            String assignee = "赵六";
            List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee(assignee).list();
            if (list != null && list.size() > 0) {
                for (Task task : list) {
                    System.out.println("任务ID:"+task.getId());
                    System.out.println("任务名称:"+task.getName());
                    System.out.println("任务创建时间:"+task.getCreateTime());
                    System.out.println("任务办理人:"+task.getAssignee());
                    System.out.println("流程实例ID:"+task.getProcessInstanceId());
                    System.out.println("执行对象ID:"+task.getExecutionId());
                    System.out.println("流程定义ID:"+task.getProcessDefinitionId());
                }
            }
        }

    1.3 完成任务

    /**
         * 完成任务
         */
        @Test
        public void completMyProcess() {
            String taskId = "3203";
            Map<String, Object> variables = new HashMap<>();
            variables.put("message", "重要");
            processEngine.getTaskService().complete(taskId,variables);
            System.out.println("完成任务:"+taskId);
        }

    说明:

    1)使用流程变量,设置连线需要的流程变量的名称message,并设置流程变量的值

    对应:

     

    流程会按照指定的连线完成任务。

    2 总结

    1、一个活动中可以指定一个或多个SequenceFlowStart中有一个,End中没有)。

      * 开始活动中有一个SequenceFlow

      * 结束活动中没有SequenceFlow

      * 其他活动中有1条或多条SequenceFlow

    2、如果只有一个,则可以不使用流程变量设置codition的名称;

    如果有多个,则需要使用流程变量设置codition的名称。message表示流程变量的名称,不重要表示流程变量的值,${}中间的内容要使用boolean类型的表达式,用来判断应该执行的连线。

  • 相关阅读:
    Exceptionless in Docker on Linux 搭建及部署疑难杂症
    Golang 基础语法介绍及对比(二)
    Go Windows 环境安装及配置(一)
    ElasticSearch搜索解析
    ElasticSearch文档及分布式文档存储
    ElasticSearch利用IK实现全文搜索
    ElasticSearch简要总览
    轻松驾驭统计学——数据分析必备技能
    【面试】数据分析常见问题
    【Echarts】
  • 原文地址:https://www.cnblogs.com/FanJava/p/9296064.html
Copyright © 2020-2023  润新知