Flowable6.4 – Behavior使用初探

通过之前分析Behavior的源码,基本上搞清楚了它的作用,这次就简单试验一下它的用法。 如果看过ProcessEngineConfigurationImpl的源码,会在其中的init()方法中发现BehaviorFactory的初始化方法。由此入手,就能够了解如何定制Behavior。 这块的源码暂时先不分析,本次直接使用一个简单的Demo介绍一下如何定制UserTaskActivityBehavior。 首先,声明一个自定义类,直接继承自UserTaskActivityBeh...

Flowable6.4 – Behavior的用途分析

Flowable和Activiti里面有一个很重要的部分 - Behavior,接下来分析一下这部分的主要作用是什么。 首先,要找一个切入点,看一下在调用TaskServiceImpl.complete()时发生了什么。下面是该函数的源码: @Overridepublic void complete(String taskId) {    commandExecutor.execute(new CompleteTaskCmd(taskId, null));} 这里可以看到执行了...

Activiti6.0 – 减签

上一篇实现了Activiti6.0的加签功能,本篇就实现一下Activiti6.0的减签功能。 与上一篇思路相同,既然Flowable已经实现了相关的API,我就拿过来小幅度改造以后,直接使用。 所以,找到DeleteMultiInstanceExecutionCmd的所在位置,直接拷贝至项目中。此命令在Flowable中的位置如下图所示: 拷贝后的位置其实与上一篇中AddMultiInstanceExecutionCmd所在的位置相同,如下图: 相...

Activiti6.0 – 加签

试验过了Flowable的加签和减签,并且简单分析了一下其源码之后,这次就来尝试一下实现基于Activiti6.0的加签功能。 Activiti6.0并没有提供加签的API接口,不过完全可以参照Flowable的源码来实现,甚至于有的接口照抄即可。 首先,找到AddMultiInstanceExecutionCmd这个命令所在的位置,如下图: 将这个类直接拷贝到Activiti的相关项目里,比如我这里的结构如下: 拷贝完后,...

Activiti6.0 – 多实例节点跳转

最近都在试验Activiti6.0的节点跳转,其它的文章见索引。 本次就试验一下在Activiti6.0的一个流程内,由多实例节点跳转至其它的用户节点。 首先,仍旧是先上流程图: 上图中,用户任务1和用户任务3是普通的用户节点,用户任务2是多实例节点。 当流程处于节点“用户任务1”时,数据表中的记录如下图: act_ru_task act_ru_execution act_ru_variable 对比一下,当流程处...

Activiti6.0 – 子流程节点跳转

上一篇中介绍了如何在一个简单的流程中,实现节点的自由跳转。正常的流程肯定不会如此简单,本篇就介绍一下如何实现子流程的节点跳转。 内嵌子流程其实使用上一篇中介绍的方法就可以实现,因为从本质上来说,内嵌子流程并没有脱离父流程,仍旧属于它不可分割的一部分。 本篇着重介绍的如何实现调用子流程的节点跳转,主要介绍一下如何从子流程内的节点跳出到父流程节点。流程在进入调用子流程这部分...

Activiti6.0 – 节点跳转

之前一直在试验Flowable的节点跳转,可以参见以下文章: 《Flowable6.4节点跳转初探》 《Flowable6.4子流程节点跳转》 《Flowable6.4多实例流程节点跳转》 但是,Activiti并没有这些API接口,那么应该如何实现呢?接下来就实现一下简单流程节点的跳转。 首先,本文是基于Command接口实现,关于Activiti中的Command会在之后的文章中详解一下,本篇文章就暂时只是说明如何实现、使用。 先...

Activiti6.0 – 多实例

以下引自Activiti开发手册: 多实例节点是在业务流程中定义重复环节的一个方法。 从开发角度讲,多实例和循环是一样的: 它可以根据给定的集合,为每个元素执行一个环节甚至一个完整的子流程, 既可以顺序依次执行也可以并发同步执行。 本文以子流程为例,试验一下如何实现多实例子流程。 首先,还是使用之前的流程图,如下: 上图中需要注意以下几个属性: Multi-instance type ...

Activiti6.0 – 子流程的传参

子流程的传参仅仅限于调用子流程(Call activity),因为调用子流程用的是外部已有的流程,相当于重新生成了一个流程实例。 如果在上一次文章中的Flow002内声明了变量,比如声明了Assignments变量,如下图: Flow002内UserTask1的Assignments 如果将Flow002作为子流程调用,会直接抛出异常,如下: HTTP Status 500 - Request processing failed; nested...

Activiti6.0 – 子流程

简单试验一下子流程,主要是以下两种: 1. 内嵌子流程:内嵌在父流程中,外部无法访问。 2. 调用子流程:引用外部的已存在的流程,增加了流程的复用性。 首先,试验一下内嵌子流程。 以下是流程的截图,很简单的一个流程: 启动该流程,观察一下在进入到“子处理”这个节点时发生了什么? 会发现只有一个流程实例在运行,这说明,内嵌子流程和其父流程运行在同一个流程实例下。...
Copyright © 字痕随行 保留所有权利.   Theme  Ality 京ICP备14039894号

用户登录

分享到: