in extension/storage/storage-mysql/src/main/java/com/alibaba/smart/framework/engine/persister/database/service/RelationshipDatabaseVariableInstanceStorage.java [28:81]
public void insert(VariablePersister variablePersister, VariableInstance variableInstance,
ProcessEngineConfiguration processEngineConfiguration) {
Object value = variableInstance.getFieldValue();
if (null == value) {
throw new EngineException("value can not be null: "+ variableInstance);
}
VariableInstanceDAO variableInstanceDAO = (VariableInstanceDAO)processEngineConfiguration.getInstanceAccessor().access("variableInstanceDAO");
VariableInstanceEntity variableInstanceEntity = new VariableInstanceEntity();
String variableInstanceInstanceId = variableInstance.getInstanceId();
if(null != variableInstanceInstanceId){
variableInstanceEntity.setId(Long.valueOf(variableInstanceInstanceId));
}
variableInstanceEntity.setExecutionInstanceId((Long.valueOf(variableInstance.getExecutionInstanceId())));
variableInstanceEntity.setFieldKey(variableInstance.getFieldKey());
variableInstanceEntity.setProcessInstanceId((Long.valueOf(variableInstance.getProcessInstanceId())));
Class fieldType = variableInstance.getFieldType();
if(null != fieldType){
variableInstanceEntity.setFieldType(fieldType.getName());
if (isAssignableFromString(fieldType)) {
variableInstanceEntity.setFieldStringValue((String)value);
} else if (isAssignableFromBoolean(fieldType)) {
variableInstanceEntity.setFieldStringValue(String.valueOf(value));
} else if (isAssignableFromInteger(fieldType)) {
variableInstanceEntity.setFieldLongValue(Long.valueOf((Integer)value));
} else if (isAssignableFromShort(fieldType)) {
variableInstanceEntity.setFieldLongValue(Long.valueOf((Short)value));
} else if (isAssignableFromLong(fieldType)) {
variableInstanceEntity.setFieldLongValue((Long)value);
} else if (isAssignableFromFloat(fieldType)) {
variableInstanceEntity.setFieldDoubleValue(Double.valueOf((Float)value));
} else if (isAssignableFromDouble(fieldType)) {
variableInstanceEntity.setFieldDoubleValue((Double)value);
} else if (byte.class.isAssignableFrom(fieldType) || byte[].class.isAssignableFrom(fieldType)) {
throw new EngineException("NOT support byte group so far");
} else if (char.class.isAssignableFrom(fieldType) || char[].class.isAssignableFrom(fieldType)) {
throw new EngineException("NOT support char group so far");
}else {
serialize(variablePersister, value, variableInstanceEntity);
}
} else {
serialize(variablePersister, value, variableInstanceEntity);
}
Date currentDate = DateUtil.getCurrentDate();
variableInstanceEntity.setGmtCreate(currentDate);
variableInstanceEntity.setGmtModified(currentDate);
variableInstanceDAO.insert(variableInstanceEntity);
}