use of com.uber.cadence.WorkflowExecutionAlreadyStartedError in project cadence-client by uber-java.
the class TestWorkflowService method startWorkflowExecutionImpl.
StartWorkflowExecutionResponse startWorkflowExecutionImpl(StartWorkflowExecutionRequest startRequest, Optional<TestWorkflowMutableState> parent) throws BadRequestError, WorkflowExecutionAlreadyStartedError, InternalServiceError {
String requestWorkflowId = requireNotNull("WorkflowId", startRequest.getWorkflowId());
String domain = requireNotNull("Domain", startRequest.getDomain());
WorkflowId workflowId = new WorkflowId(domain, requestWorkflowId);
TestWorkflowMutableState running;
lock.lock();
try {
running = openExecutions.get(workflowId);
} finally {
lock.unlock();
}
if (running != null) {
WorkflowExecutionAlreadyStartedError error = new WorkflowExecutionAlreadyStartedError();
WorkflowExecution execution = running.getExecutionId().getExecution();
error.setMessage(String.format("Workflow execution already running. WorkflowId: %s, " + "RunId: %s", execution.getWorkflowId(), execution.getRunId()));
error.setRunId(execution.getRunId());
error.setStartRequestId(startRequest.getRequestId());
throw error;
}
return startWorkflowExecutionNoRunningCheck(startRequest, parent, workflowId);
}
use of com.uber.cadence.WorkflowExecutionAlreadyStartedError in project cadence-client by uber-java.
the class WorkflowStubImpl method startWithOptions.
private WorkflowExecution startWithOptions(WorkflowOptions o, Object... args) {
if (execution.get() != null) {
throw new DuplicateWorkflowException(execution.get(), workflowType.get(), "Cannot reuse a stub instance to start more than one workflow execution. The stub " + "points to already started execution.");
}
StartWorkflowExecutionParameters p = new StartWorkflowExecutionParameters();
p.setTaskStartToCloseTimeoutSeconds(o.getTaskStartToCloseTimeout().getSeconds());
if (o.getWorkflowId() == null) {
p.setWorkflowId(UUID.randomUUID().toString());
} else {
p.setWorkflowId(o.getWorkflowId());
}
p.setExecutionStartToCloseTimeoutSeconds(o.getExecutionStartToCloseTimeout().getSeconds());
p.setInput(dataConverter.toData(args));
p.setWorkflowType(new WorkflowType().setName(workflowType.get()));
p.setTaskList(o.getTaskList());
p.setChildPolicy(o.getChildPolicy());
try {
execution.set(genericClient.startWorkflow(p));
} catch (WorkflowExecutionAlreadyStartedError e) {
execution.set(new WorkflowExecution().setWorkflowId(p.getWorkflowId()).setRunId(e.getRunId()));
WorkflowExecution execution = new WorkflowExecution().setWorkflowId(p.getWorkflowId()).setRunId(e.getRunId());
throw new DuplicateWorkflowException(execution, workflowType.get(), e.getMessage());
} catch (Exception e) {
throw new WorkflowServiceException(execution.get(), workflowType, e);
}
return execution.get();
}
use of com.uber.cadence.WorkflowExecutionAlreadyStartedError in project cadence-client by uber-java.
the class GenericWorkflowClientExternalImpl method startWorkflow.
@Override
public WorkflowExecution startWorkflow(StartWorkflowExecutionParameters startParameters) throws WorkflowExecutionAlreadyStartedError {
StartWorkflowExecutionRequest request = new StartWorkflowExecutionRequest();
request.setDomain(domain);
request.setInput(startParameters.getInput());
request.setExecutionStartToCloseTimeoutSeconds((int) startParameters.getExecutionStartToCloseTimeoutSeconds());
request.setTaskStartToCloseTimeoutSeconds((int) startParameters.getTaskStartToCloseTimeoutSeconds());
request.setWorkflowIdReusePolicy(startParameters.getWorkflowIdReusePolicy());
String taskList = startParameters.getTaskList();
if (taskList != null && !taskList.isEmpty()) {
TaskList tl = new TaskList();
tl.setName(taskList);
request.setTaskList(tl);
}
String workflowId = startParameters.getWorkflowId();
if (workflowId == null) {
workflowId = UUID.randomUUID().toString();
}
request.setWorkflowId(workflowId);
request.setWorkflowType(startParameters.getWorkflowType());
// if(startParameters.getChildPolicy() != null) {
// request.setChildPolicy(startParameters.getChildPolicy());
// }
StartWorkflowExecutionResponse result;
try {
result = service.StartWorkflowExecution(request);
} catch (WorkflowExecutionAlreadyStartedError e) {
throw e;
} catch (TException e) {
throw CheckedExceptionWrapper.wrap(e);
}
WorkflowExecution execution = new WorkflowExecution();
execution.setRunId(result.getRunId());
execution.setWorkflowId(request.getWorkflowId());
return execution;
}
Aggregations