public ProcessTaskActivityBehavior(Process process, Expression processRefExpression, ProcessTask processTask) { super(processTask.isBlocking(), processTask.getBlockingExpression()); this.process = process; this.processRefExpression = processRefExpression; this.processRef = processTask.getProcessRef(); this.inParameters = processTask.getInParameters(); this.outParameters = processTask.getOutParameters(); this.fallbackToDefaultTenant = processTask.getFallbackToDefaultTenant(); }
@Override protected void writePlanItemDefinitionBody(CmmnModel model, ProcessTask processTask, XMLStreamWriter xtw) throws Exception { super.writePlanItemDefinitionBody(model, processTask, xtw); if (StringUtils.isNotEmpty(processTask.getProcessRef()) || StringUtils.isNotEmpty(processTask.getProcessRefExpression())) { xtw.writeStartElement(ELEMENT_PROCESS_REF_EXPRESSION); xtw.writeCData( StringUtils.isNotEmpty(processTask.getProcessRef()) ? processTask.getProcessRef() : processTask.getProcessRefExpression() ); xtw.writeEndElement(); } }
@Override protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { ProcessTask processTask = new ProcessTask(); convertCommonTaskAttributes(xtr, processTask); processTask.setProcessRef(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_PROCESS_REF)); String fallbackToDefaultTenantValue = xtr.getAttributeValue(CmmnXmlConstants.FLOWABLE_EXTENSIONS_NAMESPACE, CmmnXmlConstants.ATTRIBUTE_FALLBACK_TO_DEFAULT_TENANT); if (fallbackToDefaultTenantValue != null) { processTask.setFallbackToDefaultTenant(Boolean.parseBoolean(fallbackToDefaultTenantValue)); } return processTask; }
@Override protected boolean writePlanItemDefinitionExtensionElements(CmmnModel model, ProcessTask processTask, boolean didWriteExtensionElement, XMLStreamWriter xtw) throws Exception { boolean extensionElementWritten = super.writePlanItemDefinitionExtensionElements(model, processTask, didWriteExtensionElement, xtw); extensionElementWritten = writeIOParameters(ELEMENT_PROCESS_TASK_IN_PARAMETERS, processTask.getInParameters(), extensionElementWritten, xtw); extensionElementWritten = writeIOParameters(ELEMENT_PROCESS_TASK_OUT_PARAMETERS, processTask.getOutParameters(), extensionElementWritten, xtw); return extensionElementWritten; }
@Override public ProcessTaskActivityBehavior createProcessTaskActivityBehavior(PlanItem planItem, ProcessTask processTask) { Expression processRefExpression = createExpression(processTask.getProcessRefExpression()); return new ProcessTaskActivityBehavior(processTask.getProcess(), processRefExpression, processTask); }
if (processTask.getProcessRef() != null) { org.flowable.cmmn.model.Process process = cmmnModel.getProcessById(processTask.getProcessRef()); if (process != null) { processTask.setProcess(process);
@Override protected void writePlanItemDefinitionSpecificAttributes(ProcessTask processTask, XMLStreamWriter xtw) throws Exception { super.writePlanItemDefinitionSpecificAttributes(processTask, xtw); TaskExport.writeCommonTaskAttributes(processTask, xtw); // fallback to default tenant if (processTask.getFallbackToDefaultTenant() != null) { xtw.writeAttribute(FLOWABLE_EXTENSIONS_PREFIX, FLOWABLE_EXTENSIONS_NAMESPACE, ATTRIBUTE_FALLBACK_TO_DEFAULT_TENANT, String.valueOf(processTask.getFallbackToDefaultTenant())); } }
protected void readIOParameter(XMLStreamReader xtr, boolean isInParameter, ConversionHelper conversionHelper) { if (!(conversionHelper.getCurrentCmmnElement() instanceof ProcessTask)) { return; } ProcessTask processTask = (ProcessTask) conversionHelper.getCurrentCmmnElement(); String source = xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_IOPARAMETER_SOURCE); String sourceExpression = xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_IOPARAMETER_SOURCE_EXPRESSION); String target = xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_IOPARAMETER_TARGET); String targetExpression = xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_IOPARAMETER_TARGET_EXPRESSION); IOParameter parameter = new IOParameter(); if (StringUtils.isNotEmpty(sourceExpression)) { parameter.setSourceExpression(sourceExpression); } else { parameter.setSource(source); } if (StringUtils.isNotEmpty(targetExpression)) { parameter.setTargetExpression(targetExpression); } else { parameter.setTarget(target); } if (isInParameter) { processTask.getInParameters().add(parameter); } else { processTask.getOutParameters().add(parameter); } }