package org.jboss.seam.navigation; import org.jboss.seam.bpm.BusinessProcess; import org.jboss.seam.core.Expressions.ValueExpression; public class TaskControl { private boolean isBeginTask; private boolean isStartTask; private boolean isEndTask; private ValueExpression<Long> taskId; private ValueExpression<String> transition; public void beginOrEndTask() { if ( endTask() ) { BusinessProcess.instance().validateTask(); BusinessProcess.instance().endTask(transition == null ? null : transition.getValue()); } if ( beginTask() || startTask() ) { if (taskId==null || taskId.getValue() == null) { throw new NullPointerException("task id may not be null"); } BusinessProcess.instance().resumeTask(taskId.getValue()); } if ( startTask() ) { BusinessProcess.instance().startTask(); } } private boolean beginTask() { return isBeginTask && taskId.getValue() != null; } private boolean startTask() { return isStartTask && taskId.getValue() != null; } private boolean endTask() { return isEndTask; } public boolean isBeginTask() { return isBeginTask; } public void setBeginTask(boolean isBeginTask) { this.isBeginTask = isBeginTask; } public boolean isEndTask() { return isEndTask; } public void setEndTask(boolean isEndTask) { this.isEndTask = isEndTask; } public boolean isStartTask() { return isStartTask; } public void setStartTask(boolean isStartTask) { this.isStartTask = isStartTask; } public void setTaskId(ValueExpression<Long> taskId) { this.taskId = taskId; } public ValueExpression<Long> getTaskId() { return taskId; } public ValueExpression<String> getTransition() { return transition; } public void setTransition(ValueExpression<String> transition) { this.transition = transition; } }