Camunda 官方快速入门教程中文版(完整版)

本文为Camunda官网快速入门部分的中文版本
原文地址: https://docs.camunda.org/get-started/quick-start/

0.介绍

本教程将指导您使用Camunda BPM平台建模并实现您的第一个工作流程,其中将使用JAVA或NodeJS作为外部客户端,以及使用DMN分离流程与决策,让我们开始吧!

首先使用git克隆示例代码

git clone https://github.com/camunda/camunda-get-started-quickstart.git
# 如果github速度缓慢,也可以选择使用我的gitee镜像
git clone https://gitee.com/zoollcar/camunda-get-started-quickstart.git

在教程开始之前,首先将代码签出到Start标签

git checkout -f Start

在教程过程中可以随时通过Start标签恢复到初试状态,或使用Step-X(X表示步骤)标签,恢复到任意一步骤的状态

git checkout -f Step-X(将X替换为步骤数字1~6)

教程将分为六个步骤

  1. 下载和安装

在计算机上安装Camunda BPM平台和Camunda Modeler。

  1. 编辑流程

了解处理Camunda Modeler的基础知识,了解如何对完全可执行的流程进行建模和配置,以及如何集成自己的业务逻辑。

  1. 部署流程

将流程部署到Camunda并启动您的第一个流程实例。

  1. 人工任务

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

  1. 动态性

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

  1. 决策自动化

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

1.下载和安装

首先,您需要安装 Camunda BPM平台和Camunda Modeler。

前期准备

确保你具有 JAVA1.8以上的JRE或JDK,并可以在命令行使用

在命令行中运行以下命令,检查你的java版本

java -version

可以在 Camunda’s support list 里找到Camunda支持的所有JAVA版本

Camunda Platform (Camunda BPM平台)

首先我们需要下载 Camunda Platform

打开下载地址 https://camunda.com/download/

image-20210525075743771

下载ZIP压缩包,并解压到任意位置

image-20210525080143209

