mirror of
https://github.com/HWienhold/indu-reboot.git
synced 2026-02-07 00:07:44 +00:00
create Task via Template in service
This commit is contained in:
parent
c77912e4b0
commit
26b505c021
@ -22,7 +22,7 @@ public class ApplianceService {
|
||||
private final ApplianceRepository repository;
|
||||
private final WebClient.Builder webClientBuilder;
|
||||
|
||||
public ApplianceResponse createApplianceAndRegister(ApplianceRequest request, String site_id) {
|
||||
public ApplianceResponse createApplianceAndRegister(ApplianceRequest request, String siteId) {
|
||||
Appliance app = Appliance.builder()
|
||||
.qrCode(request.getQrCode())
|
||||
.applianceClass(request.getApplianceClass())
|
||||
@ -34,7 +34,7 @@ public class ApplianceService {
|
||||
|
||||
repository.save(app);
|
||||
log.info("Added {} to db", app.getId());
|
||||
registerAppliance(app, site_id);
|
||||
registerAppliance(app, siteId);
|
||||
return mapApplianceToResponse(app);
|
||||
}
|
||||
|
||||
@ -43,14 +43,14 @@ public class ApplianceService {
|
||||
return mapApplianceToResponse(app);
|
||||
}
|
||||
|
||||
private void registerAppliance(Appliance app, String site_id) {
|
||||
private void registerAppliance(Appliance app, String siteId) {
|
||||
webClientBuilder.build().patch()
|
||||
.uri("http://localhost:8080/api/sites/" + site_id + "/register",
|
||||
.uri("http://localhost:8080/api/sites/" + siteId + "/register",
|
||||
uri-> uri.queryParam("id", app.getId()).build()
|
||||
).retrieve()
|
||||
.bodyToMono(SiteResponse.class)
|
||||
.doOnNext(res->log.info("Registered successfully app " + app.getId() + " to site " + site_id + " " + res))
|
||||
.doOnError(res->log.error("Registration of app " + app.getId() + " to site " + site_id + " failed " + res))
|
||||
.doOnNext(res->log.info("Registered successfully app " + app.getId() + " to site " + siteId + " " + res))
|
||||
.doOnError(res->log.error("Registration of app " + app.getId() + " to site " + siteId + " failed " + res))
|
||||
.subscribe();
|
||||
}
|
||||
|
||||
|
||||
@ -42,6 +42,10 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
|
||||
@ -6,6 +6,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PatchMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
@ -59,4 +60,14 @@ public class TaskController {
|
||||
public TaskResponse createTaskFromTemplate(@RequestBody TaskTemplateDto template) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@PostMapping(path="/byTemplate")
|
||||
public TaskResponse createTaskFromTemplateId(@RequestAttribute(value="id") String templateId) {
|
||||
return service.createByTemplateId(templateId);
|
||||
}
|
||||
|
||||
@PostMapping(path="/byTemplate")
|
||||
public TaskResponse createTaskFromTemplateName(@RequestAttribute(value="group_id") String templateName) {
|
||||
return service.createByTemplateName(templateName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package com.indu.taskservice.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class User {
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
package com.indu.taskservice.repository;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
|
||||
import com.indu.taskservice.dto.TaskTemplateDto;
|
||||
import com.indu.taskservice.model.TaskTemplate;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class TaskTemplateRepository {
|
||||
|
||||
private final WebClient.Builder webClientBuilder;
|
||||
|
||||
public TaskTemplate fetchById(String id) {
|
||||
TaskTemplateDto taskTemplateResponse = webClientBuilder.build().get()
|
||||
.uri("http://localhost:8080/api/template/tasks/" + id).retrieve()
|
||||
.bodyToMono(TaskTemplateDto.class)
|
||||
.block();
|
||||
return createFromDto(taskTemplateResponse);
|
||||
}
|
||||
|
||||
public TaskTemplate fetchByName(String groupId) {
|
||||
TaskTemplateDto taskTemplateResponse = webClientBuilder.build().get()
|
||||
.uri("http://localhost:8080/api/template/tasks",
|
||||
uri->uri.queryParam("group_id", groupId).build()
|
||||
).retrieve()
|
||||
.bodyToMono(TaskTemplateDto.class)
|
||||
.block();
|
||||
return createFromDto(taskTemplateResponse);
|
||||
}
|
||||
|
||||
public TaskTemplate createFromDto(TaskTemplateDto taskTemplateDto) {
|
||||
return TaskTemplate.builder()
|
||||
.id(taskTemplateDto.getId())
|
||||
.name(taskTemplateDto.getName())
|
||||
.abortAction(taskTemplateDto.getAbortAction())
|
||||
.initialState(taskTemplateDto.getInitialState())
|
||||
.requiredFieldOnFinish(taskTemplateDto.getRequiredFieldOnFinish())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@ -15,7 +15,10 @@ import com.indu.taskservice.exception.TaskChangedException;
|
||||
import com.indu.taskservice.model.AbortAction;
|
||||
import com.indu.taskservice.model.Task;
|
||||
import com.indu.taskservice.model.TaskState;
|
||||
import com.indu.taskservice.model.TaskTemplate;
|
||||
import com.indu.taskservice.model.User;
|
||||
import com.indu.taskservice.repository.TaskRepository;
|
||||
import com.indu.taskservice.repository.TaskTemplateRepository;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.ws.rs.NotFoundException;
|
||||
@ -26,6 +29,7 @@ import lombok.RequiredArgsConstructor;
|
||||
public class TaskService {
|
||||
|
||||
private final TaskRepository repository;
|
||||
private final TaskTemplateRepository taskTemplateRepo;
|
||||
|
||||
public List<TaskResponse> getAllTasks() {
|
||||
return repository.findAll().stream().map(task -> TaskMapper.instance.taskToResponse(task)).toList();
|
||||
@ -66,7 +70,10 @@ public class TaskService {
|
||||
public TaskResponse activateTask(String id, @Valid EditorData editor) {
|
||||
Task task = getTaskById(id);
|
||||
TaskState state = task.getTemplate().getActivationState();
|
||||
return null;
|
||||
// TODO: validate is WAITING (?)
|
||||
task.setState(state);
|
||||
repository.save(task);
|
||||
return TaskMapper.instance.taskToResponse(task);
|
||||
}
|
||||
|
||||
public void activateTask(Task task) {
|
||||
@ -155,4 +162,37 @@ public class TaskService {
|
||||
}
|
||||
}
|
||||
|
||||
public TaskResponse createByTemplateId(String templateId) {
|
||||
TaskTemplate template = taskTemplateRepo.fetchById(templateId);
|
||||
Task newTask = createAndSave(template);
|
||||
return TaskMapper.instance.taskToResponse(newTask);
|
||||
}
|
||||
|
||||
public TaskResponse createByTemplateName(String templateName) {
|
||||
TaskTemplate template = taskTemplateRepo.fetchByName(templateName);
|
||||
Task newTask = createAndSave(template);
|
||||
return TaskMapper.instance.taskToResponse(newTask);
|
||||
}
|
||||
|
||||
public Task createFromTemplate(TaskTemplate template) {
|
||||
EditorData editor = EditorData.builder()
|
||||
.lastEdited(new Date())
|
||||
.editor(User.builder()
|
||||
.lastName("SYSTEM")
|
||||
.build())
|
||||
.build();
|
||||
|
||||
return Task.builder()
|
||||
.editor (editor)
|
||||
.state(template.getInitialState())
|
||||
.template(template)
|
||||
.build();
|
||||
}
|
||||
|
||||
public Task createAndSave(TaskTemplate template) {
|
||||
Task task = createFromTemplate(template);
|
||||
repository.save(task);
|
||||
return task;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
package com.indu.workflowtemplateservice.dto;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -11,6 +14,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
@Builder
|
||||
public class WorkflowTemplateRequest {
|
||||
private String id;
|
||||
@ -18,5 +22,10 @@ public class WorkflowTemplateRequest {
|
||||
@NotNull
|
||||
private String name; // unique identifier for sequence
|
||||
|
||||
private List<String> tasks;
|
||||
// TODO: allow to be added direclty, for now tasks must be added bf and added here via id
|
||||
private List<String> tasks_ids;
|
||||
// private List<String> workflow_ids;
|
||||
|
||||
|
||||
private Map<String, String> requiredFieldOnFinish; // for now just requiredFields => pattern
|
||||
}
|
||||
|
||||
@ -26,10 +26,12 @@ public class WorkflowTemplate {
|
||||
private char identiferPrefix;
|
||||
@Indexed(unique = true)
|
||||
private String name; // unique identifier for sequence
|
||||
private List<TaskTemplateData> tasks;
|
||||
private List<String> tasks; //ids
|
||||
|
||||
private int subflowStart;
|
||||
// private int subflowStart; // activate sub flows when workflow gets activated
|
||||
|
||||
@DBRef
|
||||
@DBRef(lazy=true)
|
||||
private List<WorkflowTemplate> subWorkflow;
|
||||
|
||||
private String parent_id;
|
||||
}
|
||||
|
||||
@ -31,8 +31,12 @@ public class WorkflowTemplateService {
|
||||
throw new NameAlreadyTakenException(request.getName());
|
||||
}
|
||||
|
||||
WorkflowTemplate template = WorkflowTemplate.builder().identiferPrefix(request.getIdentiferPrefix())
|
||||
.name(request.getName()).build();
|
||||
|
||||
WorkflowTemplate template = WorkflowTemplate.builder()
|
||||
.identiferPrefix(request.getIdentiferPrefix())
|
||||
.name(request.getName())
|
||||
.tasks(request.getTasks_ids())
|
||||
.build();
|
||||
|
||||
repository.save(template);
|
||||
return template;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user