This commit is contained in:
Florinda
2024-10-30 09:26:16 +01:00
3 changed files with 35 additions and 12 deletions

View File

@@ -60,6 +60,7 @@ public class ScenarioController {
@PostMapping("scenarios/execute")
public ScenarioOutput executeScenario(@RequestBody ScenarioExecutionInput scenarioExecutionInput) {
ScenarioOutput preOutput = scenarioExecutionService.prepareScrenarioExecution(scenarioExecutionInput);
scenarioExecutionService.executeScenarioAsync(preOutput);

View File

@@ -29,7 +29,8 @@ public class ScenarioExecution {
private String currentStepDescription;
private String executedByUserId;
private String latestStepStatus;
private String latestStepOutput;
private ScenarioExecutionInput scenarioExecutionInput;
}

View File

@@ -88,7 +88,7 @@ public class ScenarioExecutionService {
ScenarioExecution scenarioExecution = o_scenarioExecution.get();
scenarioExecution.setCurrentStepId(scenarioExecution.getCurrentStepId());
if(scenarioExecution.getExecSharedMap().get("scenario_output")!=null){
if(scenarioExecution.getExecSharedMap()!=null && scenarioExecution.getExecSharedMap().get("scenario_output")!=null){
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
scenarioOutput.setStatus("OK");
scenarioOutput.setStringOutput(scenarioExecution.getExecSharedMap().get("scenario_output").toString());
@@ -97,6 +97,12 @@ public class ScenarioExecutionService {
scenarioOutput.setStatus("IN_PROGRESS");
}
if(scenarioExecution.getLatestStepStatus()!= null && scenarioExecution.getLatestStepStatus().equals("ERROR")){
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
scenarioOutput.setStatus("ERROR");
scenarioOutput.setMessage(scenarioExecution.getLatestStepOutput());
}
}else{
scenarioOutput.setScenarioExecution_id(null);
scenarioOutput.setStatus("ERROR");
@@ -168,9 +174,12 @@ public class ScenarioExecutionService {
while (scenarioExecution.getNextStepId()!=null) {
ScenarioStep step = steps.stream().filter(s -> s.getStepId().equals(scenarioExecution.getNextStepId())).findFirst().orElse(null);
executeScenarioStep(step, scenarioExecution);
}
if(scenarioExecution.getLatestStepStatus() != null && scenarioExecution.getLatestStepStatus().equals("ERROR")){
logger.error("Error while executing step: " + step.getStepId());
break;
}
}
}
}
@@ -204,18 +213,30 @@ public class ScenarioExecutionService {
logger.info("Initializing step: " + step.getStepId());
solver.init(step, scenarioExecution,
vectorStore,chatModel,chatClient,graphDriver,neo4JUitilityService
,discoveryClient);
logger.info("Solving step: " + step.getStepId());
scenarioExecution.setCurrentStepId(step.getStepId());
scenarioExecution.setCurrentStepDescription(step.getName());
ScenarioExecution scenarioExecutionNew = solver.solveStep();
logger.info("Step solved: " + step.getStepId());
logger.info("Next step: " + scenarioExecutionNew.getNextStepId());
ScenarioExecution scenarioExecutionNew=scenarioExecution;
try{
solver.init(step, scenarioExecution,
vectorStore,chatModel,chatClient,graphDriver,neo4JUitilityService
,discoveryClient);
scenarioExecutionNew = solver.solveStep();
logger.info("Step solved: " + step.getStepId());
logger.info("Next step: " + scenarioExecutionNew.getNextStepId());
}catch (Exception e){
logger.error("Error while solving step: " + step.getStepId() + " => " + e.getMessage());
scenarioExecutionNew.setNextStepId(null);
scenarioExecutionNew.setLatestStepStatus("ERROR");
scenarioExecutionNew.setLatestStepOutput(e.getMessage());
}
scenarioExecutionRepository.save(scenarioExecutionNew);