Flowable 设置任务处理人的四种方式详解

Flowable 设置任务处理人的四种方式详解

Flowable是一款开源的业务流程引擎框架,支持BPMN和CMMN标准模型,并提供了任务分配等功能。在Flowable中,设置任务处理人是流程执行的重要环节,本文将详细介绍Flowable的四种任务处理人设置方法。

1. 设置用户任务 Candidate Users

借助org.flowable.task.api.TaskaddCandidateUser方法可以设置用户任务的候选用户,表示一个任务可以被多个用户处理。候选用户可以在任务运行时动态增加和删除,提高了任务的灵活性。

设置候选用户的代码示例:

    //获取任务实例
    Task task = taskService.createTaskQuery()
            .processInstanceId(processInstanceId)
            .taskDefinitionKey(taskKey)
            .singleResult();

    //设置候选人
    taskService.addCandidateUser(task.getId(), assigneeUserId);

2. 设置用户任务 Assignee

Assignee是指定任务一个具体的用户来处理。执行该任务的唯一用户在任务分配之前必须知道,并且任务不能被其他用户所处理。在任务运行期间,无法将任务的Assignee改变给其他用户。

设置任务处理人的代码示例:

    //获取任务实例
    Task task = taskService.createTaskQuery()
            .processInstanceId(processInstanceId)
            .taskDefinitionKey(taskKey)
            .singleResult();

    //设置处理人
    taskService.setAssignee(task.getId(), assigneeUserId);

3. 设置任务的候选组 Candidate Groups

Candidate Groups是指许多具有相似背景、特性或技能的用户作为一组隶属于组织内部的协作单元。可以通过候选者组任务将任务分配到一组用户中,由任务组成员选择自己要处理的任务实例。

设置任务的候选组的代码示例:

    //获取任务实例
    Task task = taskService.createTaskQuery()
            .processInstanceId(processInstanceId)
            .taskDefinitionKey(taskKey)
            .singleResult();

    //设置任务候选组
    taskService.addCandidateGroup(task.getId(), candidateGroupName);

4. 使用表达式设置任务处理人

在设计流程模型时,可以使用表达式来动态设置任务的处理人和候选人。Flowable提供了表达式的支持,支持使用EL表达式、JavaScript表达式等方式来动态计算任务的处理人和候选人。

在Flowable中,可以使用表达式将任务指派给特定的用户或组:

设置表达式动态设置任务处理人的代码示例:

    //获取任务实例
    Task task = taskService.createTaskQuery()
            .processInstanceId(processInstanceId)
            .taskDefinitionKey(taskKey)
            .singleResult();

    //通过表达式设置任务处理人
    taskService.setAssignee(task.getId(), "${userBean.getAssignee()}");

上述代码在设置任务处理人时使用了EL表达式${userBean.getAssignee()},表示该任务的处理人将会通过userBean.getAssignee()方法返回的数据动态计算得出。

以上是Flowable 设置任务处理人的四种方式详解,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flowable 设置任务处理人的四种方式详解 - Python技术站

(1)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • python+opencv3.4.0 实现HOG+SVM行人检测的示例代码

    下面我来详细讲解如何使用Python和OpenCV 3.4.0实现HOG+SVM行人检测的示例代码。 1. 安装OpenCV 3.4.0 首先,我们需要安装OpenCV 3.4.0。OpenCV是一个开源的计算机视觉库,可以提供各种图像处理和计算机视觉的功能,包括HOG特征提取和SVM分类器等。我们可以从OpenCV官网下载适合自己系统的安装包,并按照安装说…

    人工智能概览 2023年5月25日
    00
  • Node Puppeteer图像识别实现百度指数爬虫的示例

    现在我将详细讲解如何使用Node Puppeteer实现图像识别,以及如何使用它来实现百度指数爬虫。 Node Puppeteer基础 Node Puppeteer是一个NodeJS库,它提供了一个Chrome Headless浏览器的API,使你能够以编码的方式操作浏览器。它可以用来模拟用户交互,比如点击和填写表单等,还可以截取网页截图和生成PDF文件。在…

    人工智能概论 2023年5月25日
    00
  • BitCola交易所怎么样?BitCola交易所正规吗

    BitCola交易所是一家比特币和数字货币交易平台。以下是关于BitCola交易所如何以及它是否合法和可信的详细攻略。 BitCola交易所是什么? BitCola交易所是一家2020年成立的数字货币交易平台。平台提供比特币、比特币现金、以太坊等20多种热门数字货币的现金和保证金(杠杆)交易。 BitCola交易所如何? 注册和安全 用户可以免费注册账户,并…

    人工智能概览 2023年5月25日
    00
  • Apache如何部署django项目

    下面是 Apache 如何部署 Django 项目的完整攻略: 一、在 Apache 中配置 mod_wsgi 模块 Apache 是一款广泛使用的 Web 服务器,而 mod_wsgi 是一款可以在 Apache 上运行 Python 代码的模块。因此,为了部署 Django 项目,我们首先需要在 Apache 中配置 mod_wsgi 模块。 安装 mo…

    人工智能概览 2023年5月25日
    00
  • Python中的pprint模块

    Python中的pprint模块 什么是pprint模块 Python提供了一个名为pprint的内置模块,它用于以“漂亮”的方式格式化Python数据结构,并将其打印到控制台或文件中。通常,当我们打印大型嵌套数据结构(如字典、列表或元组)时,会出现很长、难以阅读的输出。这是因为Python自动将数据结构打印为单行输出,而没有缩进或空格,以增强可读性。ppr…

    人工智能概览 2023年5月25日
    00
  • Anaconda2下实现Python2.7和Python3.5的共存方法

    要在Anaconda2下实现Python2.7和Python3.5的共存,可以按照以下步骤操作: 安装Anaconda2 首先从Anaconda官网(http://anaconda.com/)下载并安装Anaconda2。 创建Python2环境 打开Anaconda Prompt,输入以下命令创建一个名为“py27”的Python2环境: conda cr…

    人工智能概览 2023年5月25日
    00
  • pyqt5 QScrollArea设置在自定义侧(任何位置)

    要在自定义部件中使用 QScrollArea,可以先创建一个 QWidget,然后在这个 QWidget 上添加一个 QScrollArea,最后把你想滑动的部件添加到 QScrollArea 中。下面是设置在自定义侧的步骤。 步骤 导入 pyqt5 库,并创建一个带有滚动条的 QWidget from PyQt5.QtWidgets import QWid…

    人工智能概览 2023年5月25日
    00
  • CentOS7 禁用Transparent Huge Pages的实现方法

    以下是“CentOS7禁用Transparent Huge Pages的实现方法”的完整攻略: 简介 在Linux系统中,内存管理是一个非常重要的组件。其中,为了优化内存的使用效率,Linux提供了一种称为“Transparent Huge Pages”的功能。但是,在某些情况下,这种功能会影响应用程序的性能表现。因此,禁用这种功能对于高性能应用程序来说是非…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部