一、定义
工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
二、作用
1、企业太大时,做一件事情需要多个部门、多个人一起去合作完成,随着人员的流动,可能没有人能了解所有的流程细节,这时使用工作流来自动化的连接不同的部门和人员,简单的东西可以自动由程序来完成,每个具体的人只需要关注自己的一个工作就可以了。(流程能固化和自动化,流程是企业积累的重要资产,之前是积累到具体的人,而不是企业)
2、确定每个人的权限和责任,保证事事有人做,人人有事做(管理上更高效,减少扯皮的事情,企业最大的消耗是所谓的沟通和开会)
3、监控过程(每次修改,每个人的产出,所有的数据,流程都有记录),可以控制人员、设备、数据等方面的风险
4、减少沟通、开会成本。减少部门间,个人间扯皮的成本
三、Business Process Modeling Notation,
1、业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram),是iso标准。BPMN的主要目标就是要提供被所有业务用户理解的一套标记语言,包括业务分析者、软件开发者以及业务管理者与监察者。BPMN还将支持生成可执行的BPEL4WS语言。所以,BPMN在业务流程设计与流程实现之间搭建了一条标准化的桥梁。
BPMN定义了业务流程图,其基于流程图技术,同时为创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。
2、底层数据格式是xml。定义了一些标签的标准含义和图形表示。一方面通过图形方便所有人理解流程,另一方面限制实现方必须按着流程的要求来实现。
3、Pool:参与方,比如亚马逊公司,内部包括lane。
Lane:pool的细化,比如亚马逊内部的部门,可以嵌套
Event:用一个圆圈表示,它是流程运行过程中发生的事情。事件的发生会影响到流程的流转.事件包含Start\Intermediate\End三种类型
Activities 活动,圆角矩形,分为task, sub-process
userTask:人工操作 serviceTask:程序自动操作 mannultask:线下操作,比如发快递;callactivity,调用别的子流程
Gateway,网关,菱形,用来表示流程的分支和聚合
前后顺序,带箭头的实线。
4、排他网关(中间是×):只会走一个出的方向(xor)
并行网关(中间是+)进入时等待所有的都到达,出去时多个分支同时走(and)
包容网关(中间是圈) 允许多个分支
与uml的区别
uml:oop,面向设计和实现
bpmn:面向流程,是更高层面的操作,重点是不同部门,不同人之间的交互
与程序流程图的区别
流程图:面向指令或控制语句的粒度,属于程序逻辑实现的层面
工作流:面向一个任务,可能对应了软件里的一个系统。一般情况下,一个人就可以搞定的任务,都属于一个工作流节点,必须要换人操作时(比如需要经理的权限,需要跨部门,需要交叉复核),就必须要切分成多个工作流节点
四、Camunda
1、Camunda BPM 是一个灵活的工作流和过程自动化框架,它的核心是一个在Java虚拟机内部运行的原生BPMN2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。
2、提供的功能
流程实现和执行组件:camunda engine(负责执行BPMN 2.0流程)、REST API
流程设计组件:camunda modeler
流程操作组件(engine级别的管理后台):camunda engine、camunda cockpit
任务管理组件:camunda tasklist
前端组件:formsdk.js
五、基本概念
ProcessEngine:整个流程引擎
Multi-Tenancy:多个子公司之间的数据隔离
静态部分:
Process Definitions 流程定义,对应一个BPMN xml,内部映射为一个图结构
Keys and Versionskey是id,相同key多次提交是不同version
Suspend Process Definitions 暂时挂起,不允许执行
Process Instances 一次执行,有中断状态时,会存库,用户操作后状态往后走
Activity 一个活动(process的下一级),包括task和subprocess
Task 需要用户或系统操作的任务
runtime动态部分:
Variables 输入输出的数据
Executions执行的路径(可能是并行的流程中的一个,也可能是子流程),可以表达一个变量的范围
token state :整个执行的过程是token传递的过程
job具体调度的内容,execution的下一层,实际做的事情由jobHandler确定
核心服务
RepositoryService 存储流程定义
RuntimeService 管理运行实例,用事件来trigger流程往后走
TaskService人员需要处理的任务
IdentityService 身份验证
FormService 前端接口
HistoryService 历史数据的统处理
ManagementService 数据库操作
FilterService 筛选
ExternalTaskService 外部任务
六、开发环境
jdk + maven + tomcat + camunda + camunda modeler + eclipse
camunda引擎使用和工作流开发方式
整个环境是 java web 程序
camunda内嵌入web 容器中
预先发布restapi、admin、cockpit、tasklist等web app
每个新的流程定义一个app,并发布,内部可以实现与tasklist的交互,比如每一个usertask的form界面
mvn clean tomcat7:redeploy或mvn clean tomcat7:deploy
七、工作流程
可视化编辑bpmn(业务人员和技术人员合作)
扩展bpmn,包括添加逻辑变量、设置类型、添加表单、代码逻辑等
编写后端代码(java)并做相应配置
前端编写js和html,来处理逻辑
部署到tomcat和camunda中进行调度
根据runtime的调度来修改bug,返回到第三步,一直迭代到没有bug
八、坑
别人给过来的bpmn有各种问题,需要仔细检查,有可能有严重的逻辑错误
java代码中修改 process id,不然发布不成功
设置和修改id ,isExecutable设为true
所有分支设置default
所有非默认分支都需要添加条件
简单验证可以添加多个formfield,后面可以直接在变量里引用
内嵌中文的form 存储时存成utf-8, <html lang="zh-cmn-Hans">
js脚本中添加 debugger; 可以添加断点来调试(chrome)
INOUT映射:外部的variable与delegate内部的变量之间的名字映射
九、引擎内部实现
org.camunda.bpm.engine.impl.persistence.entity对应各个表的数据结构
org.camunda.bpm.engine.impl.db.sql.DbSqlSession 用于真正的进行sql操作
使用mybatis进行持久化
1、表模式缩写:
PROC:process
INST:instance
DEF:definition
RU:runtime
RE:repository
HI:history
GE:general
2、核心表概览:
ACT_ID_GROUP 组
ACT_ID_USER 账号
ACT_ID_MEMBERSHIP 归属关系
ACT_RU_AUTHORIZATION 资源、服务与账户、组之间的对应关系
ACT_GE_PROPERTY 系统运行时属性
ACT_GE_BYTEARRAY 字节数据
ACT_RE_DEPLOYMENT发布
ACT_RU_EXECUTION执行路径
ACT_RU_JOBruntime一个调度的单位
ACT_RU_JOBDEF 作业定义
ACT_RE_PROCDEF 流程定义,区分版本
ACT_RU_TASK一个工作流中的任务
ACT_RU_VARIABLE workflow中跨越节点的数据
ACT_RU_METER_LOG作业调度中的详细日志
ACT_HI_PROCINST 流程实例
ACT_HI_ACTINST活动实例
ACT_HI_TASKINST任务实例
ACT_HI_VARINST 变量实例
ACT_HI_DETAIL 变量的详细信息,比如a proc下,有个a1 act,之下有个a11 task,之下有个a111变量,这个变量和ACT_GE_BYTEARRAY的对应关系,类型等信息
ACT_HI_COMMENT 对某个task的评论
ACT_HI_OP_LOG 详细操作日志,比如某个人接了某个任务
3、前端
基于 "angular","jquery",实现了"camunda-commons-ui","camunda-bpm-sdk-js","angular-data-depend",方便进行模块化的ui开发。
camunda-bpm-sdk中提供CamSDK CamSDK.Client taskService(list, form)等封装
十、admin默认账号 demo/demo
act_ru_authorization
`REV_` 一直是1
`TYPE_` allow deny global(允许所有人) 这时user_id是*
`GROUP_ID_` 、`USER_ID_` 一般只会设置一个
`RESOURCE_TYPE_` 流程定义、流程实例、任务、组相关、账户授权 等各种类型
`RESOURCE_ID_` 具体的内容
`PERMS_` 权限,读。写。更新 创建等
相关推荐
为什么要建模 - 模型是易于测试的,在初期有一个可测的模型可以帮助减少试错成本,注意这里说的测试并不是指程序方面的测试. ...如果希望用它来展示组织架构,数据流,业务规则,策略,那这种想法是错误的.
### 基于Camunda源代码编译运行流程引擎 #### 一、下载Camunda源代码 在开始之前,我们首先要获取Camunda的源代码。Camunda是一个强大的业务流程管理(Business Process Management, BPM)平台,它支持业务流程...
Java Camunda工作流是一个强大的业务流程管理(BPM)框架,专为开发人员设计,用于在Java应用程序中实现复杂的业务流程。Camunda提供了一个全面的工具集,包括流程建模、执行、监控和优化,使得企业能够高效地管理和...
### jBPM4工作流开发实战 #### 一、工作流基础 在开始jBPM4的工作流开发之前,我们首先需要了解什么是工作流以及它的一些基本概念。 **1. 工作流简介:** 工作流(Workflow)是指业务过程中的一系列任务按一定...
本篇文章将深入探讨Camunda工作流开发实战中的关键知识点,并结合Spring框架的集成,为读者提供一个全面的了解。 首先,我们要理解Camunda的核心概念。Camunda是一个基于Java的工作流引擎,它提供了模型、执行和...
Camunda是一个开源的工作流和业务自动化引擎,它可以帮助开发者在应用程序中集成业务流程管理(BPM)和案例管理功能。这个"camunda-demo"压缩包很可能包含了一个完整的、可运行的示例,用于展示如何在实际环境中运用...
首先,让我们了解Camunda工作流引擎的核心概念。Camunda是基于BPMN(Business Process Model and Notation)标准的流程管理系统,它允许开发者通过图形化的方式定义业务流程,并将其与实际应用程序中的逻辑相结合。...
状态机工作流基于状态转换的概念,其中每个状态代表流程中的一个阶段,而状态之间的转换则由特定的事件或条件触发。在本例中,“抢签”和“会签”是两种不同的操作,它们可能对应于工作流中的不同状态或状态转换。 ...
流程定义是工作流开发的核心,每一份流程定义在首次被启动后,会创建对应的流程对象实例,RuntimeService通过流程定义控制流程的运行。Task是工作流定义中的每一个执行节点,任务服务(TaskService)允许用户执行...
"camunda-modeler-4.0.0-win-x64.7z" 是一个针对Windows 64位系统的Camunda工作流设计器的压缩包。Camunda工作流设计器是一款强大的工具,专为流程管理和自动化设计而打造,它允许用户通过直观的图形界面来创建、...
这个版本包含了执行Camunda流程引擎的核心组件,使得用户无需完整的应用服务器即可运行基于Camunda的工作流应用程序。以下是关于Camunda BPM Run 7.18.0的一些关键知识点: 1. **Camunda BPM系统**:Camunda BPM是...
1. Activiti:Activiti 是一个开源的工作流引擎,基于 BPMN 2.0 标准,提供了强大的图形化建模工具和丰富的API,便于开发人员集成到各种应用程序中。 2. jBPM:jBPM 是一个全面的业务流程管理系统,不仅包含工作流...
《camunda-modeler-4.1.1-mac.zip:工作流与决策自动化的利器》 在当前数字化转型的大潮中,开发人员面临着如何高效、灵活地自动化业务流程的挑战。"camunda-modeler-4.1.1-mac.zip" 是一款专为Mac用户设计的最新版...
Camunda BPM是一个开源的企业级工作流和业务自动化平台,它为开发人员提供了强大的工具来设计、部署和执行业务流程。 此压缩包包含了运行Camunda BPM Run所需的核心组件,包括启动和关闭脚本(start.bat和shutdown....
1. Activiti: Activiti 是一个开源的工作流引擎,基于BPMN 2.0标准,提供图形化建模工具,可设计复杂的工作流。它支持Spring集成,易于集成到现有Java应用中,且具有丰富的API和社区支持。 2. jBPM:jBPM 是一个...
(在带有Java的Camunda上).zip”指的是一个使用Java编程语言,并基于Camunda工作流引擎开发的工具,该工具旨在支持软件开发过程中的业务流程(BP)可追溯性。软件可追溯性是软件工程中的一个重要概念,它涉及追踪...
Camunda BPM 是一个全面的企业级工作流和决策管理平台,专为现代应用程序设计。这个开源系统致力于帮助企业高效地执行、管理和优化业务流程。它不仅是一个流程引擎,还是一个应用框架,允许开发人员构建流程驱动的...
Camunda 模型器是一款强大的工作流建模工具,它允许用户创建、编辑和管理基于 BPMN(Business Process Model and Notation)标准的工作流程。这个工具提供了直观的图形界面,让业务流程的设计变得简单易懂,尤其适合...