camunda使用指南

2023-11-02

参考:Camunda 快速入门Camunda SpringBoot与进阶内容camunda中文站camunda官方英文文档

使用流程

1、下载和安装

在计算机上安装Camunda BPM平台和Camunda Modeler(用于编辑流程图及其他模型)。

Camunda Modeler下载地址 https://camunda.com/download/modeler/ 。

2、编辑流程

新建BPMN流程 ——> 编辑 ——> 配置流程参数 ——> 保存生成 .bpmn 文件 ——> 用java或node实现任务

Service Task(服务任务) , 服务类型有很多执行的方法,比如“external(外部)”任务模式 。

User Task(人工任务)

配置外部任务:

image-20210526063609416

配置流程参数:

image-20210526063821870

编写主类实现业务逻辑,代码大致如下:

import java.util.logging.Logger;
import java.awt.Desktop;
import java.net.URI;

import org.camunda.bpm.client.ExternalTaskClient;

public class ChargeCardWorker {
  private final static Logger LOGGER = Logger.getLogger(ChargeCardWorker.class.getName());

  public static void main(String[] args) {
    ExternalTaskClient client = ExternalTaskClient.create()
        .baseUrl("http://localhost:8080/engine-rest")
        .asyncResponseTimeout(10000) // 长轮询超时时间
        .build();

    // 订阅指定的外部任务,charge-card对应刷卡付款的外部任务id
    client.subscribe("charge-card")
        .lockDuration(1000) // 默认锁定时间为20秒,这里修改为1秒
        .handler((externalTask, externalTaskService) -> {
          // 将您的业务逻辑写在这

          // 获取流程变量
          String item = (String) externalTask.getVariable("item");
          Long amount = (Long) externalTask.getVariable("amount");

          LOGGER.info("Charging credit card with an amount of '" + amount + "'€ for the item '" + item + "'...");

          try {
              Desktop.getDesktop().browse(new URI("https://docs.camunda.org/get-started/quick-start/complete"));
          } catch (Exception e) {
              e.printStackTrace();
          }

          // 完成任务
          externalTaskService.complete(externalTask);
        })
        .open();
  }
}
  • 代码中的"http://localhost:8080/engine-rest"对应下面部署流程中的REST Endpoint。(注意点)
3、部署流程

将部署流程到流程引擎,然后发起流程,检查流程是否发起成功 。

使用 Camunda Modeler 部署流程

点击工具栏中的部署按钮可以将当前流程部署到流程引擎,点击部署按钮,输入Deployment Name 为 “Payment” ,输入下方REST Endpointhttp://localhost:8080/engine-rest ,然后点击右下角Deploy部署:

image-20210527063619110

使用Cockpit查看部署结果
创建流程实例(发起流程)

使用Rest API发起流程,所以需要一个接口测试工具(例如:Postman),或者也可以使用电脑自带的curl

a) curl

在命令行中执行

curl -H "Content-Type: application/json" -X POST -d '{"variables": {"amount": {"value":555,"type":"long"}, "item": {"value":"item-xyz"} } }' http://localhost:8080/engine-rest/process-definition/key/payment-retrieval/start
  • "http://localhost:8080/engine-rest"对应代码中的baseUrl;
  • process-definition
  • payment-retrieval对应“付款流程”id

如果能看到成功的返回结果,则流程发起成功。

b)Postman

在url中输入 http://localhost:8080/engine-rest/process-definition/key/payment-retrieval/start

模式选择POST

点击Body,选择raw,并在右面选择application/json

然后输入Body内容:

{
	"variables": {
		"amount": {
			"value":555,
			"type":"long"
		},
		"item": {
			"value": "item-xyz"
		}
	}
}

编辑完成后,结果这样:

image-20210526075056144

点击 Send 发送请求

如果能看到成功的返回结果,则流程发起成功

4、人工任务

了解将人工任务集成到流程中的基础知识,以及如何使用Camunda构建表单。

添加人工任务节点“批准付款”:

image-20210527061148133

配置人工任务表单:

点击“批准付款节点”,在右侧的属性面板中点击Forms(表单)选项卡,点击下面的加号,添加3个属性:

image-20210527061619655

属性1:

  • ID: amount
  • Type: long
  • Label: 金额

image-20210527062004660

属性2:

  • ID: item
  • Type: string
  • Label: 项目

image-20210527062029129

