public void setVariableValue(String variableId, Object value) {
if (variableInstances!=null) {
VariableInstanceImpl variableInstance = getVariableInstanceLocal(variableId);
if (variableInstance!=null) {
setVariableValue(variableInstance, value);
return;
}
}
if (parent!=null) {
parent.setVariableValue(variableId, value);
return;
}
DataTypeService dataTypeService = configuration.get(DataTypeService.class);
Class<?> valueClass = value!=null ? value.getClass() : null;
DataTypeImpl dataType = dataTypeService.getDataTypeByValue(valueClass);
if (dataType==null) {
throw new RuntimeException("Couldn't determine data type dynamically for value "+value);
}
VariableInstanceImpl variableInstance = createVariableInstanceLocal(variableId, dataType);
setVariableValue(variableInstance, value);
}