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