Camunda 流程引擎API介绍

💖专栏简介

✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。

✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda

✔️请给snail-camunda 点颗星吧😘

💖Services API

🧡RepositoryService

RepositoryService 可能是使用 Camunda 引擎时需要的第一个服务。此服务提供用于管理和部署流程定义的操作。此外,此服务允许

  • 查询引擎已知的部署和进程定义。
  • 暂停和激活流程定义。挂起意味着无法对它们进行进一步的操作,而激活则相反。
  • 检索各种资源,例如部署中包含的文件或引擎自动生成的流程图。

🧡RuntimeService

RuntimeService 可以用来启动流程实例,也是用于检索和存储流程变量的服务。RuntimeService 还允许查询流程实例和执行。执行是 BPMN 2.0 的“令牌”概念的表示,这个“令牌”概念在之前的篇章《认识BPMN2.0》中也有提及,实质上执行是指向流程实例当前位置的指针。而流程实例等待外部触发器并且流程需要继续时,也会使用 RuntimeService。

🧡TaskService

TaskService 是围绕任务的所有操作,任务才是流程引擎的核心。例如

  • 查询分配给用户或组的任务。
  • 创建新的独立任务。这些任务与流程实例无关。
  • 操作将任务分配给哪个用户或哪些用户以某种方式参与该任务。
  • 认领并完成任务。

🧡IdentityService

IdentityService 允许管理(创建、更新、删除、查询等)组和用户。重要的是要了解核心引擎实际上不会在运行时对用户进行任何检查。例如,可以将任务分配给任何用户,但引擎不会验证系统是否知道该用户。

🧡FormService

FormService 是一项可选服务。这意味着 Camunda 引擎可以在没有它的情况下完美使用,而不会牺牲任何功能。此服务引入了开始表单和任务表单的概念。开始表单是在启动流程实例之前向用户显示的表单,而任务表单是在用户想要完成任务时显示的表单。

🧡HistoryService

HistoryService 公开引擎收集的所有历史数据。在执行流程时,引擎可以保留大量数据(这是可配置的),例如流程实例的开始时间、谁执行了哪些任务、完成任务需要多长时间、每个任务遵循的路径流程实例等。此服务主要公开用于访问此数据的查询功能。

🧡ManagementService

ManagementService允许检索有关数据库表和表元数据的信息。此外,它还公开了作业的查询功能和管理操作。作业在引擎中用于各种操作,例如计时器、异步延续、延迟挂起/激活等。

🧡FilterService

FilterService 允许创建和管理过滤器。筛选器是存储查询,如任务查询。例如,Tasklist 使用筛选器来筛选用户任务。

🧡ExternalTaskService

ExternalTaskService 提供对外部任务实例的访问。外部任务表示在外部独立于流程引擎处理的工作项。

💖Query API

要从引擎查询数据有多种方式:

🧡Java Queries

List<Task> tasks = taskService.createTaskQuery().taskAssignee("userOne").processVariableValueEquals("orderId", "8888").orderByDueDate().asc().list();

在不限制最大结果数或查询大量结果的情况下可能会导致高内存消耗,甚至导致内存不足异常。而查询的最大结果集可以通过配置queryMaxResultsLimit参数,默认值是231-1。

🧡Native Queries

如果查询 API 缺少您需要的可能性(例如,OR 条件),则提供自己的 SQL 查询来检索引擎实体(如 ProcessInstances、Tasks 等),返回类型由您使用的 Query 对象定义,数据映射到正确的对象,例如 Task、ProcessInstance、Execution 等。由于查询将在数据库上触发,因此必须使用表名和列名。

List<Task> tasks = taskService.createNativeTaskQuery().sql("SELECT * FROM " + managementService.getTableName(Task.class) + " T WHERE T.NAME_ = #{taskName}").parameter("taskName", "aOpenTask").list();long count = taskService.createNativeTaskQuery().sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T1, "+ managementService.getTableName(VariableInstanceEntity.class) + " V1 WHERE V1.TASK_ID_ = T1.ID_").count();

🧡Custom Queries

虽然java queries非常简单,但是我们只能使用它提供的查询,也不能对域对象添加约束。

例如下图我们希望返回的查询结果是Customer,此时就需要自定义查询,具体如何实现将在后续的文章中详细讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

病历管理系统

技术架构&#xff1a; StrutsSpringHibernate 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量&#xff0c;促进医学科研、教学&#xff1b;减轻各类事务性工作的劳动强度&#xff0c;使他们…

LCR 193. 二叉搜索树的最近公共祖先

解题思路&#xff1a; 小的在左子树&#xff0c;大的在右子树。 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root.val<p.val&&root.val<q.val)return lowestCommonAncestor(root.right,p,q);if(root.va…

深度揭秘:代理IP的工作原理及其在网络安全中的关键角色

