【Activiti】跳转到工作流的任意节点(本例用跳转到上一节点讲解即流程回退)

原创 2017年01月03日 10:19:17

所有用到的service以及实现类都是工作流(Activiti)本身的。

public String taskRollback(String taskId){
    //根据要跳转的任务ID获取其任务
    HistoricTaskInstance hisTask = historyService
                .createHistoricTaskInstanceQuery().taskId(taskId)
                .singleResult();
    //进而获取流程实例
    ProcessInstance instance = runtimeService
                .createProcessInstanceQuery()
                .processInstanceId(hisTask.getProcessInstanceId())
                .singleResult();
    //取得流程定义
    ProcessDefinitionEntity definition = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(hisTask.getProcessDefinitionId());
    //获取历史任务的Activity
    ActivityImpl hisActivity = definition.findActivity(hisTask.getTaskDefinitionKey());
    //实现跳转
    managementService.executeCommand(new JumpCmd(instance.getId(), hisActivity.getId()));
}

public class JumpCmd implements Command<ExecutionEntity>{

    private String processInstanceId;
    private String activityId;
    public static final String REASION_DELETE = "deleted";

    public JumpCmd(String processInstanceId, String activityId) {
        this.processInstanceId = processInstanceId;
        this.activityId = activityId;
    }

    @Override
    public ExecutionEntity execute(CommandContext commandContext) {
        ExecutionEntity executionEntity = commandContext.getExecutionEntityManager().findExecutionById(processInstanceId);

        executionEntity.destroyScope(REASION_DELETE);
        ProcessDefinitionImpl processDefinition = executionEntity.getProcessDefinition();
        ActivityImpl activity = processDefinition.findActivity(activityId);
        executionEntity.executeActivity(activity);

        return executionEntity;
    }

}

用这个JumpCmd方法就可以实现所有流程节点的跳转。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Activti跳过中间节点的helloworld实例程序

此实例是一个最简单的在运行时人为动态改变流程运转的实例,意在为任意流、驳回等功能抛砖引玉. 定义一个最简单的流程,它只有一个“开始事件”、一个“ServiceTask”、一个“结束事件”. 我们现...

Activiti工作流节点的自由跳转

最近在搞openwebflow的工作流节点自由跳转功能,在网上看了一些资料,感觉不是很好,总结原因如下: 直接手动调用SqlSession的操作,感觉会漏掉一些重要的初始化操作(如:启动...
  • hj7jay
  • hj7jay
  • 2016-04-18 17:29
  • 2978

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

activiti节点跳转

activiti节点跳转,任意节点的跳转,前提是节点必须在模板定义中。activiti节点跳转任意节点跳转。任意节点的跳转暂时不能跨流程跳转。任意节点的跳转不需要连线即可、任意节点的跳转可以实现回退、...

activiti工作流退回问题研究

activti工作流由于国外人的理念不同,导致必须的画相当复杂的线才能退回,在此,对流程进行扩展,以达到,退回到上一节点,以及退回到以前走过的任意节点的功能,如果有什么缺陷希望提出。

activiti数据库表结构剖析

1、结构设计 1.1、    逻辑结构设计 Activiti使用到的表都是ACT_开头的。 ACT_RE_*: ’RE’表示repository(存储),RepositoryS...
  • rosten
  • rosten
  • 2014-06-27 09:39
  • 24563

activiti根据当前节点获取下一个节点信息

在流程中使用监听器判断当前节点是否需要经过,否则跳转到下一个节点,如下图 当提交申请之后,当前提交人为部门负责人,那么部门负责人节点就不需要走了,直接到下一个节点,但是下一个节点是什么并不知道,就可...

activiti工作流获取下一节点实例

第一个方法getTaskDefinitionList用于包装下面两个方法: /** * * @author: Longjun * @Description: 根据实例编号获取下一个任务...

也谈一下Activiti工作流节点的自由跳转

最近在搞openwebflow的工作流节点自由跳转功能,在网上看了一些资料,感觉不是很好,总结原因如下: 直接手动调用SqlSession的操作,感觉会漏掉一些重要的初始化操作(如:启动新节点之后...

mybatis+springmvc框架反射获取dao类

正常情况下,我们通过反射获取一个类对象是这样的: Class boClass = Class.forName("类名"); Object bsabo = boClass.newInstance(); ...

flowable实现流程回退功能

flowable利用Command实现流程回退功能
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)