流程引擎设计方案

2023-03-04 23:19:16 来源:网络

流程引擎设计方案

开源流程引擎Camunda技术架构

Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。

本篇文章我们仅考虑BPMN流程引擎,先不涉及CMMN和DMN引擎。就流程引擎而言,Camunda是一个灵活的工作流框架,它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。Camunda与Java EE 集成,并可以与Spring Framework和Spring Boot完美匹配。

Camunda BPMS到底包括哪些功能,我们拿官方的一张架构图进行解读分析。

1.从BPM应用维度看

Camunda分为流程设计和流程运行两个阶段,见图中最下方的蓝色大箭头,Model和Execute,按照这两个阶段,Camunda划分为两大部分功能,对应设计阶段的功能有 Modeler,对应运行阶段的功能有Engine、TaskList、Cockpit、Admin。

2.从BPM功能维度看

Camunda包括了流程设计器(Modeler)、流程引擎(Engine)、API接口(REST/Java API)、任务列表(TaskList)、流程管理控制台(Cockpit)、系统管理工具(Admin)。在Camunda商业产品中还包括了流程监控预警工具(Optimize)、流程协同设计工具(Cawemo)。这里重点先说一下Camunda流程设计器,支持两种模式,一种是富客户端的流程建模工具Camunda Modeler,需要在客户端安装;另一种是基于浏览器的流程设计器bpmn.io,这两款软件均开源。

3.从BPM角色维度看

Camunda分为业务分析师、流程开发工程师、最终用户、流程管理员、系统管理员这几个角色,每个角色对应BPMS不同的功能。业务分析师、流程开发工程师使用流程设计器(Modeler)进行流程建模,最终用户使用任务列表(TaskList)进行流程发起和审批,流程管理员使用流程管理控制台(Cockpit)进行流程管理,比如流程暂停恢复、流程异常干预等,系统管理员使用系统管理工具(Admin)进行系统管理,比如组织用户管理、权限管理等。

1.支持与Spring框架集成

Camunda支持与spring框架集成,把 camunda-engine-spring框架引入到项目的maven模块内,它可以与Spring 3、4或5版本一起使用,具体集成过程后面有文章单独介绍。

2.支持与spring boot集成

后面文章专题介绍

3.支持与CDI and Java EE 集成

CDI (Context and Dependency Injection)是 Java EE6的标准和依赖注入,Camunda通过camunda-engine-cdi模块集成可利用camunda引擎的配置和cdi的可扩展性。

4.支持与Runtime Container 集成

支持与tomcat、JBoss等常见的运行容器集成。

Camunda BPM是一个灵活的框架,支持嵌入式、分布式、集群等多种部署模式。

1.嵌入式部署

流程引擎以Jar包方式添加到应用程序中,通过这种方式,可以在应用程序生命周期中轻松启动和停止流程引擎。

2.基于web容器启动,多应用共享

流程引擎在运行时容器(Servlet容器、应用程序服务器等)中启动,流程引擎作为容器服务提供,可以由容器内部署的所有应用程序共享。这种方式在实际应用场景中不多见。

3.独立部署,多应用共享

在这种情况下,流程引擎独立部署,通过网络提供服务,网络上运行的不同应用程序可以通过远程通信通道与进程引擎交互,远程访问流程引擎的最简单方法是使用内置的REST服务接口。在企业级流程中心部署架构中,这是一种最常见的部署模式,在现在的微服务部署架构中,也可以采取这种方式。

4.集群部署

为了提供扩展或故障转移功能,流程引擎可以分布到集群中的不同节点,每个流程引擎实例都必须连接到共享数据库。Camunda BPM不提供现成的负载平衡功能,可以采用nginx等第三方负载均衡软件实现。

本文介绍了第三方库及其在Camunda中的使用。对于Camunda的每个组件,都列出了第三方库。对于每个库,都解释了该库是必需的依赖项还是可选的依赖项。必需的依赖是Camunda提供核心功能所依赖的库。在下面的列表中标记为(Required Dependency)。可选的依赖项是可以与Camunda集成的库。在下面的列表中标记为(可选依赖项)。

