public void insert()

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);

    }