in src/main/java/com/uber/cadence/internal/sync/SyncWorkflowWorker.java [61:128]
public SyncWorkflowWorker(
IWorkflowService service,
String domain,
String taskList,
Function<WorkflowInterceptor, WorkflowInterceptor> interceptorFactory,
SingleWorkerOptions workflowOptions,
SingleWorkerOptions localActivityOptions,
SingleWorkerOptions locallyDispatchedActivityOptions,
DeciderCache cache,
String stickyTaskListName,
Duration stickyDecisionScheduleToStartTimeout,
ThreadPoolExecutor workflowThreadPool) {
Objects.requireNonNull(workflowThreadPool);
this.dataConverter = workflowOptions.getDataConverter();
this.service = service;
factory =
new POJOWorkflowImplementationFactory(
workflowOptions.getDataConverter(),
workflowThreadPool,
interceptorFactory,
cache,
workflowOptions.getContextPropagators());
laTaskHandler =
new POJOActivityTaskHandler(
service, domain, localActivityOptions.getDataConverter(), heartbeatExecutor);
laWorker = new LocalActivityWorker(domain, taskList, localActivityOptions, laTaskHandler);
DecisionTaskHandler taskHandler =
new ReplayDecisionTaskHandler(
domain,
factory,
cache,
workflowOptions,
stickyTaskListName,
stickyDecisionScheduleToStartTimeout,
service,
laWorker.getLocalActivityTaskPoller());
Function<Task, Boolean> locallyDispatchedActivityTaskPoller = null;
// do not dispatch locally if TaskListActivitiesPerSecond is set
if (locallyDispatchedActivityOptions.getTaskListActivitiesPerSecond() == 0) {
ldaTaskHandler =
new POJOActivityTaskHandler(
service,
domain,
locallyDispatchedActivityOptions.getDataConverter(),
ldaHeartbeatExecutor);
ldaWorker =
new LocallyDispatchedActivityWorker(
service, domain, taskList, locallyDispatchedActivityOptions, ldaTaskHandler);
locallyDispatchedActivityTaskPoller =
((LocallyDispatchedActivityWorker) ldaWorker).getLocallyDispatchedActivityTaskPoller();
} else {
ldaWorker = new NoopSuspendableWorker();
}
workflowWorker =
new WorkflowWorker(
service,
domain,
taskList,
workflowOptions,
taskHandler,
locallyDispatchedActivityTaskPoller,
stickyTaskListName);
}