配置(activiti配置实际上就是用spring加载的)
数据库或数据源的配置
采用mybatis处理
作业执行的配置
邮件服务的配置
历史配置
历史保存的粒度控制
表达式、脚本中beans的配置
单元测试
rule ActivitiRule
工作流虚拟机
流程的扭转都在这里处理,它里面也有一套模型
表达式
采用juel java unified expression language,jee6规范
它可以在Java服务任务、执行监听器、任务监听器、带条件的顺序流中使用
上下文
流程中的变量 +beans+内部变量execution(DelegateExecution)
表达式大体分两类:
值表达式
${pass} ${user.name}
方法表达式
${user.getName()}
${user.getName(var,execution)}
部署
部署一般流程中用的class不会被部署,这就要求运行流程的classpath中有对应的class
所以在流程中不要直接使用class,否则流程发布后,class就不能修改类名、包名,尽可能采用表达式的形式进行关联
如果没有对应的class,不影响部署流程,但在运行时会抛异常
流程定义版本
流程定义文件本身并没有版本的概念,在部署的时候程序动态添加的版本,在数据库中正在的id为:
流程ID+版本号+动态生成的ID
程序中默认获取最新版本的流程
BPMN2.0
它是业界对工作流的一种规范一种标准,Activiti 也是在遵循标准的前提下对它进行了扩展
这样你的工作流可以很容易的切换不同的供应商
Activiti 的BPMN2.0的扩展
1:同不同的命名空间进行区分
2:它仅对规范的实现方式进行扩展,并没有对规范新增内容,保证兼容性
这样activiti的所有实现都可以在bpmn2.0规范中得到等价的实现方式
事件分2类
捕获事件
流程执行的该事件时,会等待事件触发,图标中间是空的
抛出事件
流程执行的该事件时,事件就会被触发,图标中间有黑色填充物
定时器事件的定义
使用范围:start事件 等..
元素:
timeDate 在确切的时间触发
timeDuration 触发前持续时间
timeCycle 周期性的触发
开始事件
带定时的开始事件
触发器(定时器)自动触发
一般的开始事件
需要手动调用runtimeService.startProcessInstanceByKey来触发
结束事件
none end
事件结束无结果抛出,直接结束当前的执行路径
error end
顺序流
连接一个节点到另个节点,流上可以添加条件,如果有多条分支采用并行的形式处理
连接线中的表达式 结果必须是false或true,否则会抛异常
gateway
excluslve gateway 单一分支
多条分支默认只有一条可以走,如果有多条为true,仅跑第一个为true的通道
如果全部为false,则抛出异常
parallel gateway 并行分支
fork 并行执行所有输出的顺序流
join 所有到达parallet gateway的并发性的执行路径都等待与此,确保所有的输入流全部到达,才继续往下走
注:连线上的条件会被忽略
任务
用户任务
由人来参与处理
基本属性的指定
过期时间
用户分配
可以使用表达式
也可以有监听器代码动态的设置
脚本任务
脚本支持groovy、javascript
脚本中可以直接从上下文中使用变量,bean、内置变量,也可以操作
Java服务
直接调用外部的java类(实现:JavaDelegate)
部署是不会被实例化,第一次使用会加载,后期以单实例的方式处理
该类可以通过流程动态注入自动,从而与流程中的数据进行交互
高级: 实现ActivityBehavior 在内部可以直接操作流程虚拟机API,通过代码来控制流程的走向
WebService
调用一个WebService
业务规则任务
activiti这块采用drools作为规则引擎,流程中如果使用该节点要求在部署流程时,把规则文件.drl也一同部署
Email 任务
手动任务
跟Java服务的效果一样,使用场景应该都一样
Java接收任务
监听器
执行监听 (ExecutionListener)
执行外部代码或计算表达式,几乎任何流程中的环境都可以绑定到监听,还是非常灵活的并且还可以注入字段,
将流程中的数据塞到对象中
任务监听 TaskListener
任务监听不是BPMN规范,它是activiti专门针对用户任务进行的扩展
在流程部署的时候创建,单利的
多实例
说白了就是对某个任务多次执行,对它进行循环处理
子流程
直接在主流程中嵌套子流程或直接调用外部流程
内嵌中的流程,变量都是可见的
调用外部流程,变量需要做映射,将主流程中的变量映射到子流程,反过来也都可以
表单
内部表达、外部表单
相关推荐
Activiti学习笔记,介绍Activiti的组成结构,工作流BPMN2.0规范等
在“Activiti学习笔记三:管理流程定义”中,我们将深入探讨如何使用Activiti来管理和操作流程定义。 首先,流程定义是Activiti中的核心概念,它是流程模型的静态表示,描述了工作流的结构和规则。流程定义通常以...
在本篇Activiti学习笔记中,我们将探讨如何在工作流引擎Activiti中分配组任务,这对于构建企业级流程管理系统至关重要。Activiti是一个轻量级、开源的业务流程管理(BPM)和工作流系统,它提供了强大的流程定义、...
在本篇Activiti学习笔记中,我们将深入探讨工作流定义中的关键概念——角色组,以及它们在Activiti流程引擎中的应用。Activiti是一款强大的、开源的企业级工作流和业务自动化引擎,广泛应用于业务流程管理(BPM)...
Activiti 学习笔记11:接收活动(receiveTask,即等待活动)
本学习笔记将聚焦于流程执行的历史记录,这是理解流程运行情况、追踪问题以及优化流程的关键。 一、Activiti 的历史记录功能 历史记录是 Activiti 中的一个重要特性,它允许开发者和管理员查看已经执行过的流程实例...
在本篇学习笔记中,我们将深入探讨并行网关的工作原理、使用场景以及如何在 Activiti 中进行配置。 一、并行网关的概念 并行网关,也称为并发网关,允许流程实例同时沿着多个路径进行,这些路径可以是独立的,然后...
本篇学习笔记将深入探讨SequenceFlow的概念、作用以及如何在流程设计中使用。 一、SequenceFlow简介 SequenceFlow 是 Activiti 流程模型中的概念,它表示了流程实例从一个活动(Activity)到另一个活动的流转。每个...
本篇学习笔记将深入探讨如何在Activiti中进行个人任务的分配。 一、理解个人任务 在Activiti中,个人任务(User Task)代表了流程中的一个节点,这个节点只能由特定的用户或用户组来处理。这种任务的分配方式确保了...
理解并熟练操作流程变量是深入学习 Activiti 的关键部分。 在 Activiti 中,流程变量可以在以下场景中发挥作用: 1. **定义变量**:在 BPMN2.0 流程图中,可以通过 `user task`、`service task` 或其他元素的属性...
本学习笔记主要聚焦在开始活动节点以及如何判断流程是否结束,同时涵盖了查询历史流程实例的相关内容。 一、开始活动节点(Start Event) 在 Activiti 流程图中,开始活动节点(Start Event)标志着流程的起始点。...
在企业工作流管理系统中,Activiti 是一个广泛使用的开源流程引擎,它允许开发者设计、运行和管理业务流程。本篇文章将深入探讨Activiti中的一个重要概念——排他网关(Exclusive Gateway),也称为独占网关。排他...
本学习笔记将深入探讨流程实例和任务执行这两个关键概念。 流程实例是 Activiti 中的一个核心概念,它代表了流程定义在实际运行中的一个具体执行。当你启动一个流程,实际上就是创建了一个流程实例。流程实例是动态...
### Activiti5学习笔记核心知识点解析 #### 一、Activiti5概述与环境搭建 **Activiti5**是一款开源的工作流引擎,基于Java语言开发,主要用于实现业务流程管理(BPM)和工作流自动化。其核心特性包括流程建模、...
本学习资料集合包含两份文档:《Activiti学习笔记.docx》和《Activitiʵ۸.pdf》,它们将帮助你快速入门并逐步深入理解Activiti的核心功能。 《Activiti学习笔记.docx》可能是作者在学习过程中整理的笔记,通常这类...
### Activiti5学习笔记知识点概览 #### 一、Activiti5概述与环境搭建 - **JDK版本**: 使用Activiti5至少需要JDK 1.5或更高版本。建议使用较新版本以获得更好的性能和支持。 - **构建工具**: Ant 1.8.1或以上版本是...
本文将深入探讨Activiti 5.9 的学习笔记,特别是关于流程发布的部分,这对于理解如何在实际环境中部署和运行流程至关重要。 ### 1. Activiti 简介 Activiti 是一个轻量级、灵活且强大的业务流程管理系统(BPM),它...
深入学习,我们关注到Activiti数据库的各个部分: 1. 资源库流程规则表: - act_re_deployment:包含部署信息。 - act_re_model:流程设计模型的部署信息。 - act_re_procdef:存储流程定义数据。 2. 运行时...