|
@@ -1,7 +1,11 @@
|
|
package com.flow.flowable.validator;
|
|
package com.flow.flowable.validator;
|
|
|
|
|
|
|
|
+import com.flow.flowable.utils.ProcessElementUtil;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.flowable.bpmn.model.FieldExtension;
|
|
import org.flowable.bpmn.model.Process;
|
|
import org.flowable.bpmn.model.Process;
|
|
import org.flowable.bpmn.model.ServiceTask;
|
|
import org.flowable.bpmn.model.ServiceTask;
|
|
|
|
+import org.flowable.bpmn.model.TaskWithFieldExtensions;
|
|
import org.flowable.validation.ValidationError;
|
|
import org.flowable.validation.ValidationError;
|
|
import org.flowable.validation.validator.impl.ServiceTaskValidator;
|
|
import org.flowable.validation.validator.impl.ServiceTaskValidator;
|
|
|
|
|
|
@@ -11,12 +15,30 @@ public class CustomServiceTaskValidator extends ServiceTaskValidator {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void verifyType(Process process, ServiceTask serviceTask, List<ValidationError> errors) {
|
|
protected void verifyType(Process process, ServiceTask serviceTask, List<ValidationError> errors) {
|
|
- if ("copy".equalsIgnoreCase(serviceTask.getType())) {
|
|
|
|
- return;
|
|
|
|
|
|
+ String type = serviceTask.getType();
|
|
|
|
+ if (StringUtils.isNotEmpty(type)) {
|
|
|
|
+ if (type.equalsIgnoreCase("copy")) {
|
|
|
|
+ this.validateFieldDeclarationsForCopy(process, serviceTask, serviceTask.getFieldExtensions(), errors);
|
|
|
|
+ } else if (type.equalsIgnoreCase("jump")) {
|
|
|
|
+ this.validateFieldDeclarationsForJump(process, serviceTask, serviceTask.getFieldExtensions(), errors);
|
|
|
|
+ } else {
|
|
|
|
+ super.verifyType(process, serviceTask, errors);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- if ("jump".equalsIgnoreCase(serviceTask.getType())) {
|
|
|
|
- return;
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void validateFieldDeclarationsForCopy(Process process, TaskWithFieldExtensions task, List<FieldExtension> fieldExtensions, List<ValidationError> errors) {
|
|
|
|
+ String assignee = ProcessElementUtil.getFieldExtensionExpression(task, "assignee");
|
|
|
|
+ if (StringUtils.isBlank(assignee)) {
|
|
|
|
+ addError(errors, "flowable-copyTask-no-assignee", process, task, "抄送节点缺少assignee属性");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void validateFieldDeclarationsForJump(Process process, TaskWithFieldExtensions task, List<FieldExtension> fieldExtensions, List<ValidationError> errors) {
|
|
|
|
+ String targetNode = ProcessElementUtil.getFieldExtensionValue(task, "targetNode");
|
|
|
|
+ if (StringUtils.isBlank(targetNode)) {
|
|
|
|
+ addError(errors, "flowable-jumpTask-no-targetNode", process, task, "跳转节点缺少targetNode属性");
|
|
}
|
|
}
|
|
- super.verifyType(process, serviceTask, errors);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|