@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.getTargetExpression())) { Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(ioParameter.getTargetExpression()); variableName = expression.getValue(planItemInstanceEntity).toString();