`
eric_weitm
  • 浏览: 242721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于camunda的工作流开发

 
阅读更多

一、定义

工作流(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流程自动化.pdf

    为什么要建模 - 模型是易于测试的,在初期有一个可测的模型可以帮助减少试错成本,注意这里说的测试并不是指程序方面的测试. ...如果希望用它来展示组织架构,数据流,业务规则,策略,那这种想法是错误的.

    基于camunda源代码编译运行流程引擎

    ### 基于Camunda源代码编译运行流程引擎 #### 一、下载Camunda源代码 在开始之前,我们首先要获取Camunda的源代码。Camunda是一个强大的业务流程管理(Business Process Management, BPM)平台,它支持业务流程...

    java-Camunda 工作流.zip

    Java Camunda工作流是一个强大的业务流程管理(BPM)框架,专为开发人员设计,用于在Java应用程序中实现复杂的业务流程。Camunda提供了一个全面的工具集,包括流程建模、执行、监控和优化,使得企业能够高效地管理和...

    jBPM4工作流开发实战

    ### jBPM4工作流开发实战 #### 一、工作流基础 在开始jBPM4的工作流开发之前,我们首先需要了解什么是工作流以及它的一些基本概念。 **1. 工作流简介:** 工作流(Workflow)是指业务过程中的一系列任务按一定...

    Camunda 完整 工作流开发实战 电子分享

    本篇文章将深入探讨Camunda工作流开发实战中的关键知识点,并结合Spring框架的集成,为读者提供一个全面的了解。 首先,我们要理解Camunda的核心概念。Camunda是一个基于Java的工作流引擎,它提供了模型、执行和...

    camunda-demo

    Camunda是一个开源的工作流和业务自动化引擎,它可以帮助开发者在应用程序中集成业务流程管理(BPM)和案例管理功能。这个"camunda-demo"压缩包很可能包含了一个完整的、可运行的示例,用于展示如何在实际环境中运用...

    camunda7.17视频课程源码分享

    首先,让我们了解Camunda工作流引擎的核心概念。Camunda是基于BPMN(Business Process Model and Notation)标准的流程管理系统,它允许开发者通过图形化的方式定义业务流程,并将其与实际应用程序中的逻辑相结合。...

    编写的一个状态机工作流例子,实现抢签与会签功能!

    状态机工作流基于状态转换的概念,其中每个状态代表流程中的一个阶段,而状态之间的转换则由特定的事件或条件触发。在本例中,“抢签”和“会签”是两种不同的操作,它们可能对应于工作流中的不同状态或状态转换。 ...

    基于Activiti的工作流开发.pdf

    流程定义是工作流开发的核心,每一份流程定义在首次被启动后,会创建对应的流程对象实例,RuntimeService通过流程定义控制流程的运行。Task是工作流定义中的每一个执行节点,任务服务(TaskService)允许用户执行...

    camunda-modeler-4.0.0-win-x64.7z

    "camunda-modeler-4.0.0-win-x64.7z" 是一个针对Windows 64位系统的Camunda工作流设计器的压缩包。Camunda工作流设计器是一款强大的工具,专为流程管理和自动化设计而打造,它允许用户通过直观的图形界面来创建、...

    camunda-bpm-run-7.18.0.zip

    这个版本包含了执行Camunda流程引擎的核心组件,使得用户无需完整的应用服务器即可运行基于Camunda的工作流应用程序。以下是关于Camunda BPM Run 7.18.0的一些关键知识点: 1. **Camunda BPM系统**:Camunda BPM是...

    Java工作流源码

    1. Activiti:Activiti 是一个开源的工作流引擎,基于 BPMN 2.0 标准,提供了强大的图形化建模工具和丰富的API,便于开发人员集成到各种应用程序中。 2. jBPM:jBPM 是一个全面的业务流程管理系统,不仅包含工作流...

    【最新版】camunda-modeler-4.1.1-mac.zip【亲测可用】最好的工作流和决策自动化工具

    《camunda-modeler-4.1.1-mac.zip:工作流与决策自动化的利器》 在当前数字化转型的大潮中,开发人员面临着如何高效、灵活地自动化业务流程的挑战。"camunda-modeler-4.1.1-mac.zip" 是一款专为Mac用户设计的最新版...

    camunda-bpm-run-7.20.0

    Camunda BPM是一个开源的企业级工作流和业务自动化平台,它为开发人员提供了强大的工具来设计、部署和执行业务流程。 此压缩包包含了运行Camunda BPM Run所需的核心组件,包括启动和关闭脚本(start.bat和shutdown....

    Java实现工作流技术简介

    1. Activiti: Activiti 是一个开源的工作流引擎,基于BPMN 2.0标准,提供图形化建模工具,可设计复杂的工作流。它支持Spring集成,易于集成到现有Java应用中,且具有丰富的API和社区支持。 2. jBPM:jBPM 是一个...

    用于实现基于BP的软件可追溯性框架的工具。(在带有Java的Camunda上).zip

    (在带有Java的Camunda上).zip”指的是一个使用Java编程语言,并基于Camunda工作流引擎开发的工具,该工具旨在支持软件开发过程中的业务流程(BP)可追溯性。软件可追溯性是软件工程中的一个重要概念,它涉及追踪...

    Camunda BPM

    Camunda BPM 是一个全面的企业级工作流和决策管理平台,专为现代应用程序设计。这个开源系统致力于帮助企业高效地执行、管理和优化业务流程。它不仅是一个流程引擎,还是一个应用框架,允许开发人员构建流程驱动的...

    camunda-modeler-5.0.0-win-x64

    Camunda 模型器是一款强大的工作流建模工具,它允许用户创建、编辑和管理基于 BPMN(Business Process Model and Notation)标准的工作流程。这个工具提供了直观的图形界面,让业务流程的设计变得简单易懂,尤其适合...

Global site tag (gtag.js) - Google Analytics