前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【第七篇】Flowable核心内容之任务分配

【第七篇】Flowable核心内容之任务分配

作者头像
用户4919348
发布于 2022-04-13 07:37:24
发布于 2022-04-13 07:37:24
2K00
代码可运行
举报
文章被收录于专栏:波波烤鸭波波烤鸭
运行总次数:0
代码可运行

Flowable的任务分配

1.任务分配

1.1 固定分配

  固定分配就是我们前面介绍的,在绘制流程图或者直接在流程文件中通过Assignee来指定的方式

1.2 表达式分配

  Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language,是EE6规范的一部分.Flowable支持两种UEL表达式: UEL-value 和UEL-method

1.2.1 值表达式

值表达式 Value expression: 解析为一个值。默认情况下,所有流程变量都可以使用。(若使用Spring)所有的Spring bean也可以用在表达式里。例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
${myVar}
${myBean.myProperty}

案例讲解:

可以看到通过表达式处理的效果

先部署流程,然后在启动流程实例的时候绑定表达式对应的值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
     * 启动流程实例
     */
    @Test
    public void testRunProcess(){

        // 获取流程引擎对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 启动流程实例通过 RuntimeService 对象
        RuntimeService runtimeService = processEngine.getRuntimeService();
        // 设置 assignee 的取值
        Map<String,Object> variables = new HashMap<>();
        variables.put("assignee0","张三") ;
        variables.put("assignee1","李四"); 
        // 启动流程实例,第一个参数是流程定义的id
        ProcessInstance processInstance = runtimeService
                .startProcessInstanceById("MyHolidayUI:1:4", variables);// 启动流程实例
        // 输出相关的流程实例信息
        System.out.println("流程定义的ID:" + processInstance.getProcessDefinitionId());
        System.out.println("流程实例的ID:" + processInstance.getId());
        System.out.println("当前活动的ID:" + processInstance.getActivityId());
    }

在流程变量表中我们可以看到对应的流程变量信息

同时在Task表中,可以看到流程当前的分配人是张三,说明UEL表达式被解析了

1.2.2 方法表达式

方法表达式 Method expression: 调用一个方法,可以带或不带参数。**当调用不带参数的方法时,要确保在方法名后添加空括号(以避免与值表达式混淆)。**传递的参数可以是字面值(literal value),也可以是表达式,它们会被自动解析。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
${printer.print()}
${myBean.addNewOrder('orderName')}
${myBean.doSomething(myVar, execution)}

  myBean是Spring容器中的个Bean对象,表示调用的是bean的addNewOrder方法

1.3 监听器分配

可以使用监听器来完成很多Flowable的流程业务。

我们在此处使用监听器来完成负责人的指定,那么我们在流程设计的时候就不需要指定assignee

创建自定义监听器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 自定义的监听器
 */
public class MyTaskListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        System.out.println("监听器触发了:" + delegateTask.getName());
        if("提交请假流程".equals(delegateTask.getName()) &&
                "create".equals(delegateTask.getEventName())){
            // 指定任务的负责人
            delegateTask.setAssignee("小明");
        }else {
            delegateTask.setAssignee("小张");
        }
    }
}

然后在FlowableUI中关联对应的监听器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create:任务创建后触发
assignment:任务分配后触发
Delete:任务完成后触发
All:所有事件都触发

然后我们先部署流程,然后执行查看效果:

然后在Task表中我们可以看到对应的分配人为小明说明通过监听也完成了任务分配的工作了

到这儿就搞定了~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/04/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2023最新版本Activiti7系列-任务分配
  在指派用户任务的审批人时。我们是直接指派的固定账号。但是为了保证流程设计审批的灵活性。我们需要各种不同的分配方式,所以这节我们就详细的来介绍先在Activiti7中我们可以使用的相关的分配方式.
用户4919348
2023/07/11
4460
2023最新版本Activiti7系列-任务分配
【第五篇】Camunda系列-任务分配
  在指派用户任务的审批人时。我们是直接指派的固定账号。但是为了保证流程设计审批的灵活性。我们需要各种不同的分配方式,所以这节我们就详细的来介绍先在Camunda中我们可以使用的相关的分配方式
用户4919348
2022/10/27
4.5K1
2021全网最全Activiti7教程04(Activiti7进阶篇-欢迎收藏)
  本篇重点给大家介绍下Activiti中的高级内容,比如流程实例,个人任务,流程变量,组任务及网关。
用户4919348
2021/06/17
3.6K1
2021全网最全Activiti7教程04(Activiti7进阶篇-欢迎收藏)
项目实践工作流之Activiti学习(二十八)
某个任务使用了表达式${order.price > 100 && order.price < 250},当执行该任务时必须保证 order 在流程变量中存在,否则 activiti 异常。
用户1289394
2023/11/13
2020
项目实践工作流之Activiti学习(二十八)
搭建单体SpringBoot项目 集成Activiti7 进阶
一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。
郭顺发
2023/07/17
6340
搭建单体SpringBoot项目 集成Activiti7 进阶
第七章,activiti个人任务分配,动态指定和监听器指定任务委派人「建议收藏」
这章我们介绍下怎么把任务非配给指定的某个人去执行。现实使用的时候我们也有见过前面一个人审批结束后会自动走到下一个审批人,如果不处理就会一直等待,这里也是同样的道理。
全栈程序员站长
2022/08/05
1.1K0
第七章,activiti个人任务分配,动态指定和监听器指定任务委派人「建议收藏」
Flowable工作流入门
本文链接:https://blog.csdn.net/qq_37059838/article/details/83576097 原作者:吕小小布
全栈程序员站长
2022/08/31
2K0
Flowable工作流入门
【第九篇】Flowable中的候选人讲解
  在流程定义中在任务结点的 assignee 固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn 文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差。针对这种情况可以给任务设置多个候选人或者候选人组,可以从候选人中选择参与者来完成任务。
