activiti 中国式自由流任意节点的跳转

工作流目前只能支持按照预先设置好的线,判断线的预制条件才能按照模板进行跳转 。假设一个场景 a提交到 b b提交到c c提交到d d在一直提交下去。 但是退回如何控制呢。假如d-a一直退回。貌似要画很多的线进去,线上配置条件。这样流程才能运转下去。 
在这里我们不想去画线,但是还期望流程能在制定的模板节点中运行。所以这个场景就是中国式流程。目前版本是5.14 
1.实现的代码如如下:

import java.util.Map;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.task.Comment;

public class JumpTaskCmd implements Command<Comment> {
 //完成
 public  static String  EVENTNAME_COMPLETE="jump";
 //退回
 public  static String  EVENTNAME_TO_REVOKED="revoked";
 //撤销
 public  static String  EVENTNAME_TO_BE_RETURNED="returned";

 protected String executionId;
 protected ActivityImpl desActivity;
 protected Map<String,Object> paramvar;
 protected ActivityImpl currentActivity;
 protected String JumpTaskReason;

 public JumpTaskCmd(String executionId, ActivityImpl desActivity,Map<String,Object> paramvar,ActivityImpl currentActivity,String JumpTaskReason) {
  super();
  this.executionId = executionId;
  this.desActivity = desActivity;
  this.paramvar = paramvar;
  this.currentActivity = currentActivity;
  this.JumpTaskReason=JumpTaskReason;
 }

 @Override
 public Comment execute(CommandContext commandContext) {
  ExecutionEntity executionEntity = Context.getCommandContext()
    .getExecutionEntityManager().findExecutionById(executionId);
  executionEntity.setVariables(paramvar);
  executionEntity.setEventSource(currentActivity);
  executionEntity.setActivity(currentActivity);
  for (TaskEntity taskEntity : Context.getCommandContext()
    .getTaskEntityManager().findTasksByExecutionId(executionId)) {
   taskEntity.fireEvent(TaskListener.EVENTNAME_COMPLETE);
   Context.getCommandContext().getTaskEntityManager()
     .deleteTask(taskEntity, JumpTaskReason, false);
  }
  executionEntity.executeActivity(desActivity);
  return null;
 }

}

2、程序控制

TaskServiceImpl taskServiceImpl = (TaskServiceImpl) processEngine
      .getTaskService();
    CommandExecutor commandExecutor = taskServiceImpl
      .getCommandExecutor();
    commandExecutor.execute(new JumpTaskCmd(task.getExecutionId(),
      destinationActivity, param, currentActivity, jumpReason));

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值