开源、强大的工作流引擎:camunda入门介绍

2019年10月06日07:50:08 科技 1358

原创不易,请多多支持!对Java技术感兴趣的童鞋请关注我,后续技术分享更精彩。

简介

Camunda is a Java-based framework supporting BPMN for workflow and process automation, CMMN for Case Management and DMN for Business Decision Management.

重要概念

  • BPMN - Business Process Model and Notation (BPMN) is a standard for Workflow and Process Automation. Camunda supports the 2.0 version of BPMN.
  • https://docs.camunda.org/get-started/bpmn20/
  • CMMN - Case Management Model and Notation (CMMN) is a standard for Case Management. Camunda supports the 1.1 version of CMMN.
  • https://docs.camunda.org/get-started/cmmn11/
  • DMN - Decision Model and Notation (DMN) is a standard for Business Decision Management. Camunda supports the 1.1 version of DMN.
  • https://docs.camunda.org/get-started/dmn11/

工作流对比

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

关键人物介绍

Tom Baeyens - 创建了jbpm。离开JBoss后,jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官网已经推出了jBPM6的beta版本;Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。2012年末,Alfresco的Activity BPM 小组正经历一系列的转变:Tom Baeyens将不再领导Activity工程,决定离开Alfresco。camunda是Activity最大的贡献者之一(除Alfresco以外),同时也是它一个主要的执行咨询合作伙伴。camunda表示Activity可能太拘束于Alfresco对以文档为中心的工作流的需求,而忽视了Activity起步时的更为普遍的BPM平台,故而从Activiti分支建立了camunda BPM项目。

框架总览

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

流程引擎架构

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

框架示例

Camunda Tomcat 集成容器下载:

  • https://camunda.org/download/

解压tomcat,切换到目录server\apache-tomcat-8.0.24\webapps,包含以下子目录:

•Camunda -- 管理功能模块,包含admin、cockpit、tasklist

•camunda-invoice – 发票审批demo

•engine-rest – 工作流程引擎Rest API模块

•Examples – 其他demo例子

数据库创建:

切换目录sql\create\选择对应sql脚本执行

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

tomcat配置修改:

切换到server\apache-tomcat-8.0.24\conf\目录

bpm-platform.xml

camunda自有配置维护文件。

可根据具体应用场景修改以下全局配置属性

<properties>

<property name="history">full</property>

<property name="databaseSchemaUpdate">true</property>

<property name="authorizationEnabled">true</property>

<property name="jobExecutorActivate">true</property>

<property name="jobExecutorDeploymentAware">true</property>

</properties>

tomcat配置修改:

切换到server\apache-tomcat-8.0.24\conf\目录

server.xml

tomcat容器管理配置维护文件。

<Resource name="jdbc/ProcessEngine"

auth="Container"

type="javax.sql.DataSource"

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

uniqueResourceName="process-engine"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:camunda"

defaultTransactionIsolation="READ_COMMITTED"

username="camunda"

password="123456"

maxActive="20"

minIdle="5"

removeAbandoned="true"

removeAbandonedTimeout="60"

testOnBorrow="true"

validationQuery="select count(1) from dual"

logAbandoned="true"/>

应用集成

添加依赖包

compile 'org.camunda.bpm:camunda-engine:7.7.0'

compile 'org.camunda.bpm:camunda-engine-spring:7.7.0'

添加spring bean

<bean id="camundaTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="processEngineConfiguration" class="org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration">
<property name="processEngineName" value="engine" />
<property name="historyLevel" value="HISTORY_LEVEL_FULL"/>
<property name="jobExecutorDeploymentAware" value="true"/>
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="camundaTransactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="true" />
<property name="deploymentResources" value="classpath:*.bpmn" />
</bean>
<bean id="processEngine" class="org.camunda.bpm.engine.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />

modeler流程文件

将modeler设计流程模板放到应用工程resources目录或者子目录下。

用户集成方式

Camunda自有user体系

优:无需改动

缺:灵活性差,运维成本高

使用ldap用户集成

优:可和支持ldap功能对接

缺:依赖ldap功能限制

通过插件扩展用户体系

优:通过扩展能实现定制化需求

缺:对camunda熟悉,开发成本高

只使用workflow节点流转功能

优:应用灵活,可满足不同业务需求

缺:camunda部分丰富功能无法使用,可能重新开发框架存在组件

Job Executor

文档地址:https://docs.camunda.org/manual/7.7/user-guide/process-engine/the-job-executor/

Job 激活配置:<property name="jobExecutorActivate" value="true" />

job 工作架构:

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

同构集群部署:

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

异构集群部署:

支持异构集群部署,部署node设置jobExecutorDeploymentAware=true

<property name="jobExecutorDeploymentAware">true</property>

开源、强大的工作流引擎:camunda入门介绍 - 天天要闻

附录

  • engine-rest api
  • https://docs.camunda.org/manual/7.7/reference/rest/
  • Web modeler
  • http://bpmn.io/toolkit/bpmn-js/walkthrough/
  • camunda get-started
  • https://docs.camunda.org/get-started/
  • Camunda Guid
  • https://docs.camunda.org/manual/7.7/introduction/
  • LDAP Identity Service
  • https://docs.camunda.org/manual/7.7/user-guide/process-engine/identity-service/

