aws-sdk - java中的AWS SDK - 如何在状态机上进行多次执行时从工作人员那里获取活动
问题描述
AWS 步骤函数
我的问题是如何将 sendTaskSuccess 或 sendTaskFailuer 发送到在 AWS 的状态机下运行的 Activity 。
我的实际意图是通知属于特定状态机执行的特定活动。
我通过 activityARN 成功向所有等待活动发送通知。但我的实际需要是向属于特定状态机执行的特定活动发送通知。
例子 。StateMachine - SM1 有两个执行 SM1-- SM1E1, SM1E2 。在这种情况下,我想将 sendTaskSuccess 发送到属于 SM1E1 的活动。
以下代码我使用。但它会向所有活动发送通知
GetActivityTaskResult getActivityTaskResult = client.getActivityTask(new GetActivityTaskRequest()
.withActivityArn("arn detail"));
if (getActivityTaskResult.getTaskToken() != null) {
try {
JsonNode json = Jackson.jsonNodeOf(getActivityTaskResult.getInput());
String outputResult = patientRegistrationActivity.setStatus(json.get("patientId").textValue());
System.out.println("outputResult " + outputResult);
SendTaskSuccessRequest sendTaskRequest = new SendTaskSuccessRequest().withOutput(outputResult)
.withTaskToken(getActivityTaskResult.getTaskToken());
client.sendTaskSuccess(sendTaskRequest);
} catch (Exception e) {
client.sendTaskFailure(
new SendTaskFailureRequest().withTaskToken(getActivityTaskResult.getTaskToken()));
}
解决方案
我做了一个 POC 来检查,下面是解决方案。
如果令牌被消耗getActivityTaskResult.getTaskToken()
并且如果请求输入不满足您的条件,那么您可以使用下面的行来避免令牌消耗.awsStepFunctionClient.sendTaskHeartbeat(new SendTaskHeartbeatRequest().withTaskToken(taskToken))
推荐阅读
- visual-studio-code - Visual Studio Code 无法正确呈现 ipywidget
- python - 不和谐.py | 事件冷却时间
- sql - 如何根据 ID 和名称对总支出进行分组
- flutter - 在 Flutter 的所有页面中导入一次并使用库
- javascript - Tensorflow JS - 加载模型,TypeError:未定义不是对象(评估'inboundNodesData.forEach')
- .net - 您可以使用 .NET MAUI 和 blazor 开发网页并针对 web、ios、android 和 windows 吗?
- reactjs - 生产 React 应用程序失败并出现缩小的 React 错误 #321
- python-3.x - 滚动以使用 selenium 和 beautifulsoup 抓取更多细节
- python - 如何将 Flask Web 应用程序和 Windows Forms App (C#) 组合成一个 .EXE 文件/应用程序?
- android-studio - 无法使字段私有最终 java.lang.String java.io.File.path 可访问