首页 > 其他分享 >Camunda

Camunda

时间:2024-04-19 15:35:35浏览次数:32  
标签:bpm spring 流程 boot org Camunda camunda

Camunda

简介

Camunda是一个工作流引擎,执行Bpmn2.0标准。与它同类型的流程引擎有jbpm、activiti、flowable,但与Camunda相比,Camunda性能和稳定性都表现较好,更轻量级。

Camunda包括:流程设计器(Modeler)、流程引擎(Engine)、API接口(REST/Java API)、任务列表(TaskList)、流程管理控制台(Cockpit)、系统管理工具(Admin)。

详细介绍参考博客:https://blog.csdn.net/qq_41468822/article/details/135343266

示例demo下载: https://github.com/caohuajin/spring-boot-camunda.git

架构图

camunda整体架构如下图所示,主要包括两部分:流程建模工具(modeler)和流程引擎(Engine)。业务分析与开发人员(Business Analyst/Developer)通过modeler设计业务流程,将结果存入repository中,业务分析与开发人员一般不需要懂开发。流程引擎则负责流程实例的创建、执行、维护和管理,并通过REST/Java API向用户提供服务,基于这些API,流程用户(End User)通过Tasklist工具参与流程的执行,运维人员(operator)通过Cockpit工具查看、管理和维护流程的状态,管理人员(administrator)通过Admin工具进行用户的权限管理。当然,我们也可以基于REST/Java API开发自己的相应工具。通过下面的实例展示可知,camunda提供的tasklist、cockpit、admin工具非常有可能不是很符合你们团队的需求,需要自己开发部分功能。

BPMN概念

BPMN(Business Process Model and Notation)是一种用于描述业务流程的图形化标准。它提供了一种统一的方法来表示业务过程,使得业务分析师、业务用户和技术人员之间可以更好地沟通和理解业务流程。

以下是 BPMN 中的一些主要概念:

  1. 流程(Process):流程是指业务中的一系列活动或任务,以实现特定的业务目标。在 BPMN 中,流程可以被建模成各种形式,包括业务流程、子流程和协作流程等。
  2. 活动(Activity):活动是流程中的基本单元,代表执行的任务或操作。活动可以是一个简单的任务,也可以是一个复杂的子流程。
  3. 事件(Event):事件是流程中的状态变化,可以触发或影响流程的执行。例如,开始事件表示流程的开始,结束事件表示流程的结束,中间事件表示在流程执行过程中发生的中间状态。
  4. 网关(Gateway):网关用于控制流程的分支、合并和路由。根据条件,网关可以决定流程的执行路径。
  5. 序列流(Sequence Flow):序列流表示流程中活动之间的顺序关系,指示流程执行的方向。
  6. 数据对象(Data Object):数据对象表示流程中使用的数据或信息。它可以是输入、输出或中间数据,用于支持流程的执行。
  7. 泳道(Swimlane):泳道用于组织流程中的活动,可以按角色、部门或其他组织方式进行划分。泳道提供了对流程执行者的可视化描述。

BPMN 的这些概念可以帮助用户以图形化的方式清晰地描述业务流程,从而更好地进行流程分析、优化和执行。

Camunda Modeler

用于创建、编辑和管理流程模型的软件工具。下载地址:https://camunda.com/download/modeler/

集成Spring boot

配置环境:

  • jdk 17
  • mysql latest
  • camunda-bpm-spring-boot-starter 7.20.0
  • spring-boot-starter-parent 3.2.3

application.yaml

spring:
  application:
    name: camunda-demo
  jersey:
    application-path: /engine-rest
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/camunda_demo?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useOldAliasMetadataBehavior=true
    username: root
    password: root
camunda.bpm:
  generic-properties:
    properties:
      enforceHistoryTimeToLive: false
  admin-user:
    id: demo
    password: demo
    firstName: Demo
  filter:
    create: All tasks
  database:
    type: mysql
server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