用户4919348
2022/04/13
2.7K0
【第九篇】Flowable中的候选人讲解
七万字掌握热门工作流引擎框架Activiti7,附带视频讲解哦
  工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。文章中涉及的相关软件资料扫左侧哦。
用户4919348
2022/01/07
1.4K0
七万字掌握热门工作流引擎框架Activiti7,附带视频讲解哦
【第八篇】Flowable之流程变量
  流程实例按步骤执行时,需要使用一些数据。在Flowable中,这些数据称作变量(variable),并会存储在数据库中。变量可以用在表达式中(例如在排他网关中用于选择正确的出口路径),也可以在Java服务任务(service task)中用于调用外部服务(例如为服务调用提供输入或结果存储),等等。
用户4919348
2022/04/13
3.6K0
【第八篇】Flowable之流程变量
activiti的简单使用说明
java Doc https://www.activiti.org/javadocs/
用针戳左手中指指头
2021/03/02
2K0
activiti的简单使用说明
activiti(九)个人任务userTask
个人任务及三种分配方式: 1:在taskProcess.bpmn中直接写 assignee=“张三丰” 2:在taskProcess.bpmn中写 assignee=“#{userID}”,变量的值要是String的。 使用流程变量指定办理人 3,使用TaskListener接口,要使类实现该接口,在类中定义: delegateTask.setAssignee(assignee);// 指定个人任务的办理人 使用任务ID和办理人重新指定办理人: processEngine.getTaskService()// .setAssignee(taskId, userId);
周杰伦本人
2023/10/12
3320
activiti(九)个人任务userTask
【第十一篇】Flowable中的各种网关
  排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data-based gateway),用于对流程中的决策建模。当执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件计算为true的顺序流(当没有设置条件时,认为顺序流为true)继续流程。
用户4919348
2022/04/13
2.9K0
【第十一篇】Flowable中的各种网关
Activiti 工作流框架中的任务调度!工作流框架中的任务流程元素详解,使用监听器监听任务执行
这会获取所有kermit为候选人的任务,表达式中包含user(kermit).这也会获得所有分配包含kermit这个成员的群组(比如,group(management),前提是kermit是这个组的成员,并且使用了activiti的账号组件).用户所在的群组是在运行阶段获取的, 它们可以通过IdentityService进行管理
攻城狮Chova
2022/01/22
10.4K0
Activiti 工作流框架中的任务调度!工作流框架中的任务流程元素详解,使用监听器监听任务执行
Activiti7 任务人员动态分配(UEL-Value方式)
先修改流程图 image.png 测试之前记得先删除之前发布的流程定义,并重新发布改过的 /** * 使用UEL-Value动态分配任务人员 */ @Test public void uelValue(){ // 获取RuntimeService RuntimeService runtimeService = defaultProcessEngine.getRuntimeService(); // 设置UEL-Valu
彼岸舞
2020/12/01
8850
Flowable 设置任务处理人的四种方式
松哥最近正在录制 TienChin 项目视频~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来和松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin 项目配套视频来啦。
江南一点雨
2023/01/04
2.4K0
Flowable 设置任务处理人的四种方式
【第十篇】Flowable中的候选人组
  当候选人很多的情况下,我们可以分组来处理。先创建组,然后把用户分配到这个组中。
用户4919348
2022/04/13
2.6K0
【第十篇】Flowable中的候选人组
2023最新版本Activiti7系列-流程中的任务
用户任务可以在流程中创建并分配给特定的用户或用户组。当流程执行到用户任务时,流程将暂停,并等待相应的用户完成该任务。完成用户任务后,流程将继续执行。
用户4919348
2023/07/27
9720
2023最新版本Activiti7系列-流程中的任务
2023最新版本Activiti7系列-流程变量
  流程变量可以用将数据添加到流程的运行时状态中,或者更具体地说,变量作用域中。改变实体的各种API可以用来更新这些附加的变量。一般来说,一个变量由一个名称和一个值组成。名称用于在整个流程中识别变量。例如,如果一个活动(activity)设置了一个名为 var 的变量,那么后续活动中可以通过使用这个名称来访问它。变量的值是一个 Java 对象。
用户4919348
2023/07/11
4130
2023最新版本Activiti7系列-流程变量
Activiti学习详解【面试+工作】
一:Activiti第一天 1:工作流的概念 说明: 1) 假设:这两张图就是XX兄弟的请假流程图 2) 图的组成部分: A. 人物:范XX 冯X刚 王X军 B. 事件(动作):请假、批准、不批准
Java帮帮
2018/03/15
3.4K0
Activiti学习详解【面试+工作】
推荐阅读
相关推荐
2023最新版本Activiti7系列-任务分配
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验