public void setValues(ScriptTask otherElement) { super.setValues(otherElement); setScriptFormat(otherElement.getScriptFormat()); setScript(otherElement.getScript()); setResultVariable(otherElement.getResultVariable()); setAutoStoreVariables(otherElement.isAutoStoreVariables()); } }
@Override public ScriptTask clone() { ScriptTask clone = new ScriptTask(); clone.setValues(this); return clone; }
@Override public ScriptTaskActivityBehavior createScriptTaskActivityBehavior(ScriptTask scriptTask) { String language = scriptTask.getScriptFormat(); if (language == null) { language = ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE; } return new ScriptTaskActivityBehavior(scriptTask.getId(), scriptTask.getScript(), language, scriptTask.getResultVariable(), scriptTask.isAutoStoreVariables()); }
@Override protected void convertElementToJson(ObjectNode propertiesNode, BaseElement baseElement) { ScriptTask scriptTask = (ScriptTask) baseElement; propertiesNode.put(PROPERTY_SCRIPT_FORMAT, scriptTask.getScriptFormat()); propertiesNode.put(PROPERTY_SCRIPT_TEXT, scriptTask.getScript()); propertiesNode.put(PROPERTY_SCRIPT_AUTO_STORE_VARIABLES, scriptTask.isAutoStoreVariables()); }
@Override protected BaseElement convertXMLToElement(XMLStreamReader xtr, BpmnModel model) throws Exception { ScriptTask scriptTask = new ScriptTask(); BpmnXMLUtil.addXMLLocation(scriptTask, xtr); scriptTask.setScriptFormat(xtr.getAttributeValue(null, ATTRIBUTE_TASK_SCRIPT_FORMAT)); scriptTask.setResultVariable(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_TASK_SCRIPT_RESULTVARIABLE, xtr)); if (StringUtils.isEmpty(scriptTask.getResultVariable())) { scriptTask.setResultVariable(BpmnXMLUtil.getAttributeValue(ATTRIBUTE_TASK_SERVICE_RESULTVARIABLE, xtr)); } String autoStoreVariables = BpmnXMLUtil.getAttributeValue(ATTRIBUTE_TASK_SCRIPT_AUTO_STORE_VARIABLE, xtr); if (StringUtils.isNotEmpty(autoStoreVariables)) { scriptTask.setAutoStoreVariables(Boolean.valueOf(autoStoreVariables)); } parseChildElements(getXMLElementName(), scriptTask, childParserMap, model, xtr); return scriptTask; }
@Override protected void writeAdditionalAttributes(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception { ScriptTask scriptTask = (ScriptTask) element; writeDefaultAttribute(ATTRIBUTE_TASK_SCRIPT_FORMAT, scriptTask.getScriptFormat(), xtw); writeQualifiedAttribute(ATTRIBUTE_TASK_SCRIPT_RESULTVARIABLE, scriptTask.getResultVariable(), xtw); writeQualifiedAttribute(ATTRIBUTE_TASK_SCRIPT_AUTO_STORE_VARIABLE, String.valueOf(scriptTask.isAutoStoreVariables()), xtw); }
@Override protected FlowElement convertJsonToElement(JsonNode elementNode, JsonNode modelNode, Map<String, JsonNode> shapeMap) { ScriptTask task = new ScriptTask(); task.setScriptFormat(getPropertyValueAsString(PROPERTY_SCRIPT_FORMAT, elementNode)); task.setScript(getPropertyValueAsString(PROPERTY_SCRIPT_TEXT, elementNode)); task.setAutoStoreVariables(getPropertyValueAsBoolean(PROPERTY_SCRIPT_AUTO_STORE_VARIABLES, elementNode)); return task; } }
@Override protected void writeAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) throws Exception { ScriptTask scriptTask = (ScriptTask) element; if (StringUtils.isNotEmpty(scriptTask.getScript())) { xtw.writeStartElement(ATTRIBUTE_TASK_SCRIPT_TEXT); xtw.writeCData(scriptTask.getScript()); xtw.writeEndElement(); } } }
@Override protected void executeParse(BpmnParse bpmnParse, ScriptTask scriptTask) { if (StringUtils.isEmpty(scriptTask.getScript())) { LOGGER.warn("No script provided for scriptTask {}", scriptTask.getId()); } ActivityImpl activity = createActivityOnCurrentScope(bpmnParse, scriptTask, BpmnXMLConstants.ELEMENT_TASK_SCRIPT); activity.setAsync(scriptTask.isAsynchronous()); activity.setExclusive(!scriptTask.isNotExclusive()); activity.setActivityBehavior(bpmnParse.getActivityBehaviorFactory().createScriptTaskActivityBehavior(scriptTask)); }
@Override protected void executeParse(BpmnParse bpmnParse, ScriptTask scriptTask) { if (StringUtils.isEmpty(scriptTask.getScript())) { LOGGER.warn("No script provided for scriptTask {}", scriptTask.getId()); } scriptTask.setBehavior(bpmnParse.getActivityBehaviorFactory().createScriptTaskActivityBehavior(scriptTask)); }
@Override public void parseChildElement(XMLStreamReader xtr, BaseElement parentElement, BpmnModel model) throws Exception { if (!(parentElement instanceof ScriptTask)) return; ((ScriptTask) parentElement).setScript(xtr.getElementText()); } }
@Override public ScriptTaskActivityBehavior createScriptTaskActivityBehavior(ScriptTask scriptTask) { String language = scriptTask.getScriptFormat(); if (language == null) { language = ScriptingEngines.DEFAULT_SCRIPTING_LANGUAGE; } return new ScriptTaskActivityBehavior(scriptTask.getId(), scriptTask.getScript(), language, scriptTask.getResultVariable(), scriptTask.isAutoStoreVariables()); }
@Override protected ObjectNode createPropertiesNode(FlowElement flowElement, ObjectNode flowElementNode, ObjectMapper objectMapper) { ScriptTask scriptTask = (ScriptTask) flowElement; ObjectNode scriptTextNode = objectMapper.createObjectNode(); putPropertyValue(BPMN_MODEL_VALUE, scriptTask.getScript(), scriptTextNode); putPropertyValue(DYNAMIC_VALUE, flowElementNode.path(SCRIPT_TASK_SCRIPT).textValue(), scriptTextNode); ObjectNode propertiesNode = objectMapper.createObjectNode(); propertiesNode.set(SCRIPT_TASK_SCRIPT, scriptTextNode); return propertiesNode; }
public void setValues(ScriptTask otherElement) { super.setValues(otherElement); setScriptFormat(otherElement.getScriptFormat()); setScript(otherElement.getScript()); setResultVariable(otherElement.getResultVariable()); setAutoStoreVariables(otherElement.isAutoStoreVariables()); } }
@Override protected ObjectNode createPropertiesNode(FlowElement flowElement, ObjectNode flowElementNode, ObjectMapper objectMapper) { ScriptTask scriptTask = (ScriptTask) flowElement; ObjectNode scriptTextNode = objectMapper.createObjectNode(); putPropertyValue(BPMN_MODEL_VALUE, scriptTask.getScript(), scriptTextNode); putPropertyValue(DYNAMIC_VALUE, flowElementNode.path(SCRIPT_TASK_SCRIPT).textValue(), scriptTextNode); ObjectNode propertiesNode = objectMapper.createObjectNode(); propertiesNode.set(SCRIPT_TASK_SCRIPT, scriptTextNode); return propertiesNode; }
@Override public ScriptTask clone() { ScriptTask clone = new ScriptTask(); clone.setValues(this); return clone; }
@Override protected void executeValidation(BpmnModel bpmnModel, Process process, List<ValidationError> errors) { List<ScriptTask> scriptTasks = process.findFlowElementsOfType(ScriptTask.class); for (ScriptTask scriptTask : scriptTasks) { if (StringUtils.isEmpty(scriptTask.getScript())) { addError(errors, Problems.SCRIPT_TASK_MISSING_SCRIPT, process, scriptTask, "No script provided for script task"); } } }