use of com.uber.cadence.RespondDecisionTaskCompletedRequest in project cadence-client by uber-java.
the class ReplayDecisionTaskHandler method handleDecisionTaskImpl.
private Result handleDecisionTaskImpl(DecisionTaskWithHistoryIterator decisionTaskIterator) throws Throwable {
HistoryHelper historyHelper = new HistoryHelper(decisionTaskIterator);
ReplayDecider decider = createDecider(historyHelper);
PollForDecisionTaskResponse decisionTask = historyHelper.getDecisionTask();
if (decisionTask.isSetQuery()) {
RespondQueryTaskCompletedRequest queryCompletedRequest = new RespondQueryTaskCompletedRequest();
queryCompletedRequest.setTaskToken(decisionTask.getTaskToken());
try {
byte[] queryResult = decider.query(decisionTask.getQuery());
queryCompletedRequest.setQueryResult(queryResult);
queryCompletedRequest.setCompletedType(QueryTaskCompletedType.COMPLETED);
} catch (Throwable e) {
// TODO: Appropriate exception serialization.
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
queryCompletedRequest.setErrorMessage(sw.toString());
queryCompletedRequest.setCompletedType(QueryTaskCompletedType.FAILED);
}
return new DecisionTaskHandler.Result(null, null, queryCompletedRequest, null);
} else {
decider.decide();
DecisionsHelper decisionsHelper = decider.getDecisionsHelper();
List<Decision> decisions = decisionsHelper.getDecisions();
byte[] context = decisionsHelper.getWorkflowContextDataToReturn();
if (log.isTraceEnabled()) {
WorkflowExecution execution = decisionTask.getWorkflowExecution();
log.trace("WorkflowTask startedEventId=" + decisionTask.getStartedEventId() + ", WorkflowID=" + execution.getWorkflowId() + ", RunID=" + execution.getRunId() + " completed with " + WorkflowExecutionUtils.prettyPrintDecisions(decisions));
} else if (log.isDebugEnabled()) {
WorkflowExecution execution = decisionTask.getWorkflowExecution();
log.debug("WorkflowTask startedEventId=" + decisionTask.getStartedEventId() + ", WorkflowID=" + execution.getWorkflowId() + ", RunID=" + execution.getRunId() + " completed with " + decisions.size() + " new decisions");
}
RespondDecisionTaskCompletedRequest completedRequest = new RespondDecisionTaskCompletedRequest();
completedRequest.setTaskToken(decisionTask.getTaskToken());
completedRequest.setDecisions(decisions);
completedRequest.setExecutionContext(context);
return new DecisionTaskHandler.Result(completedRequest, null, null, null);
}
}
Aggregations