public void saveSingleTask()

in seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobTaskServiceImpl.java [419:486]


    public void saveSingleTask(long jobVersionId, PluginConfig pluginConfig) {
        funcPermissionCheck(SeatunnelFuncPermissionKeyConstant.SINGLE_TASK_CREATE, 0);
        JobTask jobTask;
        JobTask old = jobTaskDao.getTask(jobVersionId, pluginConfig.getPluginId());
        String pluginId = pluginConfig.getPluginId();
        try {
            checkConfigFormat(pluginConfig.getConfig());
            long id;
            if (old != null) {
                id = old.getId();
            } else {
                id = CodeGenerateUtils.getInstance().genCode();
                pluginId =
                        pluginId == null
                                ? String.valueOf(CodeGenerateUtils.getInstance().genCode())
                                : pluginId;
            }
            String connectorType;
            String transformOptionsStr = null;
            if (pluginConfig.getType().equals(PluginType.TRANSFORM)) {
                connectorType = pluginConfig.getConnectorType();
                if (pluginConfig.getTransformOptions() != null) {
                    transformOptionsStr =
                            JsonUtils.toJsonString(pluginConfig.getTransformOptions());
                }
                transformOptionCheck(connectorType, transformOptionsStr);
            } else {
                connectorType = getConnectorTypeFromDataSource(pluginConfig.getDataSourceId());
            }
            jobTask =
                    JobTask.builder()
                            .id(id)
                            .pluginId(pluginId)
                            .name(pluginConfig.getName())
                            .type(pluginConfig.getType().name().toUpperCase())
                            .dataSourceId(pluginConfig.getDataSourceId())
                            .config(pluginConfig.getConfig())
                            .sceneMode(
                                    pluginConfig.getSceneMode() == null
                                            ? null
                                            : pluginConfig.getSceneMode().name())
                            .versionId(jobVersionId)
                            .connectorType(connectorType)
                            .dataSourceOption(
                                    pluginConfig.getTableOption() == null
                                            ? null
                                            : JsonUtils.toJsonString(pluginConfig.getTableOption()))
                            .selectTableFields(
                                    pluginConfig.getSelectTableFields() == null
                                            ? null
                                            : JsonUtils.toJsonString(
                                                    pluginConfig.getSelectTableFields()))
                            .outputSchema(
                                    pluginConfig.getOutputSchema() == null
                                            ? null
                                            : JsonUtils.toJsonString(
                                                    pluginConfig.getOutputSchema()))
                            .transformOptions(transformOptionsStr)
                            .build();
        } catch (Exception e) {
            throw new SeatunnelException(SeatunnelErrorEnum.ILLEGAL_STATE, e.getMessage());
        }
        if (old != null) {
            jobTaskDao.updateTask(jobTask);
        } else {
            jobTaskDao.insertTask(jobTask);
        }
    }