本人初学,研究好几天,目前已经能正常运行,参考官网搭建简单流程,为了方便对比,更多资料欢迎访问官网查询获取 https://docs.camunda.org/get-started/quick-start/
声明:本文顺序和官网介绍可能不一致,若有错误地方欢迎指正避免误导
一、环境准备
jdk 1.8以上环境
拥有你的idea 本人使用 IntelliJ IDEA
JDK以及 camunda-bpm-tomcat 、 cammunda-modeler-3.5.0 下载附上百度网盘地址,下载地址链接:
链接:https://pan.baidu.com/s/1MOnNrgQ5l1GjCglTyOrBYA
提取码:oprd
若已经安装jdk环境,请直接安装camunda-bpm-tomcat-7.12.0和camunda-modeler-3.5.0-win-x64
下载后将文件解压到你的安装环境 运行
-
camunda-bpm-tomcat-7.12.0 安装请运行 camunda-bpm-tomcat-7.12.0\start-camunda.bat
-
D:\Program Files\camunda-modeler-3.5.0-win-x64 安装请运行 camunda-modeler-3.5.0-win-x64\Camunda Modeler.exe
若自动弹出并正常访问如下则表示成功
事件页面.png 工作流图.png
画工作流图
编辑技巧说明:
- 双击编辑图形文字
- 单击选择下一个流程
- 单击选择扳手图形设置图类型
流程步骤:
1、新建一个BPMN工作流 File > New File > BPMN Diagram. 双击设置名称为:Payment Retrieval Requested
image.png
2、单击第一个图,选择下一个图形为矩形,并命名为 Charge Credit Card.
3、右键矩形设置类型为 service task
image.png
4、单击矩形 选择下一个为结束 命名:Payment Received.
image.png
5、配置服务任务,请选择矩形 打开右侧配置项,设置属性值
6、设置BPMN执行属性:单击选择空白区域 图示设置属性
image.png
7、保存,直接看图操作
image.png
开始上手 编写程序
新建一个普通项目,若不知道怎么新建请参考使用IDEA创建一个spring boot web项目含前端页面
1、引入jar包 在pom文件中新增如下配置
<!--新增camunda依赖-->
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-external-task-client</artifactId>
<version>1.3.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>
2、编写测试类
import org.camunda.bpm.client.ExternalTaskClient;
import java.util.logging.Logger;
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) // long polling timeout
.build();
// subscribe to an external task topic as specified in the process
client.subscribe("charge-card")
.lockDuration(1000) // the default lock duration is 20 seconds, but you can override this
.handler((externalTask, externalTaskService) -> {
// Put your business logic here
// Get a process variable
String item = (String) externalTask.getVariable("item");
Object amountStr = externalTask.getVariable("amount");
Long amount = Long.valueOf(amountStr.toString());
LOGGER.info("Charging credit card with an amount of '" + amount + "'€ for the item '" + item + "'...");
// Complete the task
externalTaskService.complete(externalTask);
})
.open();
}
}
3、运行main方法
运行工作流
切换到 camunda modeler ,按照下图所示,运行。出现connected successfully 表示成功
image.png
访问:http://localhost:8080/camunda/app/cockpit/default/#/dashboard,用户名和密码都是demo
验证是否部署成功 记住要点deploy
image.png验证
使用postman发送请求 请设置头 : Content-Type: application/json
http://localhost:8080/engine-rest/process-definition/key/payment-retrieval/start
{
"variables": {
"amount": {
"value":555,
"type":"long"
},
"item": {
"value": "item-xyz"
}
}
}
设置请求头.png
image.png
至此,已经执行了一个简单过程
流程进阶:新增操作人
进入camunda modeler ,选择左侧的一个矩形,添加在service task (也就是矩形)前,选择矩形拖动过去即可。
image.png
设置名称为Approve Payment,右键设置类型为 User Task
设置属性
image.png
设置该任务三个属性值
选择用户流程,右面新增三个from,如下图所示
Field 1:
ID: amount
Type: long
Label: Amount
image.png
Field 2:
ID: item
Type: string
Label: Item
image.png
Field 3:
ID: approved
Type: boolean
Label: Approved?
image.png
保存,重新deploy
访问:http://localhost:8080/camunda/app/tasklist并且使用demo demo登录。
启动任务,如下图 单击右上角 start process 按钮
选择我们创建的工作流程
image.png
选择+,新增两栏,完成后点击 start 即可
image.png
此时,可以看到任务已经开始
image.png
若需要执行任务,请选择form
image.png
流程持续优化:动态化
PS:图形布局可以随意拖动
如下图所示,新增两个gateway ,并且新增线路说明流程执行顺序
image.png
双击流程工程,按照下图所示添加说明信息
image.png
单击单个流程线条,设置执行的具体条件信息如下图所示
对于<1000 €序列流,请使用{amount>=1000}
对于Yes序列流,请使用表达式{!approved}
保存 重新deploy 发布流程
访问地址: http://localhost:8080/camunda/app/tasklist
剩下操作步骤同上,点击start process 开始流程,配置属性信息
流程信息
流程自动审批
如上图所示,目前流程开始,根据不同条件已经能发送到不同序列流,但目前还未实现自动化,现在开始实现决策自动化的添加
先将 Approve payment 类型更改为 business rule task ,修改方式:单击矩形,选择扳手符号,选择Business Rule Task即可,此处没有截图,取用官网图说明
image.png
设置属性信息:在右侧,具体看图:选择DMN,命名:approve-payment, 选择latest……
保存修改,重新deploy
使用Camunda Modeler 新建表格,左上角,File > New File > DMN Table.
设置表名为Approve Payment,设置ID为 approve-payment ,请注意,这个地方的ID要和流程节点中:Decision Ref 一致,如下给出ID和需要注意一致的地方
image.png
image.png
接下来为DMN表指定输入表达式。此示例中根据商品名称来觉得是否批准付款。更多规则可以参考DMN Engine中阅读有关表达式的更多信息。
对于输入的列,使用item作为输入表达式和Item作为输入标签:
image.png
接下来,设置输出列。使用approved的输出名称,并Approved作为输出标号为“已批准”输出列:
image.png
image.png
对于一些不需要的条件列,可以右键单元格进行删除
image.png
将输出列类似改为boolean值,先单击下图右侧红框,然后选择boolean类型
image.png
通过单击DMN表左侧的加号图标,创建一些规则。我们还应该将输出列更改为数据类型boolean:
新建规则
设置规则,"item-sxy" -->true,not("item-sxy") --> false最后,我们的表格如下
image.png
部署系统信息,访问 http://localhost:8080/camunda/app/cockpit 进行验证
选择 decisions 可以看到已经更新
image.png
开始启动,此处配置多个工作流程,配置好之后点start再重新配置新的。
item不一致且金额大于1200
item一致且金额大于1200
item一致
验证:
访问地址:http://localhost:8080/camunda/app/cockpit。选择 decisions,再 选择approve-paymen,可以看我这儿一共发起4个工作流程。
image.png
入选为点击不同ID获取到的流程结果值
image.png
image.png
THE END 基础流程到此结束了
springboot 集成
请直接参考如下网盘demo,核心思想就是引入pom文件信息,编写配置,将流程图放到指定位置即可,详细信息及后续步骤年后有时间再更新。
链接:https://pan.baidu.com/s/1sswRt72Tzxamfi6VvDSfrA
提取码:qshh
网友评论