科技分类资讯推荐

浙大教授称文科对AI前所未有地重要 - 天天要闻

浙大教授称文科对AI前所未有地重要

人工智能是当下最受瞩目的科技前沿领域,也是学生家长非常关注的王牌专业。由浙大与都市快报联合主办的“解密浙大王牌专业”系列活动第二场,近日在杭州学军中学西溪校区举行。
南方电网公司发布2024年近零碳示范区典型案例 - 天天要闻

南方电网公司发布2024年近零碳示范区典型案例

今年《政府工作报告》提出,“积极稳妥推进碳达峰碳中和”“建立一批零碳园区、零碳工厂”。近年来,南方电网公司持续提升清洁能源消纳水平和能源利用效率,因地制宜打造近零碳示范区,初步形成评价标准引领、先进技术支撑、多类型多场景覆盖的“近零碳”“零
伊利闪耀FBIF2025,以创新书写乳业新未来 - 天天要闻

伊利闪耀FBIF2025,以创新书写乳业新未来

5月8日—10日,FBIF2025食品饮料创新论坛及FBIF食品创新展在上海举行。作为全球食品行业创新的风向标,FBIF2025汇聚了众多行业精英与创新力量。伊利携最新创新技术与成果亮相,以实际行动推动消费市场的活跃与发展。消费既是经济循环的起点,也是终点,在近期世界经济波动的背景下,提振消费成为破局的关键,而高品质的供给...
集体下架一批违规微短剧!抖音、微信、淘宝、快手接连公告 - 天天要闻

集体下架一批违规微短剧!抖音、微信、淘宝、快手接连公告

近日抖音、微信、淘宝、快手等多个平台发布公告拦截、下架一批违规微短剧▼抖音5月9日,“抖音短剧”公众号发布《抖音关于打击违规微短剧的公告》称,抖音致力于打造积极、开放、友善的社区环境,持续推进微短剧内容治理,鼓励和推广优质微短剧,持续对含有
各个手机的状态栏你最喜欢哪一个? - 天天要闻

各个手机的状态栏你最喜欢哪一个?

不同的手机都有不同的特点,每个品牌的手机都是不一样的,如果说一样的话,就不会选择不同了 ,每个手机都有自己独特的设置,独特的风格,像我的话喜欢用小米和苹果多一点,对于其他的都不是特别喜欢了,苹果的话,我主要喜欢它的简约,外观也非常的简约好看
百度发布 2024 年 ESG 报告:一年为用户拦截恶意网站805亿次 - 天天要闻

百度发布 2024 年 ESG 报告:一年为用户拦截恶意网站805亿次

IT之家 5 月 10 日消息,百度昨日发布了《百度 2024 年环境、社会及管治(ESG)报告》。报告显示,2024 年,百度拦截全网各类恶意网站触达用户 805.3 亿余次,日均保障公民个人信息免遭恶意披露 27 万余次。生态治理方面,百度 2024 年清理了 596 亿余条有害信息,其中未成年人的保护被放在了优先位置。百度表示,公司设立...
魅族 Note 16 手机搭载 120Hz LCD 直屏,Pro 版搭载 144Hz 屏 - 天天要闻

魅族 Note 16 手机搭载 120Hz LCD 直屏,Pro 版搭载 144Hz 屏

IT之家 5 月 10 日消息,魅族 Note 16 系列暨 Flyme AIOS 生态发布会将于 5 月 13 日 14:30 举行,官方今日继续对新机预热。据介绍,魅族 Note16 Pro 搭载 144Hz 1.5K 高亮护眼屏,4500 nits 的局部峰值亮度,旗舰同款如然护眼技术。魅族 Note 16 搭载 120Hz 1080P 高素质 LCD
12GB 实现 128K 上下文 5 会话,IBM 预览 Granite 4.0 Tiny 模型 - 天天要闻

12GB 实现 128K 上下文 5 会话,IBM 预览 Granite 4.0 Tiny 模型

IT之家 5 月 10 日消息,IBM 本月 2 日介绍了其 Granite 4.0 系列模型中的最小版本之一:Granite 4.0 Tiny 的预览版本。Granite 4.0 Tiny Preview 的优势在于高计算效率和低内存需求:在 FP8 精度下,运行 5 个 128KB 上下文窗口的并发对话仅需 12GB 显存,一张建议零售价 329 美元(
趣睡科技李勇:智能家居产品营收占比升至41.7% - 天天要闻

趣睡科技李勇:智能家居产品营收占比升至41.7%

乐居财经 李兰 5月9日,趣睡科技(301336.SZ)举行2024年度网上业绩说明会,董事长兼总经理李勇、财务总监尤世通等出席。趣睡科技始终坚持“外包生产+互联网销售”的轻资产模式,所有产品均采取外包生产方式。李勇表示,公司自身并不直接涉及生产环节。“通过轻资产运营模式,公司更加能够发挥整合供应链的灵活优势,集中优势...