以下是Camunda7.15版本依赖得第三方类库:

1、Process Engine

流程引擎依赖于以下第三方类库:

MyBatis mapping framework (Required Dependency) for object-relational mapping.

Joda Time (Required Dependency) for parsing date formats.

Java Uuid Generator (JUG) (Optional Dependency) Id Generator. See the documentation on Id-Generators

SLF4J (Required Dependency) Logging Facade

此外,流程引擎还可以集成:

Apache Commons Email (Optional Dependency) for mail task support.

Spring Framework Spring-Beans (Optional Dependency) for configuration using camunda.cfg.xml.

Spring Framework Spring-Core (Optional Dependency) for configuration using camunda.cfg.xml.

Spring Framework Spring-ASM (Optional Dependency) for configuration using camunda.cfg.xml.

Groovy (Optional Dependency) for groovy script task support.

Jython (Optional Dependency) for Python script task support.

JRuby (Optional Dependency) for Ruby script task support.

Freemarker (Optional Dependency) for freemarker template engine support.

Apache Velocity (Optional Dependency) for apache velocity template engine support.

SAXON (Optional Dependency) for XSLT and XQuery template engine support.

2、REST API

REST API依赖于以下第三方库:

Jackson JAX-RS (Required Dependency) provider for JSON content type

Apache Commons FileUpload (Required Dependency)

此外,当使用Apache Tomcat时:

RESTEasy (Required Dependency)

3、Spring Support

Spring支持可以与以下第三方库集成:

Apache Commons DBCP (Optional Dependency)

Spring Framework Spring-Beans (Optional Dependency)

Spring Framework Spring-Core (Optional Dependency)

Spring Framework Spring-ASM (Optional Dependency)

Spring Framework Spring-Context (Optional Dependency)

Spring Framework Spring-JDBC (Optional Dependency)

Spring Framework Spring-ORM (Optional Dependency)

Spring Framework Spring-TX (Optional Dependency)

4、Camunda Spin

Camunda Spin依赖于以下第三方库:

Jackson Json (Required Dependency) for Json Dataformat Support

此外,Camunda Spin可以与以下库集成:

Jayway Json Path (Optional Dependency) for Json Path Support

5、Camunda Connect

Camunda Connect依赖于以下第三方库:

Apache Http Components (Required Dependency) for REST and SOAP support.

1、支持的Java开发环境

• Java版本: 8 / 9 / 10 / 11 / 12 / 13 / 14

• Springboot版本: 2.3.x.RELEASE

2、支持的Java运行环境

• Oracle JDK 8 / 9 / 10 / 11 / 12 / 13 / 14

• IBM JDK 8 (with J9 JVM)

• OpenJDK 8 / 9 / 10 / 11 / 12 / 13 / 14

3、支持的数据库软件

• MySQL 5.6 / 5.7

• MariaDB 10.0 / 10.2 / 10.3

• Oracle 11g / 12c / 18c / 19c

• IBM DB2 10.5 / 11.1

• PostgreSQL 9.4 / 9.6 / 10.4 / 10.7 / 11.1 / 11.2 / 12.2

• Microsoft SQL Server 2012/2014/2016/2017

• H2 1.4

4、支持的应用服务器

• Apache Tomcat 7.0 / 8.0 / 9.0

• JBoss EAP 6.4 / 7.0 / 7.1 / 7.2

• Wildfly Application Server 10.1+

• IBM WebSphere Application Server 8.5 / 9.0 企业版

• Oracle WebLogic Server 12c (12R2) 企业版

5、支持的浏览器

• Google Chrome

• Mozilla Firefox

• Microsoft Edge

6、流程设计器支持的操作系统

• Windows 7 / 10

• Mac OS X 10.11

• Ubuntu LTS

免责声明:内容来自网络,若侵犯您的权利,请在一个月内通知我们,会及时删除

@轻流