農農  

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的任务后数据库任务表为空

 

 

 

  

posted on 2020-04-06 16:36  Baekhyunne  阅读(1714)  评论(0编辑  收藏  举报