in saga-spring/src/main/java/org/apache/servicecomb/saga/spring/SagaExecutionQueryService.java [77:103]
public SagaExecutionQueryResult querySagaExecution(String pageIndex, String pageSize,
String startTime, String endTime) throws ParseException {
Date start = "NaN-NaN-NaN NaN:NaN:NaN".equals(startTime) ? new Date(0) : this.dateFormat.parse(startTime);
Date end = "NaN-NaN-NaN NaN:NaN:NaN".equals(endTime) ? new Date() : this.dateFormat.parse(endTime);
List<SagaExecution> requests = new ArrayList<>();
Page<SagaEventEntity> startEvents = repo.findByTypeAndCreationTimeBetweenOrderByIdDesc(
SagaStartedEvent.class.getSimpleName(), start, end,
new PageRequest(Integer.parseInt(pageIndex), Integer.parseInt(pageSize)));
for (SagaEventEntity event : startEvents) {
SagaEventEntity endEvent = repo
.findFirstByTypeAndSagaId(SagaEndedEvent.class.getSimpleName(), event.sagaId());
SagaEventEntity abortedEvent = repo
.findFirstByTypeAndSagaId(TransactionAbortedEvent.class.getSimpleName(), event.sagaId());
requests.add(new SagaExecution(
event.id(),
event.sagaId(),
event.creationTime(),
endEvent == null ? 0 : endEvent.creationTime(),
endEvent == null ? "Running" : abortedEvent == null ? "OK" : "Failed"));
}
return new SagaExecutionQueryResult(Integer.parseInt(pageIndex), Integer.parseInt(pageSize),
startEvents.getTotalPages(), requests);
}