zoukankan      html  css  js  c++  java
  • 工作流—activiti7个人任务

    1. URL表达式

      Activiti 使用UEL 表达式,UEL 是java EE6 规范的一部分,UEL(Unified Expression Language)即

      统一表达式语言,activiti 支持两个UEL 表达式:UEL-value 和UEL-method

      1.1 URL-value定义如下

        1.1.1 创建bpmn文件

         

         1.1.2 生成流程图

            

         1.1.3 部署流程      

    //流程部署
        @Test
        public void deployment(){
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取RepositoryService对象进行流程部署
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //进行部署,将对应的流程定义文件生成到数据库当中,作为记录进行保存
            Deployment deployment = repositoryService.createDeployment()
                    .addClasspathResource("holiday/holiday.bpmn")     //加载流程文件
                    .addClasspathResource("holiday/holiday.png")
                    .name("请假流程")       //设置流程名称
                    .key("holidayKey")
                    .deploy();              //部署
    
            //输出部署信息
            System.out.println("流程名称:"+deployment.getName());
            System.out.println("流程ID:"+deployment.getId());
            System.out.println("流程Key:"+deployment.getKey());
        }

        1.1.4 查看数据库

         

         1.1.5 启动一个流程实例    

    //启动一个流程实例
        @Test
        public void getInstance(){
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取Runtime
            RuntimeService runtimeService = processEngine.getRuntimeService();
            //定义一个map集合存放assignee值
            Map<String ,Object> map=new HashMap<>();
            map.put("assignee01","zhangsan");
            map.put("assignee02","lisi");
            map.put("assignee03","wangwu");
            map.put("assignee04","zhaoliu");
            //启动一个流程实例
            ProcessInstance holiday = runtimeService.startProcessInstanceByKey("holiday", map);
            System.out.println("流程实例name:"+holiday.getName());
    
    
        }

        1.1.6 将zhangsan代办任务处理掉 

    //处理代办任务
        @Test
        public void completeTask(){
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取一个TaskService对象
            TaskService taskService=processEngine.getTaskService();
            //任务处理
            taskService.complete("2509");
        }

        1.1.7 查看数据库

         1.1.8 所有任务 都执行完毕后查看数据库代办任务表是已经空的

         1.1.9 所有执行过的任务会 列在历史任务表中 

    2. 流程变量

      2.1 什么是流程变量

        流程变量在activiti 中是一个非常重要的角色,流程运转有时需要靠流程变量,业务系统和 activiti

      结合时少不了流程变量,流程变量就是activiti 在管理工作流时根据管理需要而设置的变量。

      比如在请假流程流转时如果请假天数大于 3 天则由总经理审核,否则由人事直接审核,请假天数就可以设置为流程变量,在流程流转时使用。

     

      2.2 流程变量的数据类型:

        string,duble,boolean,short,long,Integer,binary,date日期
      serializable,如果流程变量需要用到pojo当中的属性字段,则该pojo需要实现序列化接口

      

      2.3 流程变量的作用域

        1.默认情况下,流程变量存在整个流程实例当中,每一个环节都可以获取到该变量,称之为global,类似于Java全局变量
        2.任务和执行实例仅仅是针对一个任务和一个执行实例范围,范围没有流程实例大,称为local 变量。类似于Java局部变量

      

      2.4 流程变量案例

        2.4.1 创建bpmn文件并填写两个判断条件

          如果请假天数>3天需要总经理审批

          

           如果请假天数 <=3天直接交给人事存档

          

        2.4.2 将bpmn文件生成 流程图

          

         

        2.4.3 部署一个流程 

    //流程部署
        @Test
        public void deployment(){
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取RepositoryService对象进行流程部署
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //进行部署,将对应的流程定义文件生成到数据库当中,作为记录进行保存
            Deployment deployment = repositoryService.createDeployment()
                    .addClasspathResource("holiday/holiday2.bpmn")     //加载流程文件
                    .addClasspathResource("holiday/holiday2.png")
                    .name("请假流程-流程变量")       //设置流程名称
                    .deploy();              //部署
    
            //输出部署信息
            System.out.println("流程名称:"+deployment.getName());
            System.out.println("流程ID:"+deployment.getId());
            System.out.println("流程Key:"+deployment.getKey());
        }

        2.4.4  启动一个流程实例 流程变量>5

    /**
         * 启动流程实例
         */
        @Test
        public void startInstance() {
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取RuntimeService
            RuntimeService runtimeService = processEngine.getRuntimeService();
            //设置流程变量
            Holiday holiday = new Holiday();
            holiday.setNum(5);
            //定义一个Map集合,存放流程变量的值
            Map<String, Object> assMap = new HashMap<>();
            assMap.put("holiday", holiday);
            //启动流程
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holidayvar",assMap);
            System.out.println("流程实例启动成功~");
        }

        2.4.5  查看数据库 

         2.4.6 处理zhangsan的代办任务后查看数据库任务表

         2.4.7 处理lisi的代办任务后查看数据库任务表

         2.4.8 处理wangwu的代办任务后 查看数据库任务表

         2.4.9 处理完 zhaoliu的任务后数据库任务表为空

        2.4.10 启动一个流程实例 将流程变量设置为3天 

    /**
         * 启动流程实例
         */
        @Test
        public void startInstance() {
            //获取ProcessEngine对象   默认配置文件名称:activiti.cfg.xml  并且configuration的Bean实例ID为processEngineConfiguration
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取RuntimeService
            RuntimeService runtimeService = processEngine.getRuntimeService();
            //设置流程变量
            Holiday holiday = new Holiday();
            holiday.setNum(3);
            //定义一个Map集合,存放流程变量的值
            Map<String, Object> assMap = new HashMap<>();
            assMap.put("holiday", holiday);
            //启动流程
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holidayvar",assMap);
            System.out.println("流程实例启动成功~");
        }

          2.4.11 处理 zhangsan的任务后查看数据库任务表

           2.4.12 处理lisi的任务后因为请假天数为3天 所以直接就到了人事存档

           2.4.13 处理完 zhaoliu的任务后数据库任务表为空

      

  • 相关阅读:
    DMA+USART重定义打印接口
    FTP初探
    ESP8266-lua开发
    GPIO常见问题分析
    新装系统简介
    java四个元注解的作用
    Linux常用操作指令
    @Autowired 与@Resource的区别(详细)
    内存溢出的几种原因和解决办法
    什么是NIO2
  • 原文地址:https://www.cnblogs.com/szhhhh/p/12642718.html
Copyright © 2011-2022 走看看