Java SWF:如何从子工作流向父工作流发送信号?

Java SWF:如何从子工作流向父工作流发送信号?,java,amazon-web-services,amazon-swf,Java,Amazon Web Services,Amazon Swf,我试图向我的父工作流发送信号,以更新其状态变量。父工作流id将传递给子工作流的execute方法 @Autowired private AmazonSimpleWorkflowClient swfClient; @Autowired private String swfDomain; private ParentWorkflowClientExternalFactory clientExternalFactory = new ParentWorkflowClientExternalFactor

我试图向我的父工作流发送信号,以更新其状态变量。父工作流id将传递给子工作流的
execute
方法

@Autowired
private AmazonSimpleWorkflowClient swfClient;
@Autowired
private String swfDomain;

private ParentWorkflowClientExternalFactory clientExternalFactory = new ParentWorkflowClientExternalFactoryImpl(swfClient, swfDomain);

@Override
public Promise<String> childActivityMethod(String parentWorkflowId) {
    ParentWorkflowClientExternal clientExternal = clientExternalFactory.getClient(parentWorkflowId);
    clientExternal.updateState(...);
}
当我在没有参数的情况下初始化
ClientExternalFactory
时:

private ParentWorkflowClientExternalFactory clientExternalFactory = new ParentWorkflowClientExternalFactoryImpl();
引发的异常为:
所需的属性genericClient为null。这可能是由于通过默认构造函数(而不是采用服务和域参数的构造函数)实例化工厂造成的。

ParentWorkflow#updateState
执行以下操作:

private MyWorkflowState state;

// This method has @Signal in the interface.
@Override
public void updateState(MyWorkflowState newState) {
    state = newState;
}

有什么建议吗?

工作流界面生成了两种类型的客户端。内部的和外部的。内部代码应在工作流代码内使用,外部代码应在工作流外使用(例如,从web服务器)。
您试图在不受支持的工作流中使用外部客户端。改用内部客户端(使用ParentWorkflowClientFactory创建)。有关更多信息,请参阅。

工作流界面生成了两种类型的客户端。内部的和外部的。内部代码应在工作流代码内使用,外部代码应在工作流外使用(例如,从web服务器)。
您试图在不受支持的工作流中使用外部客户端。改用内部客户端(使用ParentWorkflowClientFactory创建)。有关更多信息,请参阅。

谢谢,这就是问题所在。我忽略了外部客户端和内部客户端之间的区别。流框架的下一个版本甚至不使用生成的代码:谢谢,这就是问题所在。我忽略了外部客户端和内部客户端之间的区别。Flow framework的下一个版本甚至不使用生成的代码:
private MyWorkflowState state;

// This method has @Signal in the interface.
@Override
public void updateState(MyWorkflowState newState) {
    state = newState;
}