Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 亚马逊SWF@信号_Java_Amazon Web Services_Amazon Swf - Fatal编程技术网

Java 亚马逊SWF@信号

Java 亚马逊SWF@信号,java,amazon-web-services,amazon-swf,Java,Amazon Web Services,Amazon Swf,是否有一种方法可以从Amazon SWF工作流中的活动中调用@Signal函数。 我希望能够通知工作流某些处理已完成,并且它应该为该处理子集生成子工作流。 如何执行此操作?听起来您想告诉工作流活动的某些部分已完成,但您想继续运行当前活动。如果是这种情况,那么我建议您将活动分成两部分,并使用第一部分的结果来判断是否需要生成子工作流。在流程框架中,不认为在活动中间向工作流发送信号是可能的。但您可以使用原始SWF API发送信号(在这种情况下,您需要将“运行ID”作为参数之一传递给您的活动)。应使用生

是否有一种方法可以从Amazon SWF工作流中的活动中调用@Signal函数。 我希望能够通知工作流某些处理已完成,并且它应该为该处理子集生成子工作流。
如何执行此操作?

听起来您想告诉工作流活动的某些部分已完成,但您想继续运行当前活动。如果是这种情况,那么我建议您将活动分成两部分,并使用第一部分的结果来判断是否需要生成子工作流。在流程框架中,不认为在活动中间向工作流发送信号是可能的。但您可以使用原始SWF API发送信号(在这种情况下,您需要将“运行ID”作为参数之一传递给您的活动)。

应使用生成的工作流外部客户端从活动代码内发送信号。包含初始化所需的所有数据:

public class MyActivitiesImpl implements MyActivities {

    private final ActivityExecutionContextProvider contextProvider = new ActivityExecutionContextProviderImpl();

    public void sendSignalBackActivity() {
        ActivityExecutionContext context = contextProvider.getActivityExecutionContext();
        AmazonSimpleWorkflow service = context.getService();
        String domain = context.getDomain();
        WorkflowExecution workflowExecution = context.getWorkflowExecution();
        MyWorkflowClientExternalFactory factory = new MyWorkflowClientExternalFactoryImpl(service, domain);
        GreeterClientExternal workflow = factory.getClient(workflowExecution);
        workflow.signalMethod();
    }
}
当外部客户端调用SWF API时,它可能会由于间歇性连接问题而失败。因此,活动实现可能决定捕获并处理(可能通过重试)在这种情况下抛出的事件