首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

activiti 学习札记

2013-10-18 
activiti 学习笔记配置(activiti配置实际上就是用spring加载的)? 数据库或数据源的配置?? ? ? ?采用mybati

activiti 学习笔记

配置(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专门针对用户任务进行的扩展

? ? ? ? ? 在流程部署的时候创建,单利的

? ? ? ? ? ? ?

? ?多实例

? ? ? ?说白了就是对某个任务多次执行,对它进行循环处理

?

? ?子流程

? ? ? ?直接在主流程中嵌套子流程或直接调用外部流程

? ? ? ?内嵌中的流程,变量都是可见的

? ? ? ?调用外部流程,变量需要做映射,将主流程中的变量映射到子流程,反过来也都可以

? ?表单

? ? ?内部表达、外部表单

热点排行