camunda流程引擎 API 接口介绍

camunda流程引擎 API 接口介绍

与流程引擎交互最常见的方式就是使用 Java API 。其起点是创建一个流程引擎。有了流程引擎,就可以从中获取各种服务因为提供了工作流和流程管理的方法。流程引擎和服务对象是线程安全的,因此可以为整个服务器保存一个全局的引用。流程引擎的主要 API 如图所示。

在这里插入图片描述

第一次调用 ProcessEngines.getDefaultProcessEngine ()方法会初始化并返回一个流程引擎的实例,之后的调用则会返回同一个实例。服务 API 引用方式示例,代码如下:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine ();

RepositoryService repositoryService = processEngine.getRepositoryService ();

RuntimeService runtimeService = processEngine.getRuntimeService ();

TaskService taskService = processEngine.getTaskService ();

IdentityService identityService = processEngine.getIdentityService ();

FormService formService = processEngine.getFormService ();

HistoryService historyService = processEngine.getHistoryService ();

ManagementService managementService = processEngine.getManagementService (); 

FilterService filterService = processEngine.getFilterService ();

ExternalTaskService externalTaskService = processEngine.getExternalTaskService ();

CaseService caseService = processEngine.getCaseService ();

DecisionService decisionService = processEngine.getDecisionService ();

1. RepositoryService

当使用 Camunda 引擎的时候, RepositoryService 很可能是第一个需要打交道的服务。这个服务提供了管理和操控流程部署和流程定义的操作方法。其中,流程定义是 BPMN 2.0流程对应的 Java 对象,它代表了流程每一步的结构和行为;而流程部署则是流程引擎中打包流程的单位。一个部署可以包含多个 BPMN 2.0XML文件,以及任何其他资源。开发者可以自行选择什么可以打包在一个部署里面。它既可以是一个单一的 BPMN 2.0 XML 文件,也可以包含整个流程包及其相关的资源。例如,一个 HR 流程部署可以包含与这个流程相关的所有资源。 RepositoryService 可以用来部署这样的包。

部署流程意味着这个部署包会被首先上传到流程引擎,流程引擎会检查并解析所有的流程,然后再存入数据库。从那以后,系统就会知道这个部署,其中包含的流程也就可以开始运行了。

此外, RepositoryService 还允许执行以下操作:

(1)查询流程引擎所知道的部署和流程定义。(2)挂起、激活流程定义。挂起意味着不能进行下一步的流程操作,而激活则是反操作。

(3)获取各种资源,比如部署中包含的文件,或者引擎自动生成的流程图等。

2. RuntimeService

RepositoryService 关注的是静态信息,也就是不变的、或者是不经常改变的数据。而 RuntimeService 则相反,它处理的是已启动的流程实例。前面提到过,流程定义定义的是流程中每一步的结构和行为。而流程实例则是上述流程定义的一次执行。对每一个流程定义,通常会有多个流程实例在同时运行。

RuntimeService 也被用来获取或者存储流程变量。流程变量是特定于流程实例的数据,它可以在流程的各种构造中使用。例如,排他网关通常使用流程变量来决定下一步选取哪一条路径来执行。

RuntimeService 也被用来查询流程实例和执行( Execution )。这里面的执行表示的是 BPMN 2.0中令牌( Token )的概念。一般来说,一个执行就是一个指向流程实例当前所处位置的一个指针。一个流程实例可以有各种等待状态,而 RuntimeService 则包含各种操作以"通知"流程实例受到了外部触发,因此流程实例可以继续执行了。

3.TaskService

需要被用户或者系统执行的任务流擎的核心。围着任务的所有资源都被打包在 TaskService 中,例如:

(1)查询分配给用户或组的任务。

(2)创建新的独立任务。这些独立任务是与流程引擎无关的。

(3)控制将任务分配给哪个用户,或者哪些用户,以及以何种方式参与到任务中。

(4)认领并完成一个任务。认领是指某个用户决定承担某个任务,也就是说这个用户会完成这个任务。完成指的是"做完与这个任务相关的工作"。通常,认领并完成任务是在填写某种形式的表单。

4. IdentityService

