开源流程引擎Camunda

简介: 开源流程引擎Camunda

开源流程引擎Camunda

1.简介

Camunda是一个轻量级的商业流程开源平台,是一种基于Java的框架,持久层采用Mybatis,可以内嵌集成到Java应用、SpringBooot应用中,也可以独立运行,其支持BPMN,用于工作流和过程自动化;CMMN,用于案例管理;DMN,用于业务决策管理,是一款优秀的开源流程引擎。

与它同类型的流程引擎有jbpmactivitiflowable,但与Camunda相比,Camunda性能和稳定性都表现较好,更轻量级,有人做过相关测试,camunda性能比flowable提升最小10%,最大39%,而且camunda无报错,flowable有报错,camunda在高并发场景下稳定性更好。

下图显示了最重要的组件以及一些典型的用户角色,图片来自官网

分别介绍下核心组件的作用

1.       Modeler - 独立安装的建模器(windowslinuxmac),支持BPMN 2.0CMMN 1.1DMN 1.3建模,具体实现集成开源框架https://bpmn.io/

2.       Process Engine - 流程引擎,集成到应用中的Java包,用于执行BPMNCMMNDMN

3.       Web Applicatons - web管理平台(支持独立启动(linuxwindows)和集成到SpringBoot启动,支持集群部署(SharedDB、需自定义LBSessionState))

l  REST API - 提供process engine相关处理接口

l  Cockpit - 管理流程process及流程实例process instances

l  Tasklist - 管理流程process中的具体任务task(导航到具体task、提供表单form输入、修复流程实例等)

l  Admin - 管理用户users、组织group、授权authorizations

2.  特点

1、支持外部任务(External Task

2、支持任意节点的跳转

3、支持重启(Restart)已经关闭的流程实例

4、支持流程实例的迁移

5、支持批量操作的 API

6、流程图绘制工具有桌面版本

7、定时节点

8、网关节点

9、消息接收节点

10、执行监听器

3.  快速开始

3.1.下载和安装

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

环境需要java1.8以上

第一步下载安装Camunda BPM平台,下载地址是https://camunda.com/download/

点击下载,压缩包下载后解压到一个目录

Windows环境点击start.bat启动,linux环境运行start.sh

启动好后,访问http://localhost:8080/camunda-welcome/index.html就可以愉快的玩耍了,默认用户名和密码是:demo/demo,界面如下

 

接下来我们下载Camunda Modeler,是同一个下载页面,

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

下载后解压即可使用,点击Camunda Modeler.exe,界面如下

2个安装好后,就可以去编辑执行你的第一个流程了

3.2.编辑流程

接下来我们使用Camunda Modeler创建第一个BPMN 2.0流程,并执行一些自动任务

使用建模器绘制一个简单的流程图

最后把流程保存到一个位置,并且命名

使用java代码进行测试

创建一个普通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>

Java代码

package org.camunda.bpm.getstarted.chargecard;

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) // 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 = externalTask.getVariable("item");

          Integer amount = 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();

          }

 

          // Complete the task

          externalTaskService.complete(externalTask);

        })

        .open();

  }}

 

运行即可

3.3.部署流程

接下来部署流程到流程引擎,然后发起流程,检查流程是否发起成功

部署流程

部署成功后左下角会有一个提示信息,可以使用Cockpit监控查看部署流程情况

接下来使用postman测试一下

发起一个post请求,

地址为http://localhost:8080/engine-rest/process-definition/key/my-payment/start

参数为json格式

{

    "variables": {

        "amount": {

            "value":555,

            "type":"long"

        },

        "item": {

            "value": "item-xyz"

        }

    }

}

在之前跑的java程序,控制台上也能看到信息

3.4.添加人工任务

接下来配置人工任务,选中批准付款节点,点击右侧用户分配,分配给demo用户

在人工任务中配置基本表单,选中付款节点,点击forms进行如下配置

Type: Camunda Forms

Form Ref: payment-form

Binding: deployment

需要创建一个新的form名字为payment.formidpayment-form待会关联起来,

接下来就可以拖拽组件,创建3个字段分别为金额,项目,是否同意

字段1  Type: Number  Key: amount  Field Label: Amount

字段2  Type: Text Field  Key: item  Field Label: item

字段3  Type: Checkbox  Key: approved  Field Label:approved

之后点击start process,选择付款流程,之后开启流程后可以在Tasklisthttp://localhost:8080/camunda/app/tasklist/看到,选中刚才的批准付款节点可以看到添加的表单

3.5.添加网关

接下来给流程图添加网关

接下来配置网关,选择连线配置条件,其中注意一下是和否的表达式不一样,是就是${approved},否就是${!approved}

接下来的流程跟之前是一样的,只是可以添加变量来测试动态的流程

 

 

3.6.决策自动化

接下来使用DMN给流程添加一个业务规则

首先将业务规则添加到流程中

接下来新建一个DMN表格,id命名为approve-payment,一定要跟之前引用保持一致

之后点击表格编辑DMN表,设置输入和输出参数

双击Input或者Output配置输入输出参数

最后设置的表格长这个样子

最后点击部署按钮进行部署,之后在http://localhost:8080/camunda/app/cockpit/

点击Decisions就可以看到了

接下来可以开启流程去测试一下,地址http://localhost:8080/camunda/app/tasklist/

到此为止,入门案例就已经完成了,后续还可以集成到springboot中去,使用也非常简单

使用注解就行

 

 

 

 

 

 

 

 

相关文章
|
XML 数据格式
Camunda常用功能
Camunda常用接口简介
4001 1
Camunda常用功能
|
1月前
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
173 0
|
6月前
|
存储 监控 测试技术
三大工作流引擎技术Activiti、Camunda、Flowable选型指南
三大工作流引擎技术Activiti、Camunda、Flowable选型指南
|
前端开发
基于Camunda的开源项目
基于Camunda实现基本功能以及中国式审批流程相关功能
621 0
基于Camunda的开源项目
|
监控 数据可视化 Java
高效流程引擎:深入探索 Activiti 工作流引擎
在现代的企业环境中,业务流程的自动化和优化变得越来越重要。Activiti,作为一款轻量级、可嵌入的工作流引擎,为企业提供了一种高效的方式来管理和执行各种业务流程。本文将为您详细介绍 Activiti 的核心概念、特性以及在业务流程管理中的应用。
576 0
|
SQL Java 关系型数据库
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
209 0
|
监控 数据可视化 Java
灵活轻巧的工作流引擎:探索 Flowable
在现代的企业环境中,业务流程的自动化和优化变得愈发重要。Flowable,作为一款开源、灵活、轻巧的工作流引擎,为企业提供了一种高效的方式来管理和执行各种业务流程。本文将为您详细介绍 Flowable 的核心概念、特性以及在业务流程管理中的应用。
503 0
|
缓存 前端开发 数据可视化
【BPM架构】Camunda BPM 最佳实践
【BPM架构】Camunda BPM 最佳实践
|
消息中间件 供应链 JavaScript
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)
|
XML Java API
万字详解:Activiti 工作流引擎(二)
万字详解:Activiti 工作流引擎(二)
万字详解:Activiti 工作流引擎(二)