代理IP的工作原理及其在网络安全中的关键角色是一个相对复杂但非常重要的主题。以下是对这一内容的深度揭秘&#xff1a; 代理IP的工作原理 1. 请求转发 当一个客户端&#xff08;如浏览器或爬虫程序&#xff09;使用代理IP时&#xff0c;它不是直接与目标网站通信&#xff0c…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Linux网络编程 基础

OSI七层模型 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#xff0c;也就是我们常说的…

微信公众号公函公证书怎么弄?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移的作用可不止是变更主体哦&#xff01;有时候我们可能需要更换账号主体&#xff0c;但公众号是不支持直接变更的。这时候&#xff0c;我们就可以通过账号迁移功能&#xff0c;把 A 公众号的粉丝、违规记录…

C++中的字符串翻转算法解析

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来学一下C里的一个知识&#xff1a;字符串翻转。 目录 1.题目 描述 输入描述 输出描述 输入数据 1 输出数据 1 提示 2.解决题目 1.所需知识点 2.算法分析 1. 拼接…

演讲回顾:如何为大规模研发团队加速CI构建,实现高效流水线

近日&#xff0c;龙智联合Atlassian举办的DevSecOps研讨会年终专场”趋势展望与实战探讨&#xff1a;如何打好DevOps基础、赋能创新”在上海圆满落幕。龙智Atlassian技术与顾问咨询团队&#xff0c;以及清晖、JamaSoftware、CloudBees等生态伙伴的嘉宾发表了主题演讲&#xff0…

LLM App SDK:LangChain vs. LlamaIndex

在Why RAG is big中&#xff0c;我表示支持检索增强生成&#xff08;RAG&#xff09;作为私有、离线、去中心化 LLM 应用程序的关键技术。 当你建造一些东西供自己使用时&#xff0c;你就是在孤军奋战。 你可以从头开始构建&#xff0c;但在现有框架上构建会更有效。 NSDT工具推…

Java多线程--避免同步机制带来的死锁问题及用Lock锁解决线程安全问题

文章目录 一、死锁&#xff08;1&#xff09;说明&#xff08;2&#xff09;案例1、案例12、案例23、案例3 &#xff08;3&#xff09;诱发死锁的原因及解决方案1、诱发死锁的原因2、避免死锁 二、JDK5.0新特性&#xff1a;Lock(锁)&#xff08;1&#xff09;介绍&#xff08;2…

小白水平理解面试经典题目_数组类LeetCode 118 Pascal‘s Triangle【回归解法】

LeetCode 118 生成杨辉三角&#xff08;Pascal’s Triangle&#xff09; 小白渣翻译 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 例子 这里是小白理解 那么这种题目一上来看&#xf…

4-树-合并两个有序链表

这是树的第4篇算法&#xff0c;力扣链接。 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xf…

Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程 gcc介绍程序的翻译过程预编译编译汇编链接 命令行式宏定义 gcc介绍 gcc是一款编译C语言编译器&#xff0c;可以把我们用vim写的代码编译成可执行程序。编译C用g进行编译&#xff0c;C的文件后缀是test.cc或test.cpp或test.cxx 如果要安装g就执行以下命令 …

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

【HarmonyOS应用开发】ArkTS 属性动画的使用(十二)

一、概述 属性动画&#xff0c;是最为基础的动画&#xff0c;其功能强大、使用场景多&#xff0c;应用范围较广。常用于如下场景中&#xff1a; 一、页面布局发生变化。例如添加、删除部分组件元素。二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分元素&#xff0…

CANoe学习笔记——窗口类型

CANoe中的窗口类型&#xff0c;共分为三种 1&#xff1a;MDI windows 2&#xff1a;Standard Windows 3&#xff1a;Docking Windows 窗口有多种类型&#xff0c;每种类型都定义了特定的窗口行为。通过点击窗口顶部的区域&#xff0c;可以更改窗口类型。 如下图&#xff0…

Python的requests库与HTTP代理的使用:魔法般的网络探险之旅

嘿&#xff0c;各位魔法探险家们&#xff01;今天我们要一起探索Python的requests库与HTTP代理的神奇组合&#xff0c;开启一段魔法般的网络探险之旅&#xff01; 首先&#xff0c;我们要明白什么是requests库。简单说&#xff0c;requests库就是Python中的魔法飞毯&#xff0…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…

MySql主从同步,同步SQL_ERROR 1032解决办法

1.登录从库 mysql -u root -p 2.输入命令查看状态 SHOW SLAVE STATUS\G; 3.找到对应的错误数据位置 Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: app_push_centerReplicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Tabl…

“欢天喜地迎新春”下姜村邻里守望写对联活动

卯兔追冬去&#xff0c;辰龙报春来。空谷幽香谱佳期&#xff0c;红联金句寄吉祥。春联是我国特有的文学形式&#xff0c;贴春联是继承传统习俗的一种方式&#xff0c;是对祖先的尊敬&#xff0c;对传统的继承。春节前夕&#xff0c;家家户户贴上红红的春联&#xff0c;一副副透…