IdentityService 用来管理(创建、更新、删除、查询等)用户和组。需要注意的是,核心引擎在运行时并不做关于用户的任何检查。例如,一个任务可以分配给任意用户,引擎并不会验证系统是否知道这个用户。主要原因是引擎可以与 LDAP 、 Active Directory 等其他服务一起协同工作。相关的检查交由对应的服务来完成。

5. FormService

FormService 是可选服务。这就意味着即使没有 FormService , Camunda 引擎也可以在不牺牲任何功能的情况下正常运转。 FormService 引入了开始表单( Start Form )和任务表单( Task Form )。开始表单是在流程开始前显示给用户的表单,而任务表单则是在用户准备要完成任务的时候显示的表单。这些表单都可以在 BPMN 2.0流程中定义。通过 FormService 使得引用这些表单变得更加简单、方便。

6.HistoryService

HistoryService 暴露的是流程引擎收集到的所有历史数据。当执行流程的时候,引擎会收集到大量的数据(收集哪些数据是可配的),比如流程实例的开始事件、谁做了某项任务、花了多长时间完成这个任务、流程实例执行经过了哪些路径等。 HistoryService 提供了对这些数据的查询能力。

7.ManagementService

通常在编写定制化应用时需要用到 ManagementService 。它允许用户获取关于数据库表及其元数据的信息。此外,它还提供了关于作业的查询能力和管理操作。在流程引擎中,作业用途广泛,可用于定时器、异步延续、延迟挂起、激活等。

8. FilterService

FilterService 允许创建和管理过滤器。过滤器是像查询任务那样存储起来的查询操作。比如, Tasklist 使用过滤器来过滤用户任务。

9. ExternalTaskService

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

10.CaseService

CaseService 跟 runtimeService 类似,只是 CaseService 用于案例实例。其处理与案例相关的工作:比如开始一个新的案例实例、管理案例执行的生命周期等。 CaseService 还用于检索和更新案例实例的流程变量。

11. DecisionService

DecisionService 用于评估部署到流程引擎中的决策。它是评估业务规则任务中决策的另外一种替代方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【娱乐项目】基于批处理脚本与JavaScript渲染视频列表的Web页面

Demo介绍 一个简单的视频播放器应用,其中包含了视频列表和一个视频播放区域。用户可以通过点击视频列表中的项来选择并播放相应的视频,播放器会自动播放每个视频并在播放完毕后切换到下一个视频。本项目旨在通过自动化脚本和动态网页渲染,帮助…

Chili靶机渗透

获取ip: 获取端口号: 可以看到不存在ssh服务了,但是存在ftp和http服务: 扫描一下http服务: 访问网址: 查看源代码只发现一个标题: 扫描一下目录信息: 没有扫描到什么东西&#xff0…

去中心化物理基础设施网络(DePIN):重塑未来的基石

一、引言:DePIN的定义与背景 什么是DePIN? 去中心化物理基础设施网络(DePIN,Decentralized Physical Infrastructure Networks)是利用区块链和去中心化技术管理、优化和激励物理资源分配的一种新兴模式。与传统集中式…

【Linux】线程同步与互斥

文章目录 1. 线程互斥1.1 进程线程间的互斥相关背景概念1.2 互斥量mutex1.3 相关操作1.4 互斥量实现原理1.5 互斥量的封装 2. 线程同步2.1 条件变量2.2 生产者消费者模型2.3 基于BlockingQueue的生产者消费者模型2.4 信号量2.5 基于环形队列的生产消费模型 3. 线程池3.1 日志3.…

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libtinfo.so.5的问题 2024/11/29 20:41 缘起:中科创达的高通CM6125开发板的Android10的编译环境需要。 [ 11% 15993/135734] target Java source list: vr [ 11% 15994/135734] target …

海盗王用golang重写的AccountServer功能

自从用golang重写了海盗王的网关gateserver以来,一直想把accountserver也重写了,但是一直没有进行。 趁上次刚写好那个golang版的更新器,还有些熟悉,于是把原来AccountServer的C代码重写读了个大概。它原版的写得太过于复杂&#…

Vue使用Mockjs插件实现模拟数据

