package org.activiti.engine.impl.bpmn.behavior;
import java.util.List;
import org.activiti.engine.impl.TaskContext;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.impl.pvm.delegate.ActivityExecution;
public class MixUserTaskActivityBehavior extends UserTaskActivityBehavior{
private UserTaskActivityBehavior userTaskActivityBehavior;
private MultiInstanceActivityBehavior mixmultiInstanceActivityBehavior;
public MultiInstanceActivityBehavior getMixmultiInstanceActivityBehavior() {
return mixmultiInstanceActivityBehavior;
}
private FlowNodeActivityBehavior getFlowNodeActivityBehavior(ActivityExecution execution)
{
TaskContext taskContext = execution.getTaskContext();
if(taskContext.isIsmulti())
return mixmultiInstanceActivityBehavior;
else
return userTaskActivityBehavior;
}
public void setMixmultiInstanceActivityBehavior(
MultiInstanceActivityBehavior mixmultiInstanceActivityBehavior) {
this.mixmultiInstanceActivityBehavior = mixmultiInstanceActivityBehavior;
}
public UserTaskActivityBehavior getUserTaskActivityBehavior() {
return userTaskActivityBehavior;
}
public MixUserTaskActivityBehavior(UserTaskActivityBehavior userTaskActivityBehavior) {
super(userTaskActivityBehavior.getTaskDefinition());
this.userTaskActivityBehavior = userTaskActivityBehavior;
}
@Override
public void execute(ActivityExecution execution) throws Exception {
// TODO Auto-generated method stub
getFlowNodeActivityBehavior(execution).execute(execution);
}
@Override
public void signal(ActivityExecution execution, String signalName,
Object signalData) throws Exception {
// TODO Auto-generated method stub
getFlowNodeActivityBehavior(execution).signal(execution, signalName, signalData);
}
@Override
protected void handleAssignments(TaskEntity task,
ActivityExecution execution) {
// TODO Auto-generated method stub
userTaskActivityBehavior.handleAssignments(task, execution);
}
@Override
protected void leave(ActivityExecution execution) {
// TODO Auto-generated method stub
getFlowNodeActivityBehavior(execution).leave(execution);
}
@Override
protected boolean hasCompensationHandler(ActivityExecution execution) {
// TODO Auto-generated method stub
return userTaskActivityBehavior.hasCompensationHandler(execution);
}
@Override
protected void createCompensateEventSubscription(ActivityExecution execution) {
// TODO Auto-generated method stub
userTaskActivityBehavior.createCompensateEventSubscription(execution);
}
@Override
protected boolean hasLoopCharacteristics(ActivityExecution execution) {
// TODO Auto-generated method stub
return userTaskActivityBehavior.hasLoopCharacteristics( execution);
}
@Override
protected boolean hasMultiInstanceCharacteristics(ActivityExecution execution) {
// TODO Auto-generated method stub
return userTaskActivityBehavior.hasMultiInstanceCharacteristics( execution);
}
@Override
public MultiInstanceActivityBehavior getMultiInstanceActivityBehavior() {
// TODO Auto-generated method stub
return userTaskActivityBehavior.getMultiInstanceActivityBehavior();
}
@Override
protected void signalCompensationDone(ActivityExecution execution,
Object signalData) {
// TODO Auto-generated method stub
userTaskActivityBehavior.signalCompensationDone(execution, signalData);
}
@Override
protected void leaveIgnoreConditions(ActivityExecution activityContext) {
// TODO Auto-generated method stub
getFlowNodeActivityBehavior(activityContext).leaveIgnoreConditions(activityContext);
}
public List<String> getAssignee(TaskEntity task, ActivityExecution execution)
{
return userTaskActivityBehavior.getAssignee(task, execution);
}
}