maven的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>guru.springframework</groupId>
    <artifactId>spring-boot-camunda</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <name>spring-boot-camunda</name>
    <description>Demo project for Spring Boot and Camunda</description>

    <properties>
        <camunda.spring-boot.version>7.20.0</camunda.spring-boot.version>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter</artifactId>
            <version>${camunda.spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
            <version>${camunda.spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
            <version>${camunda.spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.extension.swagger</groupId>
            <artifactId>camunda-bpm-swagger-json</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>swagger-ui</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>
</project>

常用web地址

使用示例

基于JavaDelegate配置Camunda 的自动化服务节点

示例代码:

package guru.springframework.services.process;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;

public class TestDelegate implements JavaDelegate {
    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        System.out.println("TestDelegate: " + delegateExecution.getProcessInstanceId());
    }
}

Modeler配置:

基于ExecutionListener监听整个流程执行过程中的事件

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.ExecutionListener;

public class AmountApprovalDecisionListener implements ExecutionListener {
    
    @Override
    public void notify(DelegateExecution execution) throws Exception {
        double amount = (double) execution.getVariable("amount");
        execution.setVariable("amount", amount);
    }
}

标签:bpm,spring,流程,boot,org,Camunda,camunda
From: https://www.cnblogs.com/caohuajin/p/18145960

相关文章

  • 【Camunda】SpringBoot优雅集成Camunda 7工作流引擎,保姆级教程!
    From: https://mp.weixin.qq.com/s/lZmIucZYzqqwjBCtDAL9WA前言项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了Camunda7,关于Camunda以及Activity等其他工作流引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置概念流程......
  • Camunda问题:src-resolve: Cannot resolve the name ‘extension‘ to a(n) ‘element
    问题描述今天,小伙伴在使用云程低代码平台创建流程模板时,出现了报错,如下图:后台堆栈信息如下:ENGINE-16004Exceptionwhileclosingcommandcontext:ENGINE-09005CouldnotparseBPMNprocess.Errors:*src-resolve:Cannotresolvethename'extension'toa(n)'ele......
  • 开源流程引擎三巨头:activiti、flowable、camunda,最推荐使用哪个?
    From: https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247551521市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它......
  • [技术选型与调研] 流程引擎/工作流引擎:Activiti、Flowable、Camunda
    1概述:流程与流程引擎低代码平台、办公自动化(OA)、BPM平台、工作流系统均需要流程引擎功能【工作流引擎的三大功能】1)验证当前过程状态:在给定当前状态的情况下,检查是否有效执行任务。2)确定用户权限:检查是否允许当前用户执行任务。3)执行条件脚本:经过前两个步骤后,工作流引擎......
  • Spring Boot2 集成 Camunda7 -(1)
    Camunda是基于JAVA语言开发的工作流引擎。Camunda流程引擎分社区版和企业版,社区版实际上是开源版,是Apache2.0协议,企业版实际上是商业收费版本,需要购买授权才能使用。目前Camunda7和8版本并行更新,国内需要私有化部署流程引擎的用户建议选择camunda7,大部分组件开源,可免费使用,技术......
  • SpringBoot整合 Camunda 流程引擎
    目录1整合Camunda流程引擎1.1简介1.1.1概念介绍1.1.2组件介绍1.2Springboot集成1.2.1pom.xml1.2.2配置文件1.2.3数据库1.2.4登录界面1.3绘制流程图1.3.1下载安装1.3.2绘制1.3.2.1任务分类1.3.2.2网关1.3.2.3指定key1.3.3集成在idea中1.3.4引入项目测试1整合......
  • Activiti、Flowable和Camunda选型和对比
    选型的几个标准:社区活跃,至少在Github上能排上名的至少支持BPMN2协议的免费、开源根据上面的标准,目前几大工作流引擎就只有Activiti、Flowable和Camunda了,有些人会问为什么没有AirFlow相关的呢?很明显,AirFlow属于编排类流程引擎,跟工作流没太大关系,他们的共同点就是流程控......
  • Camunda 自定义模型图后 流程节点叠在一起怎么查看
    简单写一下 后面详细补充   根据这个sql语句可以把乱码的数据转码过来SELECTcast(BYTES_ASCHAR)ASBYTES_FROM`act_ge_bytearray`WHEREID_='e4e532d0-c146-11ec-b630-18f22c5016b2'; 把转码后的xml放到CamundaModeler客户端编辑器里面去  ......
  • .NET 使用Camunda快速入门
    简介参考:https://www.cnblogs.com/lvdeyinBlog/p/16095603.html 一.工作流介绍1.什么是工作流工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流将一套大的业务逻辑分解成业务逻辑段,并统一控制这些业务逻辑段的执行条件,执行顺序以及相互通信......
  • camunda工作流实战项目(表单设计器+流程编辑器,零代码创建流程)
    一、整体情况介绍基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设计器,实现常规流程零代码创建。具备流程中心的能力,支持外部任务,可协调多个业务系统协同工作具备SaaS平台的能力,支持多租户,各业务系统可作为租户,创建自己的流程,通过外部任务与自身业务......