官方文档:Mock.js 一.引言 在前端开发过程中,我们经常会遇到后端接口尚未完成,但前端需要进行页面构建和功能测试的情况。这时候,Mockjs就如同救星一般出现了。Mockjs 是一款能够模拟生成随机数据,拦截 Ajax 请求并返…

我们来学mysql -- 事务之概念(原理篇)

事务的概念 题记一个例子一致性隔离性原子性持久性 题记 在漫长的编程岁月中,存在一如既往地贯穿着工作,面试的概念这类知识点,事不关己当然高高挂起,精准踩坑时那心情也的却是日了🐶请原谅我的粗俗,遇到B…

书生大模型实战营第四期-入门岛-2. Python关卡任务

书生大模型实战营第四期-入门岛-2. Python关卡任务 书生大模型实战营-第四期 闯关手册:https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/Python/task.md 任务类型任务内容预计耗时闯关任务Leetcode 383(笔记中提交代码与leetcode提交通过截图)20mins闯…

java全栈day10--后端Web基础(基础知识)之续集

一、Servlet执行流程 二、Http协议(相对Tomcat和servlet重要一点) 2.1Http-概叙 2.2Http-请求协议 2.2.3请求数据格式 2.2.3请求数据获取 先启动服务器 访问/hello Servlet 访问浏览器端Http协议数据 查看数据

【Docker系列】Docker 中使用 Redis 配置文件的详细指南

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

图像显示的是矩阵的行和列,修改为坐标范围。

x 3; y 3; f1x x^2 y^2; guance1 f1x; F (x, y) sqrt((x.^2 y.^2 - guance1).^2); % 使用点乘 [x, y] meshgrid(0:1:5, 0:1:5); Z F(x, y); figure; imagesc(Z); % 由于 imagesc 使用矩阵索引作为坐标,我们需要手动添加刻度 % 这里我们假设 x 和 y 的范围…

人工智能的微积分基础

目录 ​编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…

肿瘤微环境中单细胞的泛癌分类

scRNA-seq可以揭示肿瘤微环境 (TME) 内细胞异质性的宝贵见解,scATOMIC是一种用于恶性和非恶性细胞的注释工具。在 300,000 个癌症、免疫和基质细胞上训练了 scATOMIC,为 19 种常见癌症定义了一个泛癌症参考,scATOMIC优于当前的分类方法。在 2…

OpenCV_Code_LOG

孔洞填充 void fillHole(const Mat srcBw, Mat &dstBw) {Size m_Size srcBw.size();Mat TempMat::zeros(m_Size.height2,m_Size.width2,srcBw.type());//延展图像srcBw.copyTo(Temp(Range(1, m_Size.height 1), Range(1, m_Size.width 1)));cv::floodFill(Temp, Point(…

C语言数据结构——详细讲解《队列》

C语言数据结构——详细讲解《队列》 前言一、队列的概念二、队列的操作(一)定义队列结构(二)初始化队列(三)入队列操作(四)出队列操作(五)获取队头元素&#…

【模块一】kubernetes容器编排进阶业务容器化案例

Kubernetes 实战案例 Kubernetes实战案例-规划(基于nerdctl buildkitdcontainerd构建容器镜像) 业务容器化优势: ① 提高资源利用率、节约部署IT成本。 ② 提高部署效率,基于kubernetes实现微服务的快速部署与交付、容器的批量调度与秒级启动。 ③…

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Cursor 是 Visual Studio Code 的一个分支。这使我们能够…

Android 12.0 DocumentsUI文件管理器首次进入默认显示内部存储文件功能实现

1.前言 在12.0的系统rom定制化开发中,在关于文件管理器的某些功能中,在首次进入文件管理器的时候默认进入下载 文件夹,点击菜单选择内部存储的时候,会显示内部存储的内容,客户开发需要要求默认显示内部存储的文件 接下来分析下功能的实现 如图: 2.DocumentsUI文件管理器首…

9.机器学习--SVM支持向量机

支持向量机(Support Vector Machine,SVM)是一种二分类监督学习模型。支持向量机最早在 1964 年被提出,1995年前后理论成熟并开始被大量应用与人像识别、文本分类等问题中。它的基本模型是定义在特征空间上的间隔最大的线性分类器&…