【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方法就可以实现所有流程节点的跳转。

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

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

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

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

以前写过一篇文章activiti根据当前节点获取下一个节点信息,当时的需求只是需要获取下一个节点而已,并没有要求获得什么类型的节点,所以下一个节点可能是任何节点,在最近的项目中的需求是根据当前的节点获...
  • chenfengdejuanlian
  • chenfengdejuanlian
  • 2017年08月10日 17:15
  • 3404

Activiti获取某个流程实例已经审批的节点记录

已知businessid即eventid获得对应的审批记录 某个流程实例的节点信息都是存放在ACT_HI_ACTINST表中 business key存放在ACT_HI_PROCINST中,得到H...
  • lan12334321234
  • lan12334321234
  • 2017年04月11日 10:59
  • 2877

Activiti工作流之获取流程定义中所有的节点

初步设想实现一个部署完工作流之后,为UserTask节点动态分配任务执行者,或者在分支节点上添加进入条件的功能。为了实现这个功能需要解析流程定义文件取出文件中定义的所有节点。这里有两个方法可以实现此功...
  • a78460750
  • a78460750
  • 2016年06月15日 14:58
  • 14277

activiti 如何获取下一步节点

ACTIVITI相对于JBPM来说,比较年轻,用的人少,中文方面的资料更少,我根据网上到处找得资料以及看官方文档总结出来了代码,非常不容易啊。废话不多说,直接上代码吧: 首先是根据流程ID获...
  • superdog007
  • superdog007
  • 2014年05月04日 18:30
  • 14003

Activiti - 任务回退到上一步

package com.studio.util; import java.util.ArrayList; import java.util.List; import java.util.Map; ...
  • lozi1020
  • lozi1020
  • 2015年04月06日 18:10
  • 3471

activiti5 工作流的回退功能

activiti5 工作流 本身不提供回退,按网络的说法,外国人的回退也是要在流程图设计里面画出来的,可惜在中国各种各样的需求,肯定是需要实现的。在实现回退的功能上看了网络上面的方法,都是直接修改分支...
  • fgstudent
  • fgstudent
  • 2016年02月15日 15:04
  • 8813

activiti节点跳转

activiti节点跳转,任意节点的跳转,前提是节点必须在模板定义中。activiti节点跳转任意节点跳转。任意节点的跳转暂时不能跨流程跳转。任意节点的跳转不需要连线即可、任意节点的跳转可以实现回退、...
  • qq_30739519
  • qq_30739519
  • 2016年04月26日 10:39
  • 17485

Activiti5.14 流程跳跃/退回/驳回/自定义流转(中国式退回)

package com.mf.component.workflow.activiti.cmd; import java.util.Map; import org.activiti.engine.A...
  • wkwanglei
  • wkwanglei
  • 2014年05月14日 16:40
  • 21397

activiti工作流退回问题研究

activti工作流由于国外人的理念不同,导致必须的画相当复杂的线才能退回,在此,对流程进行扩展,以达到,退回到上一节点,以及退回到以前走过的任意节点的功能,如果有什么缺陷希望提出。...
  • x734400146
  • x734400146
  • 2015年01月03日 11:18
  • 5367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Activiti】跳转到工作流的任意节点(本例用跳转到上一节点讲解即流程回退)
举报原因:
原因补充:

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