windows运行start.batlinux运行`start.sh,脚本会启动服务

在浏览器中打开 http://localhost:8080/ 就可以看到欢迎页面了

image-20210525081135102

Camunda Modeler(用于编辑流程图及其他模型)

打开下载地址 https://camunda.com/download/modeler/

image-20210525080718066

下载对应系统的版本,并解压到任意位置

image-20210525080810331

执行 camunda-modeler.exe (Windows), camunda-modeler.app (Mac), or camunda-modeler.sh (Linux),即可启动Camunda Modeler

image-20210525080941290

2.编辑流程

本章中,我们将会使用Camunda Modeler创建第一个BPMN 2.0流程,并执行一些自动任务

首先,打开Camunda Modeler

新建BPMN流程

点击 File > New File > BPMN Diagram ,创建一个新的流程设计文件

image-20210525082359058

编辑一个简单的流程

image-20210526060459576

  1. 双击 开始 节点编辑标签,输入“付款请求”

标签可以换行,需要使用Shift +回车

  1. 点击右面显示的方框,添加一个新的活动

可以看到一个新的活动显示到画布上,双击将它命名为“刷卡付款”

  1. 点击取信用卡节点右面的扳手可以修改活动类型,这里我们修改为Service Task(服务类型)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZiLNZoH8-1622163855113)(http://img.shaochenfeng.com/20210526063519.png)]

  1. 新增一个结束节点,并命名为“收到付款”

image-20210526063435352

配置“刷卡付款”节点

服务类型有很多执行的方法,这次我们使用“external(外部)”任务模式

  1. 点击“取信用卡”节点,在右侧的面板中修改Implementation(实现)为 External ,修改Topic为 charge-card

image-20210526063609416

配置流程参数

  1. 点击画布的空白处,右侧的面板会显示当前流程本身的参数

这里我们修改id为payment-retrieval,id是区分流程的标识

然后修改Name 为“付款流程”

最后确保 Executable 是勾选的,只有Executable被勾选,流程才能执行

image-20210526063821870

  1. 点击 File > Save File As… 或者直接点击工具栏中的保存按钮,将流程保存到你喜欢的位置,命名为 payment.bpmn

到此第一部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-1

3.用java或NodeJS实现外部任务

在完成上面流程的编辑后,现在实现“刷卡付款”的业务逻辑

Camunda 可以使多种语言实现业务逻辑,本文将演示java和nodejs两种方式,你可以任意选择喜欢的一种

a)使用JAVA

需要JAVA1.8+,maven(有的IDE自带),IDE

使用喜欢的ide创建一个maven项目,添加maven依赖如下

    <dependencies><dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-external-task-client</artifactId><version>7.15.0</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.6.1</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency></dependencies>

编写主类,代码如下

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();// 订阅指定的外部任务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();}
}

使用ide上的运行编译运行按钮运行

如果正常运行,则可以进入下一章了

到此第二部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-2a

b)使用NodeJS

需要NodeJS >= v10

首先创建一个新的NodeJS项目

mkdir charge-card-worker
cd ./charge-card-worker
npm init -y

添加Camunda外部任务依赖

npm install camunda-external-task-client-js
npm install -D open

新建一个 JavaScript 文件,命名为 worker.js,代码如下

const { Client, logger } = require('camunda-external-task-client-js');
const open = require('open');// 外部任务客户端的配置:
//  - 'baseUrl': 流程引擎的url
//  - 'logger': 自动记录的日志等级
//  - 'asyncResponseTimeout': 长轮询的超时时间
const config = { baseUrl: 'http://localhost:8080/engine-rest', use: logger, asyncResponseTimeout: 10000 };// 根据配置创建一个新的外部任务客户端
const client = new Client(config);// 订阅charge-card
client.subscribe('charge-card', async function({ task, taskService }) {// 将您的业务逻辑写在这// 获取流程变量const amount = task.variables.get('amount');const item = task.variables.get('item');console.log(`Charging credit card with an amount of ${amount}€ for the item '${item}'...`);open('https://docs.camunda.org/get-started/quick-start/success');// 完成任务await taskService.complete(task);
});

运行

node ./worker.js

如果正常运行,则可以进入下一章了

到此第二部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-2b

4.部署流程

下面我们将部署流程到流程引擎,然后发起流程,检查流程是否发起成功

使用 Camunda Modeler 部署流程

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

image-20210527063619110

如果收到成功提示,表示部署成功

image-20210526073534010

关于部署的更多内容可以查看 https://blog.camunda.com/post/2019/01/camunda-modeler-3.0.0-0-released/#completely-reworked-deployment-tool

使用Cockpit查看部署结果

在浏览器中打开 http://localhost:8080/camunda/app/cockpit/default/#/processes 使用账号 demo / demo 登录 ,可以看到刚部署的流程显示出来了

image-20210526074054652

创建流程实例(发起流程)

这里使用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

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

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 发送请求

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

添加人工任务

在本章中,我们会将人工任务添加进流程中,让人参与到 BPMN 2.0 流程中来。

添加人工任务节点

首先打开 Camunda Modeler ,在左侧选择任务节点(圆角矩形),将它拖入“付款请求”和“刷卡付款”之间,重命名为“批准付款”

image-20210527061005998

点击刚创建的“批准付款”节点,然后点击节点右侧出现的扳手,将节点更改为人工任务(User Task)

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

部署流程

和上一章一样,使用 Camunda Modeler 工具栏上的上传按钮将流程上传到流程引擎中

测试一下

打开任务列表(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

接下来,我们将为流程带来一些变化,仅在金额足够大的时候进行人工审核,下一章:添加网关

到此第三部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-3

添加网关

本章中,我们将使用排他网关(Exclusive Gateways),为流程添加分支,仅在金额足够大的时候进行人工审核

添加两个网关

首先打开 Camunda Modeler ,在左侧的工具架中找到网关(菱形),将它拖动到“付款请求”和“刷卡付款”之间,将“批准付款”向下移动再添加一个网关,调整流程,最后看起来类似这样:

image-20210528064839121

现在为新元素命名

image-20210528065311137

配置网关

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

image-20210528070903818

同样的,对另一条线也进行配置,表达式为${amount>=1000}

image-20210528071006747

yes的表达式是${approved}

image-20210528071237329

no的表达式是${!approved}

image-20210528071249885

部署流程

和上一章一样,使用 Camunda Modeler 工具栏上的上传按钮将流程上传到流程引擎中

测试一下

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

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

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

image-20210528072028596

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

到此第四部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-4

决策自动化

在本章中,我们将使用DMN为流程添加一个业务规则

将业务规则添加到流程中

打开 Camunda Modeler,点击 “批准付款”,在右面的扳手菜单中,将类型改为“Business Rule Task ”(业务规则任务)

image-20210528073900585

下一步,将属性面板中的 Implementation 选择为DMN

输入 Decision Refapprove-payment

为了将决策的结果存入流程变量,我们还需要编辑结果变量Result Variableapproved

结果类型 Map Decision Result 选择为 singleEntry ,最后结果如下:

image-20210528074516059

最后保存并部署到流程引擎

使用 amunda Modeler 创建DMN表

点击 File > New File > DMN Diagram 创建一个新的DMN

现在画布上已经存在一个决策元素了,选择它,然后在右侧属性面板中更改Id和Name,这里的Id需要和流程中的Decision Ref属性一致,这次我们输入Id为approve-payment

image-20210528075445291

接下来,点击决策元素左上角的表格按钮,创建新的DMN表

image-20210528075559654

编辑DMN表

首先编辑输入参数,在本例中,为了简单,我们依据项目名进行判断,规则可以使用 FEEL 表达式JUEL 或者 Script 书写,详情可以阅读DMN引擎中的表达式

双击表格中的Input,编辑第一个输入参数

Label : 项目

Expression : item

image-20210528081127492

下面,设置输入参数,双击Output编辑

Label : 是否同意

Name: approved

Type : boolean

image-20210528081536874

下面,我们点击左侧的蓝色加号,添加一些规则,最后类似这样:

image-20210528083218327

部署DMN表

点击顶部的部署按钮,将DMN部署到流程引擎中

image-20210528081952664

测试一下

现在打开 http://localhost:8080/camunda/app/cockpit/ ,使用demo/demo登录,可以看到决策定义增加了一个,点击进去可以看到刚才编辑的DMN

image-20210528082215962

接下来,打开 http://localhost:8080/camunda/app/tasklist/ ,使用demo/demo登录,点击 Start process 按钮,使用以下参数启动:

再点击一次 Start process 按钮,使用如下参数启动:

这里,我们改变了输入的 item,下面我们打开 http://localhost:8080/camunda/app/cockpit/ 点击 Decision Definitions ,可以看到刚才创建的两个流程实例,点击查看“批准付款”的决策情况

image-20210528083538709

到此第五部分结束,如果想直接获取到现在为止的进度,可以使用如下命令

git checkout -f Step-5

恭喜:你已经完成了全部的快速入门部分,想要继续学习,请前往Camunda 文档.

也可以关注我的博客 http://www.shaochenfeng.com,后续也会继续推出更多Camunda文档翻译或教程

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

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

相关文章

各学科、各专业、全系列软件图文、视频安装详细教程总贴——CM(changeMax)独家制作,汇总

各学科、各专业、全系列软件图文、视频安装详细教程总贴 你好&#xff0c;我是change max&#xff0c;本人写博客已有一个年头了。经过一年多的沉淀&#xff0c;我发现了一个现状&#xff1a; 对于各种专业性的技术贴各位的关注度不高&#xff0c;或者说&#xff0c;本人的教程…

Camtasia2023官方中文版免费下载

在现在的网络互联网时代&#xff0c;越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频&#xff0c;也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音&#xff0c;做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

【教学类-07-06】20230302《破译电话号码-图形篇(图形固定列不重复)》(三款输入版)

效果展示 1、适合中班默写学号——有姓名 有班级&#xff0c;无学号&#xff0c;适合中班幼儿 2、适合大班幼儿默写名字——有学号&#xff0c;有班级&#xff0c;无姓名&#xff0c; 适合初学者描字&#xff08;小班、中班、大班&#xff09;——名字、学号、班级都有&#xf…

Camtasia2023简体中文标准版免费更新下载

Camtasia专业的 屏幕录制和视频剪辑软件3000多万专业人士在全球范围内使用Camtasia展示产品&#xff0c;教授课程&#xff0c;培训他人&#xff0c;以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。 Camt…

不用手动编程!ChatGPT帮你轻松实现单片机按键输入功能

从今年年初&#xff0c;OpenAI发布的ChatGPT已摧古拉朽之势席卷全球&#xff0c;短短两个月注册用户数就超过1亿人&#xff0c;是全世界增长速度最快的应用。很多人都说今年是AI元年&#xff0c;其实也是有一定道理的&#xff0c;之前的AI门槛相对较高&#xff0c;很多人没有机…

通过链接跳转到微信公众号关注页面

首先你查看要操作的公众号历史文章&#xff0c;将其在PC浏览器上打开&#xff0c;将其 参数值复制下来&#xff0c;然后替换这个链接地址中的参数值即可https://mp.weixin.qq.com/mp/profile_ext?actionhome&__bizMzU1NzUzNzM4NA#wechat_redirect

微信-点链接进入公众号关注页

点链接进入公众号关注页 1.找到公众号id值biz2.拼接链接3.测试 现在的公众号引流一般都只能是二维码扫码后关注&#xff0c;那么通过点击一段网页链接怎么引导用户到公众号关注页呢&#xff1f; 1.找到公众号id值biz 进入公众号&#xff0c;点击文章&#xff1a; 复制文章链…

微信公众号消息增加跳转链接

微信公众号消息增加跳转链接 背景&#xff1a; 用户在首次关注公众号后会弹出一条欢迎消息。给这条消息增加跳转的链接&#xff0c;使得用户在点击之后可以跳转 到一个你希望用户访问的页面。 解决方案&#xff1a; 根据微信开发者文档&#xff0c;找到了3种实现方式。 1…

如何用nodejs构造一个网站爬虫

爬虫是个什么东西 英文spider&#xff0c;网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些…

平板电脑能安装java_手机上能安装的应用,平板电脑上是不是都能安装

手机上能安装的应用&#xff0c;平板电脑上是不是都能安装以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01; 手机上能安装的应用&#xff0c;平板电脑上是不是都能安装 只要是同系统的一般都行…

元宇宙与脑机接口

今天有有幸&#xff0c;读到了几篇好文&#xff0c;有如醍醐灌顶&#xff0c;让人大开眼界与思维的同时&#xff0c;感受到极深的共鸣。特此动笔写写一些感悟&#xff0c;也是纪念这许久以来&#xff0c;少有的精神上的愉悦。 这几篇文&#xff0c;链接如下&#xff1a; 人类唯…

程序员熬过中年危机的八条建议

年关将至&#xff0c;最近发完今年最后一个版本&#xff0c;周末跟几位原同事小聚&#xff0c;侃谈人生&#xff0c;顺便谈到大家境况。有人顺利晋升&#xff0c;有人无望转岗&#xff0c;也有人面临续约淘汰。实际上&#xff0c;每个人都进入冲刺阶段&#xff0c;不管是谋生、…

转载……给新人程序员的八点建议

给新人程序员的八点建议 他结合自身经历&#xff0c;对许多刚踏入程序员行列的新人程序员&#xff0c;他给出了以下八点建议 …… 今 年已经是陈皓在程序员行业里的第十个年头了。总结这十年&#xff0c;毕业的头两年&#xff0c;陈皓在银行中昏昏沉沉中度过&#xff0c;“这…

职场7个建议 轻松抛弃同龄人

点击蓝字关注&#xff0c;回复“职级”获取知名互联网公司职级定义 昨天在IT东方会平台做了一场直播&#xff0c;很多朋友提了很多职场相关的问题&#xff0c;觉得有必须总结一下这些年一些职场习惯&#xff0c;希望这些建议可以启发到你。 那现在就开始吧&#xff0c;下面从「…

2017热点推荐:成功程序员的8个习惯

对成功的渴望或许是我们与生俱来写在基因里的一部分。成功会让人幸福&#xff0c;并且几乎每个人都在争取幸福。当我们感到幸福的时候&#xff0c;我们大脑中的化学物质会迸发积极的情感&#xff0c;激励我们获取更多的成功。 成功的职业生涯通常是指规定时间内&#xff0c;发布…

这8个习惯可以改变整个人生?

1、清晰地知道你今天的工作&#xff0c;不会迷茫磨时间&#xff1b; 早上的阳光真舒服啊&#xff0c;繁闹的街区空荡荡没有几个人&#xff0c;感觉自己平白无故地&#xff0c;比别人赚到了2个小时的自由时间。 2、有充沛的精力&#xff0c;帮你高效地完成计划&#xff1b; 早…

成年后,让我快速成长的50个人生建议

1、永远对任何人保留至少30%的神秘感。 对于刚认识的人更是如此&#xff0c;跟陌生人聊几个小时就把自己全盘托出的&#xff0c;不是单纯而是傻逼&#xff0c;你越主动越卑微&#xff0c;别人越看不起你。你越有分寸&#xff0c;越有界限感&#xff0c;别人越尊重你。不卑不亢…

对自己的全面检视,写在28周岁的人生规划

一、你的个人核心价值观是什么&#xff1f; 1&#xff09;、我为什么活着&#xff1f; a.存在即合理&#xff1a;既然活着&#xff0c;就努力活着&#xff0c;活出样子来&#xff01; b.活着的需求&#xff1a;马斯洛需求层次理论。 具体为&#xff1a;生理需求/安全需求/社交…

一份来自28岁.NET老程序员的自白

写在前面 很幸运&#xff0c;28岁的我头发还没有掉光&#xff0c;更幸运的是28岁的我开始了博客园的写作生活&#xff01;这样的技术分享经历让我拓展了自己的朋友圈&#xff01;有幸结识了像张善友张队&#xff08;连续13年的微软MVP&#xff09;&#xff0c;大石头(NewLife团…

Semantic Text Matching for Long-Form Documents(长格式文档的语义文本匹配)笔记

ABSTRACT 1、大多数现有的语义文本匹配方法在此设置中取得的成功有限&#xff0c;因为它们无法从长格式文本中捕获和提取主要思想和主题。 2、提出了SMASH RNN,综合了来自不同文档结构级别的信息&#xff0c;包括段落、句子和单词。基于注意力的分层 RNN 导出每个文档结构级别…