【发布时间】:2018-04-26 19:44:49
【问题描述】:
我正在尝试向我的父工作流发出信号以更新其状态变量。父工作流 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(...);
}
但是,这会在 SWF 代码中引发 NullPointerException(AmazonSimpleWorkflow 为空):
["java.lang.NullPointerException",{"cause":null,"stackTrace":[{"methodName":"signalWorkflowExecution","fileName":"GenericWorkflowClientExternalImpl.java","lineNumber":87,"className":"com.amazonaws.services.simpleworkflow.flow.worker.GenericWorkflowClientExternalImpl","nativeMethod":false},{"methodName":"signalWorkflowExecution","fileName":"DynamicWorkflowClientExternalImpl.java","lineNumber":167,"className":"com.amazonaws.services.simpleworkflow.flow.DynamicWorkflowClientExternalImpl","nativeMethod":false},...
当我初始化不带参数的ClientExternalFactory 时:
private ParentWorkflowClientExternalFactory clientExternalFactory = new ParentWorkflowClientExternalFactoryImpl();
抛出的异常是:The required property genericClient is null. It could be caused by instantiating the factory through the default constructor instead of the one that takes service and domain arguments.
ParentWorkflow#updateState 这样做:
private MyWorkflowState state;
// This method has @Signal in the interface.
@Override
public void updateState(MyWorkflowState newState) {
state = newState;
}
有什么建议吗?
【问题讨论】:
标签: java amazon-web-services amazon-swf