盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

flowable节点撤销

分享牛 12490℃

本文重点分析flowable新增任务撤销,从而可以更好的了解flowable的走向。

本教程主要分以下几点内容:

一、讲解节点撤销的API。

二、使用节点撤销的功能。

三、指点节点撤销的利弊。

-------------------------------------------------------------------------

1.1 节点撤销的API

对于节点撤销的API位于RuntimeService接口的定义中,如下所示:


/**
* Create a {@link ChangeActivityStateBuilder}, that allows to set various options for changing the state of a process instance.
*/
ChangeActivityStateBuilder createChangeActivityStateBuilder();

上面的方法仅仅用于构造ChangeActivityStateBuilder实例对象,ChangeActivityStateBuilder接口的定义信息如下:

public interface ChangeActivityStateBuilder {

/**
*设置流程实例id
**/
ChangeActivityStateBuilder processInstanceId(String processInstanceId);

/**
*设置需要撤销的节点Id
*/
ChangeActivityStateBuilder cancelActivityId(String cancelActivityId);

/**
* 设置撤销节点需要到达的节点(目标节点)
**/
ChangeActivityStateBuilder startActivityId(String startActivityId);

/**
* 开始节点的撤销功能
**/
void changeState();

}

1.2 节点撤销使用

首先定义一个流程文档,该流程对应的图如下所示:

上图中定义了三个任务节点,他们的id依此为taskBefore、subtask、taskAfter。关于上述的流程文档可以进入qq群:129123599进行下载。

部署上述的流程文档并启动流程实例,执行如下代码:



@Test
public void complete() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startSimpleSubProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.complete(task.getId());

task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
}

这个时候act_ru_task表新增的数据如下所示:

现在需要演示将流程实例为85001的数据(subtask),撤销到taskBefore节点。那么就需要执行如下的代码:


@Test
public void createChangeActivityStateBuilder() {
String processInstanceId="85001";
runtimeService.createChangeActivityStateBuilder()
.processInstanceId(processInstanceId)
.cancelActivityId("subtask")// taskBefore subtask taskAfter
.startActivityId("taskBefore")
.changeState();
}

上述代码执行完毕之后,再次查看act_ru_task表的数据如下所示 :

读者有兴趣可以观察act_hi_taskinst表中DELETE_REASON_值的变化。该列值的格式为Change activity to subtask。


1.3节点撤销的利弊

上述讲解的节点撤销功能在flowable6.0.0.5版本中引入并测试通过,该功能比较新颖。也有一定的Bug,因此使用的时候有一定的风险。比如多实例或者分支不支持范反复的撤销。

关于分支节点、会签节点的跳转可以参考随后的章节。

作者:分享牛
本文版权归作者和分享牛共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载请注明:分享牛 » flowable节点撤销