属性3:

  • ID: approved
  • Type: boolean
  • Label: 是否同意?

image-20210527062104122

发起流程:

部署流程后,打开任务列表(http://localhost:8080/camunda/app/tasklist/),使用 demo / demo 登录

点击右上角的 Start process ,在弹出的对话框中选择“付款流程”

image-20210527062701901

这时会弹出编辑流程变量的对话框,可以通过点击 Add a variable 按钮添加变量,这次我们先不添加,直接点击右下角 Start 启动流程(注意点)

image-20210527063004938

这时,在任务列表应该就能看到刚创建的人工任务了,如果没有可以手动刷新一下

部分用户这里看不到,可能是 All Tasks 过滤器没有自动添加,左侧显示为:

image-20210527070001945

这时点击 Add a simple filter 即可

选择这个任务项,在右侧可以看到表单

image-20210527065738905

点击 Diagram 选项卡,可以看到高亮的节点就是当前进行中的节点

image-20210527065754734

5、动态性(网关)

了解如何通过向流程添加网关来使流程更具动态性。

排他网关(Exclusive Gateways)

添加网关(菱形)并进行配置:

image-20210528065311137

比如,

选择“<1000”的连线,打开属性面板,选择“Condition Type”为“Expression”,这里我们使用JAVA统一表达式语言编写条件,这里要做的是在金额小于1000时直接刷卡付款,则输入表达式 ${amount<1000}

image-20210528070903818

打开任务列表(http://localhost:8080/camunda/app/tasklist/),使用 demo / demo 登录

点击右上角的 Start process ,在弹出的对话框中选择“付款流程”

在上一章中,我们直接点击 Start,但这次我们要增加几个变量来测试动态的流程(关键点)

image-20210528072028596

试着更改 amount 的值,查看对流程执行顺序的影响。

6、决策自动化

了解如何在流程中集成DMN决策表。

camunda+springboot

在流程中调用 JAVA Class

通过form选项卡添加表单 ——> 添加service task到流程中 ——> 编写java类 ——> 配置service task ——> 启动新流程

image-20210530100557989

web应用程序 (Tasklist, Cockpit, Admin, Rest Api 接口 )

  • REST API REST API允许你使用远程应用或JavaScript应用的流程引擎。 (注意:REST API的文档已成为自己的文档。)
  • Camunda Tasklist 用于人工流管理和用户任务的Web应用,允许流程参与者检查其工作流任务并导航到任务表单,以便在任务上工作并提供数据输入。
  • Camunda Cockpit 用于过程监视和操作的Web应用,允许你搜索流程实例,检查其状态并修复损坏的实例。
  • Camunda Admin 允许你管理用户,组和授权的Web应用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

camunda使用指南 的相关文章

随机推荐

  • AI-视频换脸

    本文涉及到的代码均已放置在我的github中 gt 链接 环境 Anaconda 集成 python 3 6 5 主要使用了 dlib numpy opencv 调用为cv2 os这四个库 录制 截屏 FSCapture 8 0 目的 将视
  • pycharm配置PyQt5,以及创建第一个项目

    认你已经安装好了pycharm 也正确安装了PyQt5 否则 请移步https www cnblogs com longbigbeard p 9628102 html来安装PyQt5 下一步 Tools gt External Tools
  • CTFHub---xss 反射型

    反射型 反射型xss攻击 Reflected XSS 又称为非持久性跨站点脚本攻击 它是最常见的类型的XSS 攻击代码的工作方式可以分为三个类型 1 持久型跨站 最直接的危害类型 跨站代码存储在服务器 数据库 2 非持久型跨站 反射型跨站脚
  • 特征工程的建立过程

    1 特征工程 1 1 了解特征工程 数据挖掘 二八原则 80 的精力 gt 选取特征 20 的精力 gt 模型融合等 基于数据分析与探索提取潜在有价值的特征 特征工程重要性 特征越好 模型的性能越出色 特征越好 构建的模型越简单 特征越好
  • 清除浮动的五种方法

    为什么要清除浮动 因为往往浮动后的子元素因为脱离了标准流 不能自动撑起父元素的高度 所以会对后续布局产生影响 对此清除浮动不如理解为清除浮动产生的影响更为合理 例如 我们设置了两个盒子如图所示 粉色为父盒子 只有宽度没有高度 蓝色盒子有宽有
  • v-for和v-if不能同时使用(原因和解决方法)

    原因 当v for和v if同时使用时 VSCode会提示报错 这是因为v for的优先级比v if的优先级高 每一次遍历 再一个一个决定是否需要显示出来 渲染了多余的DOM节点 这会影响性能 解决 1 加一个
  • 【网络结构设计】1、ResNeXt

    文章目录 一 背景 二 方法 三 效果 论文 Aggregated Residual Transformations for Deep Neural Networks 代码 https github com miraclewkf ResNe
  • 前端浏览器报错:Invalid prop: type check failed for prop "border". Expected Boolean, got String.

    用elementUI写vue 项目 在浏览器调试的时候报了这个错误 原因是给表格加border true 让表格得到竖直的框线 插件希望得到的是一个布尔值 但是得到的是true的字符串 解决办法 在border true 前加上一个冒号
  • vue---深度修改样式

    scss parent v deep children1 样式 children2 样式
  • Sharding-Jdbc实现读写分离、分库分表

    1 概览 ShardingSphere Jdbc定位为轻量级Java框架 在Java的Jdbc层提供的额外服务 它使用客户端直连数据库 以jar包形式提供服务 可理解为增强版的Jdbc驱动 完全兼容Jdbc和各种ORM框架 2 MySQL主
  • LINUX下MYSQL密码正确但无法本地登录

    如果可以远程登录 但无法本地登录 报错为1045 可能出错原因和我一样 配置过远程连接 修改过user表中的host字段 而mysql默认user为localhost 不匹配于是报错 解决办法 1 启动mysql时跳过密码问题 打开my c
  • git:远程仓库

    远程仓库是指托管在网络服务器上的项目仓库 可能会有好多个项目仓库 其中有些你只能读 另外有些可以写 同他人协作开发某个项目时 需要管理这些远程仓库 以便推送或拉取数据 分享各自的工作进展 假设远程仓库有一个默认远程分支 dev 如果将其克隆
  • Ubuntu下SSH设置,实现远程登录

    网上有很多介绍在Ubuntu下开启SSH服务的文章 但大多数介绍的方法测试后都不太理想 均不能实现远程登录到Ubuntu上 最后分析原因是都没有真正开启ssh server服务 最终成功的方法如下 Ubuntu 下安装 OpenSSH Se
  • nginx的配置转发

    有这样一个需求 项目中跳转到某个地址 但这个地址不想暴露给用户 因此我们想到要做一层代理 通过项目某个路径直接用ngnix代理到这个地址 查询相关文档后 发现方案如下 用return 302 1 2 3 location myBaidu r
  • 【SpringBoot】过滤器,监听器,拦截器介绍

    文章目录 一 简介 1 过滤器 2 拦截器 3 监听器 二 如何创建 1 过滤器 2 监听器 3 拦截器 三 总结 一 简介 通过两幅图我们可以理解拦截器和过滤器的特点 1 过滤器 过滤器是在请求进入tomcat容器后 但请求进入servl
  • 环形缓冲区– Disruptor背后的数据结构

    环形缓冲区 Disruptor背后的数据结构 Disruptor是一个高性能的库 用于在线程之间传递消息 该库由LMAX Exchange公司在几年前开发和开源 他们创建了此软件来处理其零售金融交易平台中的巨大流量 超过600万TPS 在2
  • 微信小程序Mustache语法

    小程序开发的wxml里 用到了Mustache语法 所以 非常有必要把Mustache研究下 什么是Mustache Mustache是一个logic less 轻逻辑 模板解析引擎 它是为了使用户界面与业务数据 内容 分离而产生的 它可以
  • C++20的原子智能指针

    一 原子变量和智能指针 在前面学习时提到过智能指针本身不是线程安全的 因为虽然其计数器是线程安全控制但数据不是 这也就是说其在多线程中赋值时 会产生冲突 而原子变量恰恰能够解决这个问题 不过在早先的c 标准中 原子变量不支持智能指针 所以要
  • base64上传图片,并且限制上传图片大小,

    param file data return bool false string 判断base64文件大小 以及格式 public function upimgbase64 file data if preg match data s im
  • camunda使用指南

    参考 Camunda 快速入门 Camunda SpringBoot与进阶内容 camunda中文站 camunda官方英文文档 文章目录 使用流程 1 下载和安装 2 编辑流程 3 部署流程 使用 Camunda Modeler 部署流程