/** * Reverse engineers a {@link TaskDefinition} into a semantically equivalent DSL text representation. * @param taskDefinition task definition to be converted into DSL * @return the textual DSL representation of the task */ public String toDsl(TaskDefinition taskDefinition) { if (StringUtils.hasText(taskDefinition.getDslText())) { TaskParser taskParser = new TaskParser("__dummy", taskDefinition.getDslText(), true, true); Assert.isTrue(!taskParser.parse().isComposed(), "The TaskDefinitionToDslConverter doesn't support Composed Tasks!"); } StringBuilder dslBuilder = new StringBuilder(); Map<String, String> properties = taskDefinition.getProperties(); dslBuilder.append(taskDefinition.getRegisteredAppName()); for (String propertyName : properties.keySet()) { if (!dataFlowAddedProperties.contains(propertyName)) { String propertyValue = StringEscapeUtils.unescapeHtml(properties.get(propertyName)); dslBuilder.append(" --").append(propertyName).append("=").append( DefinitionUtils.autoQuotes(propertyValue)); } } return dslBuilder.toString(); } }
@Override public <S extends TaskDefinition> S save(S definition) { Assert.notNull(definition, "definition must not be null"); if (exists(definition.getName())) { throw new DuplicateTaskException(String.format( "Cannot register task %s because another one has already " + "been registered with the same name", definition.getName())); } Object[] insertParameters = new Object[] { definition.getName(), definition.getDslText() }; jdbcTemplate.update(saveRow, insertParameters, new int[] { Types.VARCHAR, Types.LONGVARCHAR }); return definition; }
protected Resource getTaskResource(String taskDefinitionName) { TaskDefinition taskDefinition = this.taskDefinitionRepository.findById(taskDefinitionName) .orElseThrow(() -> new NoSuchTaskDefinitionException(taskDefinitionName)); AppRegistration appRegistration = null; if (TaskServiceUtils.isComposedTaskDefinition(taskDefinition.getDslText())) { appRegistration = this.registry.find(taskConfigurationProperties.getComposedTaskRunnerName(), ApplicationType.task); } else { appRegistration = this.registry.find(taskDefinition.getRegisteredAppName(), ApplicationType.task); } Assert.notNull(appRegistration, "Unknown task app: " + taskDefinition.getRegisteredAppName()); return this.registry.getAppResource(appRegistration); }
ValidationStatus validationStatus = new ValidationStatus( definition.getName(), definition.getDslText()); ApplicationType appType = ApplicationType.task; if (TaskServiceUtils.isComposedTaskDefinition(definition.getDslText())) { TaskParser taskParser = new TaskParser(name, definition.getDslText(), true, true); TaskNode taskNode = taskParser.parse(); String childTaskPrefix = TaskNode.getTaskPrefix(name);
ValidationStatus validationStatus = new ValidationStatus( definition.getName(), definition.getDslText()); ApplicationType appType = ApplicationType.task; if (TaskServiceUtils.isComposedTaskDefinition(definition.getDslText())) { TaskParser taskParser = new TaskParser(name, definition.getDslText(), true, true); TaskNode taskNode = taskParser.parse(); String childTaskPrefix = TaskNode.getTaskPrefix(name);
protected Resource getTaskResource(String taskDefinitionName) { TaskDefinition taskDefinition = this.taskDefinitionRepository.findOne(taskDefinitionName); if (taskDefinition == null) { throw new NoSuchTaskDefinitionException(taskDefinitionName); } AppRegistration appRegistration = null; if (TaskServiceUtils.isComposedTaskDefinition(taskDefinition.getDslText())) { appRegistration = this.registry.find(taskConfigurationProperties.getComposedTaskRunnerName(), ApplicationType.task); } else { appRegistration = this.registry.find(taskDefinition.getRegisteredAppName(), ApplicationType.task); } Assert.notNull(appRegistration, "Unknown task app: " + taskDefinition.getRegisteredAppName()); return this.registry.getAppResource(appRegistration); }
@Override public TaskDefinitionResource instantiateResource(TaskDefinition taskDefinition) { ModuleDeploymentId id = ModuleDeploymentId.fromModuleDefinition(taskDefinition.getModuleDefinition()); TaskDefinitionResource taskDefinitionResource = new TaskDefinitionResource(taskDefinition.getName(), taskDefinition.getDslText()); taskDefinitionResource.setStatus(moduleDeployer.status(id).getState().name()); return taskDefinitionResource; } }
private void deleteTaskDefinition(TaskDefinition taskDefinition) { TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse(); // if composed-task-runner definition then destroy all child tasks associated with it. if (taskNode.isComposed()) { String childTaskPrefix = TaskNode.getTaskPrefix(taskDefinition.getTaskName()); // destroy composed child tasks taskNode.getTaskApps().forEach(task -> { String childName = task.getName(); if (task.getLabel() != null) { childName = task.getLabel(); } destroyChildTask(childTaskPrefix + childName); }); } // destroy normal task or composed parent task destroyPrimaryTask(taskDefinition.getTaskName()); }
@Override public void deleteTaskDefinition(String name) { TaskDefinition taskDefinition = taskDefinitionRepository.findOne(name); if (taskDefinition == null) { throw new NoSuchTaskDefinitionException(name); } TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse(); // if composed-task-runner definition then destroy all child tasks associated with // it. if (taskNode.isComposed()) { String childTaskPrefix = TaskNode.getTaskPrefix(name); // destroy composed child tasks taskNode.getTaskApps().stream().forEach(task -> { String childName = task.getName(); if (task.getLabel() != null) { childName = task.getLabel(); } destroyChildTask(childTaskPrefix + childName); }); } // destroy normal task or composed parent task destroyPrimaryTask(name); auditRecordService.populateAndSaveAuditRecord( AuditOperationType.TASK, AuditActionType.DELETE, name, this.argumentSanitizer.sanitizeTaskDsl(taskDefinition)); }
@Override public TaskDefinitionResource instantiateResource(TaskExecutionAwareTaskDefinition taskExecutionAwareTaskDefinition) { boolean composed = taskService.isComposedDefinition(taskExecutionAwareTaskDefinition.getTaskDefinition().getDslText()); TaskDefinitionResource taskDefinitionResource = new TaskDefinitionResource(taskExecutionAwareTaskDefinition.getTaskDefinition().getName(), argumentSanitizer.sanitizeTaskDsl(taskExecutionAwareTaskDefinition.getTaskDefinition())); if(taskExecutionAwareTaskDefinition.getLatestTaskExecution() != null) { taskDefinitionResource.setLastTaskExecution(new TaskExecutionResource(taskExecutionAwareTaskDefinition.getLatestTaskExecution())); } taskDefinitionResource.setComposed(composed); return taskDefinitionResource; } }
TaskDefinition taskDefinition = this.taskDefinitionRepository.findById(taskDefinitionName) .orElseThrow(() -> new NoSuchTaskDefinitionException(taskDefinitionName)); TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse();
@Override public TaskDefinitionResource instantiateResource( TaskExecutionAwareTaskDefinition taskExecutionAwareTaskDefinition) { boolean composed = TaskServiceUtils .isComposedTaskDefinition(taskExecutionAwareTaskDefinition.getTaskDefinition().getDslText()); TaskDefinitionResource taskDefinitionResource = new TaskDefinitionResource( taskExecutionAwareTaskDefinition.getTaskDefinition().getName(), argumentSanitizer.sanitizeTaskDsl(taskExecutionAwareTaskDefinition.getTaskDefinition())); if (taskExecutionAwareTaskDefinition.getLatestTaskExecution() != null) { taskDefinitionResource.setLastTaskExecution( new TaskExecutionResource(taskExecutionAwareTaskDefinition.getLatestTaskExecution())); } taskDefinitionResource.setComposed(composed); return taskDefinitionResource; } }
throw new NoSuchTaskDefinitionException(taskName); TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse();
TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse();
throw new NoSuchTaskDefinitionException(taskDefinitionName); TaskParser taskParser = new TaskParser(taskDefinition.getName(), taskDefinition.getDslText(), true, true); TaskNode taskNode = taskParser.parse();