[英]Manual pause and resume functionality in AWS SWF java framework
SWF 是否原生支持 java 框架中的手動暫停和恢復工作流功能? 如果沒有,有什么方法可以實現該語義?
編輯:我實現了以下示例,似乎正在使用初始測試。 有什么可以打破的。 我的工作流程將長時間運行(約 3-5 小時),相同的活動會多次使用不同的參數。
import com.amazonaws.services.simpleworkflow.flow.annotations.Asynchronous;
import com.amazonaws.services.simpleworkflow.flow.core.Promise;
import com.amazonaws.services.simpleworkflow.flow.core.Settable;
public class GreeterWorkflowImpl implements GreeterWorkflow {
private GreeterActivitiesClient operations = new GreeterActivitiesClientImpl();
Settable<Void> paused = new Settable<>();
public void greet() {
Promise<String> fs = getGreeting(0, operations.getName());
print(fs);
}
@Asynchronous
private Promise<String> getGreeting(int count, Promise<String> name)
{
if (count > 10)
return name;
return getGreeting(count, name, paused);
}
@Asynchronous
private Promise<String> getGreeting(int count, Promise<String> name, Settable<Void> paused) {
Promise<String> returnString = operations.getGreeting(name.get());
return getGreeting(count + 1, returnString);
}
@Asynchronous
private void print(Promise<String> finalString)
{
System.out.println("Final String is " + finalString.get());
}
// @Signal method
@Override
public void pause() {
paused = new Settable<>();
}
// @Signal method
@Override
public void resume() {
paused.set(null);
}
}
如果您收到多個恢復信號,您將再次設置暫停的可設置(已經准備好),因此您最終可能會遇到未處理的 IllegalStateException
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.