Activiti 任意驳回

参考:http://blog.csdn.net/qq_30739519/article/details/51248516

本文基于分享牛(http://blog.csdn.net/qq_30739519)的博文进行了完善,首先在此表示感谢!

修改内容主要涉及类如下:

Activiti源码:

1、org.activiti.engine.impl.persistence.entity.TaskEntity增加删除原因常量的定义

  public static final String DELETE_REASON_REJECTED = "rejected";

2、org.activiti.engine.delegate.TaskListener增加事件名称常量的定义

  String EVENTNAME_REJECT = "reject";


3、自定义cmd(基于分享牛博文完善,解决了对并行网关的处理)

package com.xszhao.activiti.cmd;

import java.util.Iterator;
import java.util.List;
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.ExecutionEntityManager;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.impl.pvm.ReadOnlyProcessDefinition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;

/**
 * 
 * JD节点的跳转 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Activiti 5 中,驳回功能可以通过以下两种方式实现: 1. 使用 `exclusiveGateway` 和 `userTask` 元素:在流程中添加一个 `exclusiveGateway` 元素,将其与要驳回的目标 `userTask` 元素相连。在 `exclusiveGateway` 元素的条件中,判断是否需要驳回,如果需要驳回,则将流程实例的当前任务设置为目标 `userTask` 元素,即可实现驳回功能。 以下是一个示例流程定义文件: ```xml <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" targetNamespace="http://www.activiti.org/processdef"> <process id="process" name="Process" isExecutable="true"> <startEvent id="startEvent" name="Start"> <outgoing>flow1</outgoing> </startEvent> <userTask id="userTask1" name="Task 1"> <incoming>flow1</incoming> <outgoing>flow2</outgoing> </userTask> <exclusiveGateway id="exclusiveGateway" name="Gateway"> <incoming>flow2</incoming> <outgoing>flow3</outgoing> <outgoing>flow4</outgoing> </exclusiveGateway> <userTask id="userTask2" name="Task 2"> <incoming>flow3</incoming> <outgoing>flow5</outgoing> </userTask> <userTask id="userTask3" name="Task 3"> <incoming>flow4</incoming> <outgoing>flow6</outgoing> </userTask> <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="userTask1" /> <sequenceFlow id="flow2" sourceRef="userTask1" targetRef="exclusiveGateway" /> <sequenceFlow id="flow3" sourceRef="exclusiveGateway" targetRef="userTask2"> <conditionExpression xsi:type="tFormalExpression">${rejected}</conditionExpression> </sequenceFlow> <sequenceFlow id="flow4" sourceRef="exclusiveGateway" targetRef="userTask3"> <conditionExpression xsi:type="tFormalExpression">${!rejected}</conditionExpression> </sequenceFlow> <sequenceFlow id="flow5" sourceRef="userTask2" targetRef="endEvent" /> <sequenceFlow id="flow6" sourceRef="userTask3" targetRef="endEvent" /> <endEvent id="endEvent" name="End"> <incoming>flow5</incoming> <incoming>flow6</incoming> </endEvent> </process

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值