in extension/storage/storage-mysql/src/main/java/com/alibaba/smart/framework/engine/persister/database/service/RelationshipDatabaseVariableInstanceStorage.java [111:157]
private List<VariableInstance> build(VariablePersister variablePersister, List<VariableInstanceEntity> list) {
List<VariableInstance> variableInstanceList;
variableInstanceList = new ArrayList<VariableInstance>(list.size());
for (VariableInstanceEntity variableInstanceEntity : list) {
VariableInstance variableInstance = new DefaultVariableInstance();
variableInstance.setInstanceId(variableInstanceEntity.getId().toString());
variableInstance.setStartTime(variableInstanceEntity.getGmtCreate());
variableInstance.setCompleteTime(variableInstanceEntity.getGmtModified());
variableInstance.setProcessInstanceId(variableInstanceEntity.getProcessInstanceId().toString());
variableInstance.setExecutionInstanceId(variableInstanceEntity.getExecutionInstanceId().toString());
variableInstance.setFieldKey(variableInstanceEntity.getFieldKey());
String fieldType1 = variableInstanceEntity.getFieldType();
//TUNE CACHE
try {
Class<?> fieldType = Class.forName(fieldType1);
variableInstance.setFieldType(fieldType);
if (isAssignableFromString(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldStringValue());
} else if (isAssignableFromBoolean(fieldType)) {
variableInstance.setFieldValue(Boolean.valueOf(variableInstanceEntity.getFieldStringValue()));
} else if (isAssignableFromInteger(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue().intValue());
} else if (isAssignableFromShort(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue().shortValue());
} else if (isAssignableFromLong(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue());
} else if (isAssignableFromFloat(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldDoubleValue().floatValue());
} else if (isAssignableFromDouble(fieldType)) {
variableInstance.setFieldValue(variableInstanceEntity.getFieldDoubleValue());
} else {
//ASSUME the others are all pojos.
Object serializedValue = variablePersister.deserialize(variableInstanceEntity.getFieldKey(),variableInstanceEntity
.getFieldType(),variableInstanceEntity.getFieldStringValue());
variableInstance.setFieldValue(serializedValue);
}
} catch (ClassNotFoundException e) {
LOGGER.error(e.getMessage(), e);
}
variableInstanceList.add(variableInstance);
}
return variableInstanceList;
}