Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。 本篇文章我们仅考虑BPMN流程引擎,先不涉及CMMN和DMN引擎。就流程引擎而言,Camunda是一个灵活的工作流框架,它的核心是一个在Java虚拟机内部运行的原生BPMN2。0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。Camunda与JavaEE集成,并可以与SpringFramework和SpringBoot完美匹配。一、Camunda的总体架构 CamundaBPMS到底包括哪些功能,我们拿官方的一张架构图进行解读分析。 1。从BPM应用维度看 Camunda分为流程设计和流程运行两个阶段,见图中最下方的蓝色大箭头,Model和Execute,按照这两个阶段,Camunda划分为两大部分功能,对应设计阶段的功能有Modeler,对应运行阶段的功能有Engine、TaskList、Cockpit、Admin。 2。从BPM功能维度看 Camunda包括了流程设计器(Modeler)、流程引擎(Engine)、API接口(RESTJavaAPI)、任务列表(TaskList)、流程管理控制台(Cockpit)、系统管理工具(Admin)。在Camunda商业产品中还包括了流程监控预警工具(Optimize)、流程协同设计工具(Cawemo)。这里重点先说一下Camunda流程设计器,支持两种模式,一种是富客户端的流程建模工具CamundaModeler,需要在客户端安装;另一种是基于浏览器的流程设计器bpmn。io,这两款软件均开源。 3。从BPM角色维度看 Camunda分为业务分析师、流程开发工程师、最终用户、流程管理员、系统管理员这几个角色,每个角色对应BPMS不同的功能。业务分析师、流程开发工程师使用流程设计器(Modeler)进行流程建模,最终用户使用任务列表(TaskList)进行流程发起和审批,流程管理员使用流程管理控制台(Cockpit)进行流程管理,比如流程暂停恢复、流程异常干预等,系统管理员使用系统管理工具(Admin)进行系统管理,比如组织用户管理、权限管理等。 二、Camunda的集成能力 1。支持与Spring框架集成 Camunda支持与spring框架集成,把camundaenginespring框架引入到项目的maven模块内,它可以与Spring3、4或5版本一起使用,具体集成过程后面有文章单独介绍。 2。支持与springboot集成 后面文章专题介绍 3。支持与CDIandJavaEE集成 CDI(ContextandDependencyInjection)是JavaEE6的标准和依赖注入,Camunda通过camundaenginecdi模块集成可利用camunda引擎的配置和cdi的可扩展性。 4。支持与RuntimeContainer集成 支持与tomcat、JBoss等常见的运行容器集成。 三、Camunda支持的部署架构 CamundaBPM是一个灵活的框架,支持嵌入式、分布式、集群等多种部署模式。 1。嵌入式部署 流程引擎以Jar包方式添加到应用程序中,通过这种方式,可以在应用程序生命周期中轻松启动和停止流程引擎。 2。基于web容器启动,多应用共享 流程引擎在运行时容器(Servlet容器、应用程序服务器等)中启动,流程引擎作为容器服务提供,可以由容器内部署的所有应用程序共享。这种方式在实际应用场景中不多见。 3。独立部署,多应用共享 在这种情况下,流程引擎独立部署,通过网络提供服务,网络上运行的不同应用程序可以通过远程通信通道与进程引擎交互,远程访问流程引擎的最简单方法是使用内置的REST服务接口。在企业级流程中心部署架构中,这是一种最常见的部署模式,在现在的微服务部署架构中,也可以采取这种方式。 4。集群部署 为了提供扩展或故障转移功能,流程引擎可以分布到集群中的不同节点,每个流程引擎实例都必须连接到共享数据库。CamundaBPM不提供现成的负载平衡功能,可以采用nginx等第三方负载均衡软件实现。四、Camunda依赖的第三方类库 本文介绍了第三方库及其在Camunda中的使用。对于Camunda的每个组件,都列出了第三方库。对于每个库,都解释了该库是必需的依赖项还是可选的依赖项。必需的依赖是Camunda提供核心功能所依赖的库。在下面的列表中标记为(RequiredDependency)。可选的依赖项是可以与Camunda集成的库。在下面的列表中标记为(可选依赖项)。 以下是Camunda7。15版本依赖得第三方类库: 1、ProcessEngine 流程引擎依赖于以下第三方类库: MyBatismappingframework(RequiredDependency)forobjectrelationalmapping。 JodaTime(RequiredDependency)forparsingdateformats。 JavaUuidGenerator(JUG)(OptionalDependency)IdGenerator。SeethedocumentationonIdGenerators SLF4J(RequiredDependency)LoggingFacade 此外,流程引擎还可以集成: ApacheCommonsEmail(OptionalDependency)formailtasksupport。 SpringFrameworkSpringBeans(OptionalDependency)forconfigurationusingcamunda。cfg。xml。 SpringFrameworkSpringCore(OptionalDependency)forconfigurationusingcamunda。cfg。xml。 SpringFrameworkSpringASM(OptionalDependency)forconfigurationusingcamunda。cfg。xml。 Groovy(OptionalDependency)forgroovyscripttasksupport。 Jython(OptionalDependency)forPythonscripttasksupport。 JRuby(OptionalDependency)forRubyscripttasksupport。 Freemarker(OptionalDependency)forfreemarkertemplateenginesupport。 ApacheVelocity(OptionalDependency)forapachevelocitytemplateenginesupport。 SAXON(OptionalDependency)forXSLTandXQuerytemplateenginesupport。 2、RESTAPI RESTAPI依赖于以下第三方库: JacksonJAXRS(RequiredDependency)providerforJSONcontenttype ApacheCommonsFileUpload(RequiredDependency) 此外,当使用ApacheTomcat时: RESTEasy(RequiredDependency) 3、SpringSupport Spring支持可以与以下第三方库集成: ApacheCommonsDBCP(OptionalDependency) SpringFrameworkSpringBeans(OptionalDependency) SpringFrameworkSpringCore(OptionalDependency) SpringFrameworkSpringASM(OptionalDependency) SpringFrameworkSpringContext(OptionalDependency) SpringFrameworkSpringJDBC(OptionalDependency) SpringFrameworkSpringORM(OptionalDependency) SpringFrameworkSpringTX(OptionalDependency) 4、CamundaSpin CamundaSpin依赖于以下第三方库: JacksonJson(RequiredDependency)forJsonDataformatSupport 此外,CamundaSpin可以与以下库集成: JaywayJsonPath(OptionalDependency)forJsonPathSupport 5、CamundaConnect CamundaConnect依赖于以下第三方库: ApacheHttpComponents(RequiredDependency)forRESTandSOAPsupport。 五、Camunda支持的开发运行环境 1、支持的Java开发环境 Java版本:891011121314 Springboot版本:2。3。x。RELEASE 2、支持的Java运行环境 OracleJDK891011121314 IBMJDK8(withJ9JVM) OpenJDK891011121314 3、支持的数据库软件 MySQL5。65。7 MariaDB10。010。210。3 Oracle11g12c18c19c IBMDB210。511。1 PostgreSQL9。49。610。410。711。111。212。2 MicrosoftSQLServer2012201420162017 H21。4 4、支持的应用服务器 ApacheTomcat7。08。09。0 JBossEAP6。47。07。17。2 WildflyApplicationServer10。1 IBMWebSphereApplicationServer8。59。0企业版 OracleWebLogicServer12c(12R2)企业版 5、支持的浏览器 GoogleChrome MozillaFirefox MicrosoftEdge 6、流程设计器支持的操作系统 Windows710 MacOSX10。11 UbuntuLTS