protected boolean writeIOParameters(String elementName, List<IOParameter> parameterList, boolean didWriteParameterStartElement, XMLStreamWriter xtw) throws Exception { if (parameterList == null || parameterList.isEmpty()) { return didWriteParameterStartElement; } for (IOParameter ioParameter : parameterList) { if (!didWriteParameterStartElement) { xtw.writeStartElement(ELEMENT_EXTENSION_ELEMENTS); didWriteParameterStartElement = true; } xtw.writeStartElement(FLOWABLE_EXTENSIONS_PREFIX, elementName, FLOWABLE_EXTENSIONS_NAMESPACE); if (StringUtils.isNotEmpty(ioParameter.getSource())) { xtw.writeAttribute(ATTRIBUTE_IOPARAMETER_SOURCE, ioParameter.getSource()); } if (StringUtils.isNotEmpty(ioParameter.getSourceExpression())) { xtw.writeAttribute(ATTRIBUTE_IOPARAMETER_SOURCE_EXPRESSION, ioParameter.getSourceExpression()); } if (StringUtils.isNotEmpty(ioParameter.getTarget())) { xtw.writeAttribute(ATTRIBUTE_IOPARAMETER_TARGET, ioParameter.getTarget()); } xtw.writeEndElement(); } return didWriteParameterStartElement; }
for (IOParameter ioParameter : processInstanceService.getOutputParametersOfCaseTask(callbackData.getCallbackId())) { Object value = null; if (StringUtils.isNotEmpty(ioParameter.getSourceExpression())) { Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(ioParameter.getSourceExpression().trim()); value = expression.getValue(caseInstance);
@Override public void onStateTransition(CommandContext commandContext, DelegatePlanItemInstance planItemInstance, String transition) { if (PlanItemInstanceState.ACTIVE.equals(planItemInstance.getState())) { // The process task plan item will be deleted by the regular TerminatePlanItemOperation if (PlanItemTransition.TERMINATE.equals(transition) || PlanItemTransition.EXIT.equals(transition)) { deleteProcessInstance(commandContext, planItemInstance); } else if (PlanItemTransition.COMPLETE.equals(transition)) { CmmnEngineConfiguration cmmnEngineConfiguration = CommandContextUtil.getCmmnEngineConfiguration(commandContext); ProcessInstanceService processInstanceService = cmmnEngineConfiguration.getProcessInstanceService(); CaseInstanceEntity caseInstance = cmmnEngineConfiguration.getCaseInstanceEntityManager().findById(planItemInstance.getCaseInstanceId()); for (IOParameter ioParameter : outParameters) { String variableName = null; if (StringUtils.isNotEmpty(ioParameter.getTarget())) { variableName = ioParameter.getTarget(); } else if (StringUtils.isNotEmpty(ioParameter.getTargetExpression())) { Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(ioParameter.getTargetExpression()); variableName = expression.getValue(planItemInstance).toString(); } Object variableValue = null; if (StringUtils.isNotEmpty(ioParameter.getSourceExpression())) { Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(ioParameter.getSourceExpression()); variableValue = processInstanceService.getVariables(planItemInstance.getReferenceId()).get(expression.getValue(planItemInstance).toString()); } else if (StringUtils.isNotEmpty(ioParameter.getSource())) { variableValue = processInstanceService.getVariables(planItemInstance.getReferenceId()).get(ioParameter.getSource()); } caseInstance.setVariable(variableName, variableValue); } } } }
if (StringUtils.isNotEmpty(ioParameter.getSourceExpression())) { Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(ioParameter.getSourceExpression()); variableValue = expression.getValue(planItemInstanceEntity);