Flowable 设置流程变量的四种方式详解

yizhihongxing

Flowable 设置流程变量的四种方式详解

在 Flowable 的流程开发中,我们经常需要设置流程变量。而要设置一个变量,有多种方式可以选择,本文将详细介绍这四种具体方式。

第一种方式:在 BPMN 中定义变量

第一种方式是在 BPMN 文件中,直接在 Start Event 中的属性设置中设置变量的名称和类型。如下所示:

<bpmn:startEvent id="startevent1" name="Start Event">
  <bpmn:extensionElements>
    <flowable:executionListener event="start">
      <flowable:field name="name" stringValue="John Doe" />
    </flowable:executionListener>
  </bpmn:extensionElements>
</bpmn:startEvent>

在上面的代码中,stringValue 的值是设置的流程变量的值。这种方式适用于 在流程的启动时就设置好变量的值,同时它的好处是可读性强。

第二种方式:使用 BPMN 中的任务监听器

第二种方式是使用 BPMN 中的任务监听器,在任务执行之前或之后设置变量。可以看下面的示例:

<bpmn:serviceTask id="serviceTask1" name="Service Task">
  <bpmn:extensionElements>
    <flowable:executionListener event="start">
      <flowable:field name="name" stringValue="John Doe" />
    </flowable:executionListener>
  </bpmn:extensionElements>
</bpmn:serviceTask>

在上面的例子中,变量的值被设置为 John Doe,这种设置方式适用于需要在任务执行前后设置变量的场景。

第三种方式:使用 Java 代码设置变量

在 Java 代码中,我们可以使用 Execution 类中的 setVariable 方法, 在流程的执行过程中设置变量的值。示例如下:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
String processInstanceId = ""; // 执行的流程实例 ID
runtimeService.setVariable(processInstanceId, "name", "John Doe");

使用 Java 代码设置变量通常适用于执行任务时需要动态地设置变量值或者在 Java 代码里面对流程变量进行操作的场景。

第四种方式:使用 REST API

最后一种方式是使用 REST API,curl 客户端示例如下:

curl -v -X POST -H "Content-Type:application/json" -d "{\"name\":\"John Doe\"}" "http://localhost:8080/flowable-rest/service/runtime/executions/{executionId}/variables"

其中,executionId 表示流程实例的 ID,该方式是适用于需要通过 API 设置变量值的场景。

总结

上面就是四种设置流程变量的方式,使用这些方式可以在不同场景下为流程设置变量,实现业务逻辑。要根据具体情况选择适合的方式,使用恰当的方式可以让代码更加简洁易读。

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

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

相关文章

  • 利用Python中的mock库对Python代码进行模拟测试

    我来为您详细讲解利用Python中的mock库对Python代码进行模拟测试的完整攻略。 什么是mock库? Mock库是Python中常用的一个模拟测试工具,用于模拟函数及调用的返回结果。它能够在测试过程中替代掉一些不容易获取的变量或对象,然后进行测试。 Mock库可以帮助我们构建一个虚拟的环境,以独立于现实环境进行测试,可以快速地进行单元测试、集成测试等…

    人工智能概论 2023年5月25日
    00
  • Python实现对图像加噪(高斯噪声 椒盐噪声)

    Python实现对图像加噪(高斯噪声 椒盐噪声)的攻略如下: 1. 引言 近年来,深度学习技术的迅速发展推动了计算机视觉的快速发展,而图像处理是计算机视觉中不可避免的一环。然而在真实应用中,由于图像采集设备产生的众多干扰因素,以及传输过程中的诸如信号干扰、传输噪声等问题,使得图像通常并不干净。在这种情况下,为了提高图像处理的精准度,在进行基于图像的算法设计前…

    人工智能概论 2023年5月25日
    00
  • Django 序列化的具体使用

    Django 是一个流行的 Python Web 框架,具有高度可扩展性和易于维护性。在 Django 中,序列化是指将 Django 模型(Model)转换为 Python 数据类型,并将其转换为一种格式,以便可以将其存储在文件中、通过 HTTP 传输或用于其他目的。Django 内置了序列化与反序列化功能,可以方便地实现数据的导入和导出。 下面详细讲解 …

    人工智能概论 2023年5月25日
    00
  • opencv-python图像处理安装与基本操作方法

    以下是针对”opencv-python图像处理安装与基本操作方法”的完整攻略以及两条示例说明: 安装OpenCV-Python 步骤一:安装Python 在安装OpenCV-Python之前,需要先安装Python环境。推荐安装Python 3.x版本,可以从Python官方网站下载相应的安装程序。安装过程中记得勾选“Add Python 3.x to PA…

    人工智能概览 2023年5月25日
    00
  • Mac版Python3安装/升级的方式

    下面是Mac版Python3安装/升级的完整攻略: 1. 安装Homebrew Homebrew是Mac OS X上的一款软件包管理工具,它可以安装、更新和卸载各种软件包,包括Python3。我们可以在终端运行以下命令安装Homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserc…

    人工智能概览 2023年5月25日
    00
  • Django中session登录验证操作指南

    下面是关于Django中session登录验证操作指南的完整攻略: 概述 Django中的session机制可以用于登录验证和用户状态管理。在session中,Django会为每个用户生成一个唯一的session ID,session ID会被存储在浏览器的cookie中,并且会被用于标识用户的身份。通过验证session ID是否存在,我们可以判断用户是否…

    人工智能概览 2023年5月25日
    00
  • 如何使用Java爬虫批量爬取图片

    如何使用 Java 爬虫批量爬取图片? 准备工作 在开始之前,需要准备以下工具: JDK:需要安装 JDK,这里我使用的是当前最新版本 JDK 11。 IntelliJ IDEA:使用官方提供的 IntelliJ IDEA 作为开发工具。 爬取网站首先需要找到一个合适的网站来进行图片爬取。这里我们以花瓣网为例,该网站有很多高质量的图片供我们下载:http:/…

    人工智能概论 2023年5月24日
    00
  • tensorflow学习笔记之简单的神经网络训练和测试

    感谢您对“tensorflow学习笔记之简单的神经网络训练和测试”的关注。 简介 这篇学习笔记主要介绍如何用 TensorFlow 构建和训练一个简单的神经网络模型,并对其进行测试。您需要基本了解 Python 和 TensorFlow 的使用,同时需要了解一些神经网络的基本知识。 准备工作 在进入正式的构建和训练神经网络前,我们需要进行一些准备工作。 安装…

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