@Override
public void startWorkflow(StartWorkflowRequestPb.StartWorkflowRequest pbRequest, StreamObserver<WorkflowServicePb.StartWorkflowResponse> response) {
final StartWorkflowRequest request = PROTO_MAPPER.fromProto(pbRequest);
try {
String id = workflowService.startWorkflow(pbRequest.getName(),
GRPC_HELPER.optional(request.getVersion()),request.getCorrelationId(),
request.getInput(),
request.getExternalInputPayloadStoragePath(),
request.getTaskToDomain(), request.getWorkflowDef());
response.onNext(WorkflowServicePb.StartWorkflowResponse.newBuilder()
.setWorkflowId(id)
.build()
);
response.onCompleted();
} catch (ApplicationException ae) {
if (ae.getCode().equals(ApplicationException.Code.NOT_FOUND)) {
response.onError(Status.NOT_FOUND
.withDescription("No such workflow found by name="+request.getName())
.asRuntimeException()
);
} else {
GRPC_HELPER.onError(response, ae);
}
}
}