dnet-applications/apps/dnet-is-application/src/main/java/eu/dnetlib/manager/wf/WfInstancesController.java

81 lines
2.9 KiB
Java
Raw Normal View History

2023-03-10 15:20:49 +01:00
package eu.dnetlib.manager.wf;
import java.util.List;
2023-03-21 12:13:23 +01:00
import java.util.stream.Collectors;
2023-03-10 15:20:49 +01:00
2023-03-21 15:28:18 +01:00
import org.springframework.web.bind.annotation.DeleteMapping;
2023-03-10 15:20:49 +01:00
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
2023-03-21 15:28:18 +01:00
import org.springframework.web.bind.annotation.PostMapping;
2023-03-10 15:20:49 +01:00
import org.springframework.web.bind.annotation.RequestMapping;
2023-03-21 12:13:23 +01:00
import org.springframework.web.bind.annotation.RequestParam;
2023-03-10 15:20:49 +01:00
import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.common.controller.AbstractDnetController;
2023-03-21 12:13:23 +01:00
import eu.dnetlib.is.info.KeyValue;
2023-03-10 15:20:49 +01:00
import eu.dnetlib.manager.wf.model.WorkflowInstance;
2023-03-21 15:28:18 +01:00
import eu.dnetlib.manager.wf.model.WorkflowSubscription;
import eu.dnetlib.manager.wf.workflows.procs.ExecutionStatus;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
2023-03-10 15:20:49 +01:00
@RestController
@RequestMapping("/ajax/wf_instances")
public class WfInstancesController extends AbstractDnetController {
private WorkflowManagerService wfManagerService;
2023-03-21 15:28:18 +01:00
@GetMapping("/sections")
public List<KeyValue<Long>> listWfFamilies() throws Exception {
return wfManagerService.streamSections()
.map(x -> new KeyValue<>(x.getValue(), x.getCount()))
.collect(Collectors.toList());
2023-03-10 15:20:49 +01:00
}
2023-03-21 12:13:23 +01:00
@GetMapping("/search")
public List<KeyValue<String>> listWfInstances(@RequestParam final String section) throws Exception {
return wfManagerService.streamWfInstancesBySection(section)
.map(x -> new KeyValue<>(x.getId(), x.getName()))
.collect(Collectors.toList());
}
2023-03-21 15:28:18 +01:00
@GetMapping("/instance/{id}")
public WorkflowInstance getWfInstance(@PathVariable final String id) throws Exception {
return wfManagerService.findWorkflowInstance(id);
}
@PostMapping("/instance")
public void saveWfInstance(@RequestBody final WorkflowInstance instance) throws Exception {
wfManagerService.saveWfInstance(instance);
}
@DeleteMapping("/instance/{id}")
public void deleteWfInstance(@PathVariable final String id) throws Exception {
wfManagerService.deleteWfInstance(id);
}
@GetMapping("/instance/{id}/start")
public ExecutionStatus startWorkflowInstance(@PathVariable final String id) throws Exception {
return wfManagerService.startWorkflowInstance(id, null, null);
2023-03-10 15:20:49 +01:00
}
2023-03-21 15:28:18 +01:00
@GetMapping("/process/{id}")
public ExecutionStatus findProcess(@PathVariable final String id) throws Exception {
return wfManagerService.findProcess(id);
}
@DeleteMapping("/process/{id}")
public void killProcess(@PathVariable final String id) throws Exception {
wfManagerService.killProcess(id);
}
@GetMapping("/instance/{id}/subscriptions")
public List<WorkflowSubscription> listWorkflowSubscriptions(@PathVariable final String id) throws Exception {
return wfManagerService.listSubscriptions(id);
}
@PostMapping("/instance/{id}/subscriptions")
public void saveWorkflowSubscriptions(@PathVariable final String id, @RequestBody final List<WorkflowSubscription> subscriptions) throws Exception {
wfManagerService.saveSubscriptions(id, subscriptions);
}
2023-03-10 15:20:49 +01:00
}