Flowable流程引擎入门

阅读数:322 评论数:0

跳转到新版页面

分类

python/Java

正文

Flowable是一个采用Java开发的业务流程引擎,通过Flowable流程引擎,我们可以部署BPMN2.0的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,等等。

可以以jar形式加入应用或服务,来嵌入引擎。

Flowable项目中包括BPMN(Business Process Model and Notation,业务流程引擎)引擎,CMMN(Case Management Model and Notation,案例模型引擎)引擎、DMN(Decision Model and Notation,决策引擎)引擎、表单引擎(Form Engine),也有许多Flowable应用。

一、简介

1、协议

flowable在apache v2协议下发布。

2、必要的软件

jdk 8

3、内部实现类

在jar文件中,所有.impl.包下的类都是实现类,只应在内部使用,实现类中的所有类或接口都不保证稳定。

4、flowable与activiti

flowable是activiti的fork。

二、与Spring Boot集成

Spring Boot提供约定大于配置,只需要项目中添加flowable-spring-boot-starter或flowable-spring-boot-starter-rest配置。

<dependency>
    <groupId>org.flowable</groupId>
    <artifactId>flowable-spring-boot-starter</artifactId>
    <version>${flowable.version}</version>
</dependency>

Flowable需要数据库来存储数据,只要添加一个数据库驱动并提供数据库URL,就可以更换数据源。例如mysql

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/flowable-spring-boot?characterEncoding=UTF-8
spring.datasource.username=flowable
spring.datasource.password=flowable



<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
</dependency>

SpringBoot启动后,所有的Flowable服务都暴露为Spring Bean,包括ProcessEngine,CmmnEngine,DmnEngine,FormEngine,ContentEngine及IdmEngine。

1、自动部署

(1)processes目录

此目录下的任何BPMN2.0流程定义都会被自动部署。

(2)cases目录

此目录下的任何CMMN1.1事例都会被自动部署。

(3)forms目录

此目录下的任何Form定义都会被自动部署。

2、REST支持

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>${spring.boot.version}</version>
</dependency>

3、配置

(1)flowable.check-process-definitions

是否需要自动部署流程定义。

(2)flowable.custom-mybatis-mappers

需要添加至引擎的自定义mybatis映射的FQN。

(3)flowable.database-schema

如果数据库返回的元数据不正确,可以在这里设置schema用于检测/生成表

(4)flowable.database-schema-update

数据库schema更新策略。

(5)flowable.db-history-used

是否要使用db历史

(6)flowable.deployment-name

自动部署的名称。

(7)flowable.history-level

要使用的历史级别。

(8)flowable.process-definition-location-prefix=classpath*:/processes/

自动部署时查找流程的目录。

(9)flowable.process-definition-cache-limit=-1

流程定义缓存中保存深沟高垒 程定义的最大数量。默认值为-1(缓存所有流程定义)。

(10)flowable.process.enable-safe-xml

在解析bpmn xml文件时进行额外检查。部分无法使用这个功能的平台需要禁用这个功能。

(11)flowable.process.servlet.load-on-startup=-1

启动时加载Process servlet.

(12)flowable.process.servlet.name

Process servlet的名字。

(13)flowable.process.servlet.path

process servlet的context path。

(14)flowable.process.async-executor-activate

是否启用异步执行器。

(15)flowable.process.async.executor.default-async-job-acquire-wait-time-in-millis

异步作业获取线程在进行下次获取查询前的等待时间(以毫秒计)。只在当次没有取到新的异步作业,或者只取到很少的异步作业时生效。默认值=10s。

(16)flowable.process.async.executor.default-queue-size-full-wait-time-in-millis

异步作业获取线程在队列满时,等待执行下次查询的等待时间(以毫秒计),默认值 为0.

(17)flowable.process.async.executor.default-timer-job-acquire-wait-time-in-millis

定时器作业获取线程在进行下次获取查询前的等待时间(以毫秒计)。只在当次没有取到新定时器作业,或者只取到很少的定时器作业时生效,默认10秒。

(18)flowable.process.async.executor.max-async-jobs-due-per-acquisition

单次查询的异步作业的数量,默认值为1,以降低乐观锁异常的可能性。

(19)flowable.process.async.executor.timer-lock-time-in-millis

定时器作业在被异常执行器取走后的锁定时间(以毫秒计)。在这段时间内,其它异步执行器不会尝试获取及锁定这个任务。

 

三、BPMN 2.0

BPMN是一种广泛接受与支持的,展现流程的注记方法。

 

四、BPMN 业务流程引擎

