basic steps error handling
This commit is contained in:
@@ -58,6 +58,7 @@ public class ScenarioController {
|
||||
|
||||
@PostMapping("scenarios/execute")
|
||||
public ScenarioOutput executeScenario(@RequestBody ScenarioExecutionInput scenarioExecutionInput) {
|
||||
|
||||
ScenarioOutput preOutput = scenarioExecutionService.prepareScrenarioExecution(scenarioExecutionInput);
|
||||
scenarioExecutionService.executeScenarioAsync(preOutput);
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ public class ScenarioExecution {
|
||||
private String currentStepDescription;
|
||||
|
||||
private String executedByUserId;
|
||||
|
||||
private String latestStepStatus;
|
||||
private String latestStepOutput;
|
||||
|
||||
private ScenarioExecutionInput scenarioExecutionInput;
|
||||
}
|
||||
|
||||
@@ -97,6 +97,12 @@ public class ScenarioExecutionService {
|
||||
scenarioOutput.setStatus("IN_PROGRESS");
|
||||
}
|
||||
|
||||
if(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().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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user