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

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

             

   多实例

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

 

   子流程

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

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

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

   表单

     内部表达、外部表单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值