我有一個不尋常的問題,我想,我正在尋找調試幫助。AWS SWF Java:活動返回值但承諾永遠不會準備好
問題:
儘管AWS SWF控制檯顯示的活動返回有效響應,流程框架從未標誌着有望成爲準備好了!例如。在下面的代碼中,「activities.nextTask」永遠不會被調度執行。
「activities.nextTask」計劃執行的唯一時間是如果結果是空列表!
工作流代碼:
@Override
public void myworkflow() {
Promise<List<ValidationError>> result = activities.validate(input);
handleValidationResult(result);
Promise<Void> nextResult = activities.nextTask(input, result);
}
@Asynchronous
public void handleValidationResult(Promise<List<ValidationError>> result) {
System.out.println("WHY ISN'T THIS BEING EXECUTED?");
}
和ValidationError看起來像這樣(與龍目島):
@Value
public class ValidationError {
String message;
boolean isRetryable;
}
值得注意的是,我驗證了具有相同值的兩個ValidationError實例是相等的(使用.equals())。另外值得注意的是,具有相同值的兩個ValidationError列表相同。我檢查了這種情況,Flow重播依賴於結果的平等性是一致的。在我的情況下,他們是一致的。 – Chaos
代碼看起來不錯,但可能是活動完成後永遠不會執行工作流任務。確保在報告活動完成後啓動工作流程任務。如果它已啓動,但無法產生正確的結果,我建議使用http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/troubleshooting.html中所述的WorkflowReplayer在調試器中運行代碼。 –
工作流程任務在活動完成後安排並執行。我找出了問題併發布了答案。傑克遜需要一個沒有參數的構造函數,我沒有給它一個:) – Chaos