@Override public ActivityBehavior createMuleActivityBehavior(ServiceTask serviceTask) { return createMuleActivityBehavior(serviceTask, serviceTask.getFieldExtensions()); }
@Override public ActivityBehavior createCamelActivityBehavior(ServiceTask serviceTask, BpmnModel bpmnModel) { return createCamelActivityBehavior(serviceTask, serviceTask.getFieldExtensions(), bpmnModel); }
@Override public ActivityBehavior createCamelActivityBehavior(ServiceTask serviceTask) { return createCamelActivityBehavior(serviceTask, serviceTask.getFieldExtensions()); }
@Override public ActivityBehavior createMuleActivityBehavior(ServiceTask serviceTask, BpmnModel bpmnModel) { return createMuleActivityBehavior(serviceTask, serviceTask.getFieldExtensions(), bpmnModel); }
@Override public ShellActivityBehavior createShellActivityBehavior(ServiceTask serviceTask) { List<FieldDeclaration> fieldDeclarations = createFieldDeclarations(serviceTask.getFieldExtensions()); return (ShellActivityBehavior) ClassDelegate.defaultInstantiateDelegate( ShellActivityBehavior.class, fieldDeclarations); }
@Override public ShellActivityBehavior createShellActivityBehavior(ServiceTask serviceTask) { List<FieldDeclaration> fieldDeclarations = createFieldDeclarations(serviceTask.getFieldExtensions()); return (ShellActivityBehavior) ClassDelegate.defaultInstantiateDelegate(ShellActivityBehavior.class, fieldDeclarations); }
@Override public MailActivityBehavior createMailActivityBehavior(ServiceTask serviceTask) { return createMailActivityBehavior(serviceTask.getId(), serviceTask.getFieldExtensions()); }
@Override public MailActivityBehavior createMailActivityBehavior(ServiceTask serviceTask) { return createMailActivityBehavior(serviceTask.getId(), serviceTask.getFieldExtensions()); }
protected void addField(String name, String propertyName, String defaultValue, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name); String value = getPropertyValueAsString(propertyName, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } else if (StringUtils.isNotEmpty(defaultValue)) { field.setStringValue(defaultValue); task.getFieldExtensions().add(field); } }
protected void addField(String name, JsonNode elementNode, ServiceTask task) { FieldExtension field = new FieldExtension(); field.setFieldName(name.substring(8)); String value = getPropertyValueAsString(name, elementNode); if (StringUtils.isNotEmpty(value)) { if ((value.contains("${") || value.contains("#{")) && value.contains("}")) { field.setExpression(value); } else { field.setStringValue(value); } task.getFieldExtensions().add(field); } }
protected List<DmnDecisionTable> getDecisionTablesFromModel(BpmnModel bpmnModel, ProcessDefinition processDefinition) { Set<String> decisionTableKeys = new HashSet<>(); List<DmnDecisionTable> decisionTables = new ArrayList<>(); List<ServiceTask> serviceTasks = bpmnModel.getMainProcess().findFlowElementsOfType(ServiceTask.class, true); for (ServiceTask serviceTask : serviceTasks) { if ("dmn".equals(serviceTask.getType())) { if (serviceTask.getFieldExtensions() != null && serviceTask.getFieldExtensions().size() > 0) { for (FieldExtension fieldExtension : serviceTask.getFieldExtensions()) { if ("decisionTableReferenceKey".equals(fieldExtension.getFieldName())) { String decisionTableReferenceKey = fieldExtension.getStringValue(); if (!decisionTableKeys.contains(decisionTableReferenceKey)) { addDecisionTableToCollection(decisionTables, decisionTableReferenceKey, processDefinition); decisionTableKeys.add(decisionTableReferenceKey); } break; } } } } } return decisionTables; }
protected void setPropertyFieldValue(String name, ServiceTask task, ObjectNode propertiesNode) { for (FieldExtension extension : task.getFieldExtensions()) { if (name.substring(8).equalsIgnoreCase(extension.getFieldName())) { if (StringUtils.isNotEmpty(extension.getStringValue())) { setPropertyValue(name, extension.getStringValue(), propertiesNode); } else if (StringUtils.isNotEmpty(extension.getExpression())) { setPropertyValue(name, extension.getExpression(), propertiesNode); } } } }
@Override protected boolean writeExtensionChildElements(BaseElement element, boolean didWriteExtensionStartElement, XMLStreamWriter xtw) throws Exception { ServiceTask serviceTask = (ServiceTask) element; if (!serviceTask.getCustomProperties().isEmpty()) { writeCustomProperties(serviceTask, didWriteExtensionStartElement, xtw); } else { if (serviceTask instanceof HttpServiceTask) { didWriteExtensionStartElement = writeHttpTaskExtensionElements((HttpServiceTask) serviceTask, didWriteExtensionStartElement, xtw); } didWriteExtensionStartElement = FieldExtensionExport.writeFieldExtensions(serviceTask.getFieldExtensions(), didWriteExtensionStartElement, xtw); } return didWriteExtensionStartElement; }
protected void setPropertyFieldValue(String propertyName, String fieldName, ServiceTask task, ObjectNode propertiesNode) { for (FieldExtension extension : task.getFieldExtensions()) { if (fieldName.equalsIgnoreCase(extension.getFieldName())) { if (StringUtils.isNotEmpty(extension.getStringValue())) { setPropertyValue(propertyName, extension.getStringValue(), propertiesNode); } else if (StringUtils.isNotEmpty(extension.getExpression())) { setPropertyValue(propertyName, extension.getExpression(), propertiesNode); } } } }
protected void verifyType(Process process, ServiceTask serviceTask, List<ValidationError> errors) { if (StringUtils.isNotEmpty(serviceTask.getType())) { if (!serviceTask.getType().equalsIgnoreCase("mail") && !serviceTask.getType().equalsIgnoreCase("mule") && !serviceTask.getType().equalsIgnoreCase("camel") && !serviceTask.getType().equalsIgnoreCase("shell") && !serviceTask.getType().equalsIgnoreCase("dmn") && !serviceTask.getType().equalsIgnoreCase("http") && !serviceTask.getType().equalsIgnoreCase("case")) { addError(errors, Problems.SERVICE_TASK_INVALID_TYPE, process, serviceTask, "Invalid or unsupported service task type"); } if (serviceTask.getType().equalsIgnoreCase("mail")) { validateFieldDeclarationsForEmail(process, serviceTask, serviceTask.getFieldExtensions(), errors); } else if (serviceTask.getType().equalsIgnoreCase("shell")) { validateFieldDeclarationsForShell(process, serviceTask, serviceTask.getFieldExtensions(), errors); } else if (serviceTask.getType().equalsIgnoreCase("dmn")) { validateFieldDeclarationsForDmn(process, serviceTask, serviceTask.getFieldExtensions(), errors); } else if (serviceTask.getType().equalsIgnoreCase("http")) { validateFieldDeclarationsForHttp(process, serviceTask, serviceTask.getFieldExtensions(), errors); } else if (serviceTask.getType().equalsIgnoreCase("case")) { validateFieldDeclarationsForCase(process, (CaseServiceTask) serviceTask, errors); } } }
@Override public ClassDelegate createClassDelegateServiceTask(ServiceTask serviceTask) { if (allServiceTasksNoOp || noOpServiceTaskIds.contains(serviceTask.getId()) || noOpServiceTaskClassNames.contains(serviceTask.getImplementation())) { return createNoOpServiceTask(serviceTask); } else if (serviceTask.getImplementation() != null && mockedClassDelegatesMapping.containsKey(serviceTask.getImplementation())) { return new ClassDelegate(mockedClassDelegatesMapping.get(serviceTask.getImplementation()), createFieldDeclarations(serviceTask.getFieldExtensions())); } else if (serviceTask.getId() != null && mockedClassTaskIdDelegatesMapping.containsKey(serviceTask.getId())) { return new ClassDelegate(mockedClassTaskIdDelegatesMapping.get(serviceTask.getId()), createFieldDeclarations(serviceTask.getFieldExtensions())); } return wrappedActivityBehaviorFactory.createClassDelegateServiceTask(serviceTask); }
@Override public ClassDelegate createClassDelegateServiceTask(ServiceTask serviceTask) { Expression skipExpression; if (StringUtils.isNotEmpty(serviceTask.getSkipExpression())) { skipExpression = expressionManager.createExpression(serviceTask.getSkipExpression()); } else { skipExpression = null; } return new ClassDelegate(serviceTask.getId(), serviceTask.getImplementation(), createFieldDeclarations(serviceTask.getFieldExtensions()), skipExpression, serviceTask.getMapExceptions()); }
@Override public ClassDelegate createClassDelegateServiceTask(ServiceTask serviceTask) { return classDelegateFactory.create(serviceTask.getId(), serviceTask.getImplementation(), createFieldDeclarations(serviceTask.getFieldExtensions()), serviceTask.isTriggerable(), getSkipExpressionFromServiceTask(serviceTask), serviceTask.getMapExceptions()); }
@Override public ServiceTaskDelegateExpressionActivityBehavior createServiceTaskDelegateExpressionActivityBehavior(ServiceTask serviceTask) { Expression delegateExpression = expressionManager.createExpression(serviceTask.getImplementation()); Expression skipExpression; if (StringUtils.isNotEmpty(serviceTask.getSkipExpression())) { skipExpression = expressionManager.createExpression(serviceTask.getSkipExpression()); } else { skipExpression = null; } return new ServiceTaskDelegateExpressionActivityBehavior(serviceTask.getId(), delegateExpression, skipExpression, createFieldDeclarations(serviceTask.getFieldExtensions()), serviceTask.getMapExceptions()); }
@Override public ServiceTaskDelegateExpressionActivityBehavior createServiceTaskDelegateExpressionActivityBehavior(ServiceTask serviceTask) { Expression delegateExpression = expressionManager.createExpression(serviceTask.getImplementation()); return new ServiceTaskDelegateExpressionActivityBehavior(serviceTask.getId(), delegateExpression, getSkipExpressionFromServiceTask(serviceTask), createFieldDeclarations(serviceTask.getFieldExtensions()), serviceTask.getMapExceptions(), serviceTask.isTriggerable()); }