流程引擎是支持配置业务流转过程的关键模块。Flowable支持BPMN2.0行业标准。允许通过导入XML文件或通过前端可视化界面建立流程。

支持如下类型的流程元素:

1、事件event

事件通常用于为流程生命周期中发生的事件建模。在BPMN 2.0中,有两种主要的事件分类:

(1)捕获事件

捕获事件为当流程执行到达这个事件时,会等待直到触发器动作。

(2)抛出事件

当流程执行到达这个事件时,会触发一个触发器。

2、顺序流 sequence flow

是两个元素间的连接器,在流程执行过程中,一个元素被访问后,会沿着其所有出口顺序流继续执行,这意味着bpmn 2.0的默认是并行执行的。

3、网关gateway

用于控制执行的流向,网关可以消费与生成token。

(1)排他网关 exclusive gateway

使用排他网关时,只会选择一条顺序流,当多条顺序流的条件都为true时,会且仅会选择xml最先定义的顺序流继续流程。

(2)并行网关

并行网关不计算条件。

(3)包容网关

可看做排他网关与并行网关的组合,与排他网关一样,可以在包容网关的出口顺序流上定义条件,包容网关会计算条件。然后包容网关与并行网关一样,可以同时选择多于一条出口顺序流。

(4)基于事件的网关

网关的每一条出口顺序流都需要连接至一个捕获中间事件。

4、任务

flowable支持的任务类型超过15种。

(1)用户任务

用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。用户任务允许标识到期日期以及直接派给用户。

(2)邮件任务

(3)业务规则任务

用于同步地执行一条或多条规则。

4、子流程与调用活动

(1)sub-process

包含其他的活动、网关、事件等活动。其本身构成一个流程,并作为更大流程的一部分。

(2)call activity

有别于一般的子流程,调用活动引用一个流程定义外部的流程,而子流程嵌入在原有流程定义内。

五、决策引擎DMN

Flowable原本与规则引擎的关联并不强,但实际业务流程中,有时城要由多个决策来决定流程走向,而每个决策都要根据自身的规则来决定,每个决策之间也可能存在关联。此时就需要规则引擎来提供决策支持。在规则引擎开源产品中,Drools是最知名的,它实现了PMML(Predictive Model Markup Language)规范,也时支持DMN(Decision Model and Notation)标准。

六、案例模型引擎CMMN

与BPMN引擎相比,CMMN引擎适用于如下几种场景:

场景1

BPMN引擎在处理顺序执行、职责分工是确的工作流程时有优势,但面对动态、自由、并行的情况时,CMMN更适合。

场景2

处理带有生命周期特征的场景,以项目为例,项目的立项、中止、收尾、交付等阶段,可以在CMMN中通过Stages概念在更高层次进行描述。

七、表单引擎Form

Flowable框架中将表单作为一个独立的子模块,可以将表单作为一个服务在其他模块中进行调用,表单服务就可以控制所有流程所使用的表单以及表单字段的可读、可写等操作。表单相关的使用可分为表单的定义以及表单的运行实例两个阶段。表单定义支持导入以.form为后缀的表单定义文件(JSON语言编写)。

 




相关推荐

1、连接的URL可能需要变更,如下面的方式 jdbc:mysql://localhost/flowable?char

一、数据库表类别 flowable是基于Activiti开发的流程引擎,表名中ACT_就是基于Activiti的,而FLW_开头的,是特定于Flowable Work或Engage的数据库表。

一、配置 <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</

一、使用文件流部署工作流 //resourceName是文件的全名称(包括文件后缀) String resourceName = multipartFile.getOriginalFilename()

一、自定义扩展 标准通常是不同公司(不同观点)大量讨论与妥协的结果。作为阅读BPMN 2.0 XML流程定义的开发者,有时会觉得某些结构或方法十分笨重。Flowable将开发者的感受放在最高优先,因此

一、简介 Flowable-ui.war是一个web应用,有以下几个功能: 1、Flowable IDM 身份管理应用,为所有Flowable UI

一、下载 从官网可以下载到flowable,其中有两个war包:flowable-ui.war和flowable-rest.war。 flowable-ui.wa

一、简介 如果需要人工执行的任务,就需要用到用户任务建模。 二、常用配置 1、执行人Assignments (1)执行人类型: Assignee 代理执行人,一般一个用户。 Candidat

通常我们会需要给任务运行表设置内容,因为默认启动任务或完成任务的操作时有些值为空,但我们需要给我们的字段设置值,我想给form_keys设置值,可以通过以下几种方式: 1、常用情况

一、流程变量写入方式 1、启动流程时 //声明一个JsonObject JSONObject jsonObject = new JSONObject(); jsonObject.put("id", "