private void updateContext(final Map<String, Object> output, final ProcessDefinitionUUID parentProcessDefinitionUUID, final String fieldNameExpression, final Object evaluatedFieldValue) throws GroovyException, Exception { String fieldName = fieldNameExpression; Object newValue = evaluatedFieldValue; if (fieldNameExpression.contains(BonitaConstants.XPATH_VAR_SEPARATOR) || fieldNameExpression.contains(BonitaConstants.JAVA_VAR_SEPARATOR)) { fieldName = Misc.getVariableName(fieldNameExpression); final Object currentValue = output.get(fieldName); if (currentValue == null) { throw new GroovyException("The variable '" + fieldName + "' was not found in the context map or it's null"); } if (fieldNameExpression.contains(BonitaConstants.XPATH_VAR_SEPARATOR)) { if (currentValue instanceof Document) { newValue = getXMLValueXPath(fieldNameExpression, evaluatedFieldValue, (Document) currentValue); } else { throw new GroovyException("The variable '" + fieldName + "' is not a Document"); } } else if (fieldNameExpression.contains(BonitaConstants.JAVA_VAR_SEPARATOR)) { newValue = getModifiedJavaObject(parentProcessDefinitionUUID, fieldNameExpression, currentValue, evaluatedFieldValue); } } output.put(fieldName, newValue); }
private Object getModifiedJavaObject(final String variableExpression, final Object attributeValue, final ActivityInstance activity, final ProcessInstance processInstance) throws ActivityNotFoundException, VariableNotFoundException, InstanceNotFoundException { final String variableName = Misc.getVariableName(variableExpression); ActivityInstanceUUID activityUUID = null; if (activity != null) { activityUUID = activity.getUUID(); } ProcessInstanceUUID processInstanceUUID = null; if (processInstance != null) { processInstanceUUID = processInstance.getUUID(); } final Object data = getVariable(variableName, activityUUID, processInstanceUUID); final ProcessDefinitionUUID processDefUUID = getProcessDefinitionUUID(activity, processInstance); return getModifiedJavaObject(processDefUUID, variableExpression, data, attributeValue); }
try { targetVariable = Misc.getVariableName(variableId); newValue = getModifiedJavaObject(variableId, variableValue, activity, null); } catch (final Exception ex) { throw new VariableNotFoundException("bai_RAPII_35", instanceUUID, activityId, variableId);
try { targetVariable = Misc.getVariableName(variableId); newValue = getModifiedJavaObject(variableId, variableValue, null, instance); } catch (final Exception ex) { throw new VariableNotFoundException("bai_RAPII_34", instanceUUID, null, variableId);