*/
protected final boolean taskInstanceCanBeCompleted(
IWorkflowSession currentSession, RuntimeContext runtimeContext,
IProcessInstance processInstance, ITaskInstance taskInstance)
throws EngineException, KernelException {
Task task = taskInstance.getTask();
String taskInstanceCompletionEvaluatorName = null;
ITaskInstanceCompletionEvaluator taskInstanceCompletionEvaluator = null;
String taskType = task.getType();
taskInstanceCompletionEvaluatorName = task
.getTaskInstanceCompletionEvaluator();
if (taskInstanceCompletionEvaluatorName != null
&& !taskInstanceCompletionEvaluatorName.trim().equals("")) {
IBeanFactory beanFactory = runtimeContext.getBeanFactory();
taskInstanceCompletionEvaluator = (ITaskInstanceCompletionEvaluator) beanFactory
.getBean(taskInstanceCompletionEvaluatorName);
}
if (taskInstanceCompletionEvaluator == null) {
if (Task.FORM.equals(taskType)) {
taskInstanceCompletionEvaluatorName = processInstance
.getWorkflowProcess()
.getFormTaskInstanceCompletionEvaluator();
} else if (Task.TOOL.equals(taskType)) {
taskInstanceCompletionEvaluatorName = processInstance
.getWorkflowProcess()
.getToolTaskInstanceCompletionEvaluator();
} else if (Task.SUBFLOW.equals(taskType)) {
taskInstanceCompletionEvaluatorName = processInstance
.getWorkflowProcess()
.getSubflowTaskInstanceCompletionEvaluator();
}
if (taskInstanceCompletionEvaluatorName != null
&& !taskInstanceCompletionEvaluatorName.trim().equals("")) {
IBeanFactory beanFactory = runtimeContext.getBeanFactory();
taskInstanceCompletionEvaluator = (ITaskInstanceCompletionEvaluator) beanFactory
.getBean(taskInstanceCompletionEvaluatorName);
}
}
if (taskInstanceCompletionEvaluator == null) {
if (Task.FORM.equals(taskType)) {
taskInstanceCompletionEvaluator = this.defaultFormTaskInstanceCompletionEvaluator;
} else if (Task.TOOL.equals(taskType)) {
taskInstanceCompletionEvaluator = this.defaultToolTaskInstanceCompletionEvaluator;
} else if (Task.SUBFLOW.equals(taskType)) {
taskInstanceCompletionEvaluator = this.defaultSubflowTaskInstanceCompletionEvaluator;
}
}
if (taskInstanceCompletionEvaluator != null) {
return taskInstanceCompletionEvaluator.taskInstanceCanBeCompleted(
currentSession, runtimeContext, processInstance,
taskInstance);
} else {
WorkflowProcess process = taskInstance.getWorkflowProcess();
throw new EngineException(taskInstance.getProcessInstanceId(),
process, taskInstance.getTaskId(),
"无法获取TaskInstanceCompletionEvaluator,TaskId="
+ task.getId() + ", taskType="
+ taskInstance.getTaskType());
}
}