外部クライアントによって名前空間または taskQueue (ワークフロー ID を与えたくない) 内のすべてのワークフローの検索属性を取得する方法は? Java SDK を使用しています。
以下は、ワークフローと検索属性の追加のサンプル コードです。コードでは、WorkflowExecution を使用して検索属性を取得していますが、ワークフロー ID は入力パラメーターとして必須でした。ワークフロー ID を指定せずに、名前空間のすべてのワークフローと検索属性を取得するソリューションを探しています。
WorkflowServiceStubs サービス = WorkflowServiceStubs.newInstance();
WorkflowClientOptions clientOptios =
WorkflowClientOptions.newBuilder().setNamespace("samples-namespace").build();
WorkflowClient client = WorkflowClient.newInstance(service, clientOptios);
WorkerFactory factory = WorkerFactory.newInstance(client);
Worker worker = factory.newWorker(TASK_QUEUE);
worker.registerWorkflowImplementationTypes(MyClass.MyWorkflowImpl.class);
worker.registerActivitiesImplementations(new MyClass.MyActivitiesImpl());
factory.start();
String workflowID = UUID.randomUUID().toString();
WorkflowOptions workflowOptions =
WorkflowOptions.newBuilder()
.setTaskQueue(TASK_QUEUE)
.setWorkflowId(workflowID)
.setSearchAttributes(generateSearchAttributes())
.build();
HelloSearchAttributes.GreetingWorkflow workflow =
client.newWorkflowStub(MyClass.MyWorkflowImpl.class, workflowOptions);
WorkflowExecution の実行 = WorkflowExecution.newBuilder().setWorkflowId(workflowID).build();
DescribeWorkflowExecutionRequest リクエスト = DescribeWorkflowExecutionRequest.newBuilder() .setNamespace(client.getOptions().getNamespace()) .setExecution(実行) .build();
DescribeWorkflowExecutionResponse resp =
service.blockingStub().describeWorkflowExecution(request);
SearchAttributes searchAttributes = resp.getWorkflowExecutionInfo().getSearchAttributes();