(4)activiti工作流引擎之uel表达式

本文介绍了如何在Activiti工作流引擎中使用UEL表达式动态设置流程实例的businessKey和任务处理人。通过UEL-value和UEL-method两种方式,详细讲解了如何在启动流程时动态设置assignee的值,并通过示例代码演示了具体操作步骤,展示了UEL在业务集成中的灵活性。
摘要由CSDN通过智能技术生成

有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购单,如何跟一个流程实例互相关联起来?

这里就需要使用到activiti启动流程实例时设置一个流程实例的businessKey(一般存储我们一条采购单的id)

1,启动流程实例设置其businessKey

复制代码
/**
     * 启动一个流程实例,设置其业务id
     */
    @Test
    public void startProInsWithKey() {
        RuntimeService runtimeService = engine.getRuntimeService();

        String processDefinitionKey = "purchasingflow";
        //设置一个businessKey,在我实际业务中可能是一个采购单,或者订单之类的id
        String businessKey ="111";
        // 根据流程定义的key启动一个流程实例
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey);
        System.out.println("流程实例id:" + processInstance.getId());
        System.out.println("流程定义id:" + processInstance.getProcessDefinitionId());

    }
复制代码

 一般情况下,我们是在用户保存一条采购单的时候,启动这个实例,并且动态获取采购单的id(也就是用作流程实例的businessKey),并且我们还会在采购单表中保存这个流程实例的id,双向一对一绑定,方便业务查询

2,根据采购单的id(也就是用作流程实例的businessKey),动态的查询出对应的流程实例

复制代码
/**
     * 通过businessKey查询流程实例
     */
    @Test
    public void queryProInsWithKey(){
        RuntimeService runtimeService = engine.getRuntimeService();
        String businessKey ="111";
        
        ProcessInstanceQuery instanceQuery = runtimeService.createProcessInstanceQuery();
        //根据其流程定义key和业务id businessKey查询出对应的流程实例,一般只有一条
        instanceQuery.processInstanceBusinessKey(businessKey);
        //查询出唯一的一条流程实例
        ProcessInstance processInstance = instanceQuery.singleResult();
        
        System.out.println("流程实例id:"+processInstance.getId());
        System.out.println("流程定义id:"+processInstance.getProcessDefinitionId());
        
    }
复制代码

到这里,我们就清楚了一个流程实例和实际业务数据的绑定

 

大家到这里也启动了很多的流程实例了,发现我们的任务办理人都是写死为zhangsan,lisi之类的,那么我们可以动态的指定吗,这就需要使用到我们的uel表达式了

首先uel表达式到底是什么呢?

UEL是java EE6规范的一部分,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值