一、工作流 Activiti7-9.UEL表达式

2021-04-01  本文已影响0人  那钱有着落吗
image.png image.png

在使用表达式的时候要避免保留字,这个可以在起变量名的时候跟自己的项目名来规避


image.png image.png

1.启动流程实例带参数

我们需要新构建一个流程图:


image.png
image.png

然后就是需要部署这个bpmn文件了,这个就不详细提了

下面是创建流程实例的代码,因为带参数,所以创建流程实例的方法多了一个传参的变量,是个Map类型,我们就传入person的key,值为wang
注意:如果流程中有很多的变量,这里也可以加入很多值

@Test
    public void initProcessInstanceWithArgs(){

        //流程变量 ${person}
        Map<String,Object> variables = new HashMap<>();
        variables.put("person","wang");

        ProcessInstance processInstance = runtimeService
                .startProcessInstanceByKey("Process_UEL_V1","b-key001",variables);
        System.out.print("流程实例id:"+processInstance.getProcessInstanceId());

    }

然后我们查看任务就会发现,多了一个新的任务:


image.png

2.完成任务带参数,指定流程变量

下面我们再创建一个流程,这个流程多了一个网关,我们还是像之前一样把王二,张三,李四的受让人都填写好他的拼音作为id,然后记住整个流程的key,然后再网关中的变量UEL都写好,然后保存好,发布流程,然后创建流程实例我们就不加参数,在之后我们在使用参数完成任务来使用一下带参数的完成任务方法:


image.png
image.png

在部署好BPMN之后,创建实例,然后查询wanger的任务,发现有了一条:


image.png

然后记录好王二的taskid,然后传入参数pay 是101,这样理论上审核人应该是李四,下面我们使用完成任务:

// 完成任务带参数,指定流程变量 
    @Test
    public void completeTaskWithArgs(){

        //流程变量 ${pay}
        Map<String,Object> variables = new HashMap<>();
        variables.put("pay","101");

        taskService.complete("9fba4d13-8a52-11eb-8e18-acde48001122",variables);
        System.out.println("执行完成任务");
    }

然后我们查看李四的任务:


image.png

确实是有一条的,然后查看张三,是没有数据的:


image.png

3.完成任务带参数,使用实体类

我们需要创建一个新的流程:


image.png
image.png
image.png

我们创建一个类


image.png
 // 完成任务带参数,使用实体类
    @Test
    public void completeTaskWithClassArgs(){

        UELInfo uelInfo = new UELInfo();
        uelInfo.setName("zhangyajuan");

        //流程变量 ${person}
        Map<String,Object> variables = new HashMap<>();
        variables.put("uelinfo",uelInfo);

        ProcessInstance processInstance = runtimeService
                .startProcessInstanceByKey("UEL3","b-key001",variables);
        System.out.print("流程实例id:"+processInstance.getProcessInstanceId());
    }

完成任务带参数,指定多个候选人


image.png

在执行完之后,我们会发现查询任务的时候,Assingnee是null,为什么呢,因为虽然指定了很多人,但是任务还没有拾取,所以这里是null。

image.png
上一篇 下一篇

猜你喜欢

热点阅读