【问题标题】:how to reset a cadence workflow with client sdk?如何使用客户端 sdk 重置节奏工作流程?
【发布时间】:2022-10-16 22:18:01
【问题描述】:
我有一个包含 3 个活动的节奏工作流程。设想。第一个活动在执行第二个时完成,达到重试限制后工作流失败。现在问题已经解决了。如何重新启动失败的工作流程。
我读过这个问题related question。
我想知道如何在 java 客户端 sdk 中使用 reset API 来实现它。
cadence-dependence:编译组:'com.uber.cadence',名称:'cadence-client',版本:'3.5.0'
谢谢你的帮助。
【问题讨论】:
标签:
java
cadence-workflow
uber-cadence
【解决方案2】:
在 WorkflowServiceTChannel 类中,我找到了一个方法 ResetWorkflowExecution。通过它可以实现复位。代码显示为打击:
public void testReset(String workflowid, String runid, String completeid){
WorkflowClient workflowClient = WorkflowClient.newInstance(
新的 WorkflowServiceTChannel(
ClientOptions.newBuilder().setHost("127.0.0.1").setPort(8080).setFeatureFlags(new FeatureFlags().setWorkflowExecutionAlreadyCompletedErrorEnabled(true)).build()),
WorkflowClientOptions.newBuilder().setDomain("domain-test").build());
ResetWorkflowExecutionRequest 请求 = 新的 ResetWorkflowExecutionRequest();
WorkflowExecution workflowExecution = new WorkflowExecution();
workflowExecution.setWorkflowId(workflowid);
workflowExecution.setRunId(runid);
request.setRequestId(UUID.randomUUID().toString());
request.setDomain("域测试");
request.setDecisionFinishEventId(Long.valueOf(completeid));
request.setWorkflowExecution(workflowExecution);
尝试 {
workflowClient.getService().ResetWorkflowExecution(request);
} 捕捉(TException e){
e.printStackTrace();
}
}