【发布时间】:2018-05-15 13:18:50
【问题描述】:
我要求工作流应该在哪里开始执行,但它应该等待下一个后续事件来执行。事件是根据服务从客户端接收到的 API 调用生成的。事件语义基于状态机。请让我知道如何在 java 中实现这一点。请提供任何示例代码以供参考。
【问题讨论】:
标签: amazon-swf
我要求工作流应该在哪里开始执行,但它应该等待下一个后续事件来执行。事件是根据服务从客户端接收到的 API 调用生成的。事件语义基于状态机。请让我知道如何在 java 中实现这一点。请提供任何示例代码以供参考。
【问题讨论】:
标签: amazon-swf
如果您使用 AWS Flow Framework,则外部事件应使用 Signal API 来通知工作流实例。在工作流中,它变成了一个处理方法,例如:
@Workflow
@WorkflowRegistrationOptions(
defaultExecutionStartToCloseTimeoutSeconds = 60,
defaultTaskStartToCloseTimeoutSeconds = 10)
public interface MyWorkflow
{
@Execute(version = "1.0")
void startMyWF();
@Signal
void signal1();
}
public class MyWFImpl implements MyWorkflow
{
MyActivitiesClient client = new MyActivitiesClientImpl();
// Used to block the workflow until a signal is received.
Settable<Void> signal1Called = new Settable<Void>();
@Override
public void startMyWF(){
Promise<Integer> result = client.activity1();
// Continues when both result and signal1 are ready.
client.activity2(result, signal1);
}
@Override
public void signal1() {
//Process signal
signal1.set(null);
}
}
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features.workflow.html 描述了如何编写工作流接口。
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/workflowimpl.html 描述了如何实现工作流。
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/clients.html 描述了如何使用外部客户端发送信号。
【讨论】: