in src/main/java/com/uber/cadence/internal/testservice/StateMachines.java [437:485]
private static void initiateChildWorkflow(
RequestContext ctx,
ChildWorkflowData data,
StartChildWorkflowExecutionDecisionAttributes d,
long decisionTaskCompletedEventId) {
StartChildWorkflowExecutionInitiatedEventAttributes a =
new StartChildWorkflowExecutionInitiatedEventAttributes()
.setControl(d.getControl())
.setInput(d.getInput())
.setDecisionTaskCompletedEventId(decisionTaskCompletedEventId)
.setDomain(d.getDomain() == null ? ctx.getDomain() : d.getDomain())
.setExecutionStartToCloseTimeoutSeconds(d.getExecutionStartToCloseTimeoutSeconds())
.setTaskStartToCloseTimeoutSeconds(d.getTaskStartToCloseTimeoutSeconds())
.setTaskList(d.getTaskList())
.setWorkflowId(d.getWorkflowId())
.setWorkflowIdReusePolicy(d.getWorkflowIdReusePolicy())
.setWorkflowType(d.getWorkflowType())
.setRetryPolicy(d.getRetryPolicy())
.setCronSchedule(d.getCronSchedule())
.setHeader(d.getHeader())
.setParentClosePolicy(d.getParentClosePolicy());
HistoryEvent event =
new HistoryEvent()
.setEventType(EventType.StartChildWorkflowExecutionInitiated)
.setStartChildWorkflowExecutionInitiatedEventAttributes(a);
long initiatedEventId = ctx.addEvent(event);
ctx.onCommit(
(historySize) -> {
data.initiatedEventId = initiatedEventId;
data.initiatedEvent = a;
StartWorkflowExecutionRequest startChild =
new StartWorkflowExecutionRequest()
.setDomain(d.getDomain() == null ? ctx.getDomain() : d.getDomain())
.setExecutionStartToCloseTimeoutSeconds(
d.getExecutionStartToCloseTimeoutSeconds())
.setTaskStartToCloseTimeoutSeconds(d.getTaskStartToCloseTimeoutSeconds())
.setTaskList(d.getTaskList())
.setWorkflowId(d.getWorkflowId())
.setWorkflowIdReusePolicy(d.getWorkflowIdReusePolicy())
.setWorkflowType(d.getWorkflowType())
.setRetryPolicy(d.getRetryPolicy())
.setCronSchedule(d.getCronSchedule())
.setHeader(d.getHeader());
if (d.isSetInput()) {
startChild.setInput(d.getInput());
}
addStartChildTask(ctx, data, initiatedEventId, startChild);
});
}