in src/main/java/com/amazonaws/services/simpleworkflow/flow/worker/GenericActivityClientImpl.java [83:118]
public Promise<String> scheduleActivityTask(final ExecuteActivityParameters parameters) {
final OpenRequestInfo<String, ActivityType> context = new OpenRequestInfo<String, ActivityType>(
parameters.getActivityType());
ScheduleActivityTaskDecisionAttributes.Builder attributeBuilder = ScheduleActivityTaskDecisionAttributes.builder()
.activityType(parameters.getActivityType().toSdkType())
.input(parameters.getInput())
.heartbeatTimeout(FlowHelpers.secondsToDuration(parameters.getHeartbeatTimeoutSeconds()))
.scheduleToCloseTimeout(FlowHelpers.secondsToDuration(parameters.getScheduleToCloseTimeoutSeconds()))
.scheduleToStartTimeout(FlowHelpers.secondsToDuration(parameters.getScheduleToStartTimeoutSeconds()))
.startToCloseTimeout(FlowHelpers.secondsToDuration(parameters.getStartToCloseTimeoutSeconds()))
.taskPriority(FlowHelpers.taskPriorityToString(parameters.getTaskPriority())).control(parameters.getControl());
String activityId = parameters.getActivityId();
if (activityId == null) {
activityId = String.valueOf(decisions.getNextId());
}
attributeBuilder.activityId(activityId);
String taskList = parameters.getTaskList();
if (taskList != null && !taskList.isEmpty()) {
attributeBuilder.taskList(TaskList.builder().name(taskList).build());
}
final ScheduleActivityTaskDecisionAttributes attributes = attributeBuilder.build();
String taskName = "activityId=" + activityId + ", activityType=" + attributes.activityType();
new ExternalTask() {
@Override
protected ExternalTaskCancellationHandler doExecute(final ExternalTaskCompletionHandle handle) throws Throwable {
decisions.scheduleActivityTask(attributes);
context.setCompletionHandle(handle);
scheduledActivities.put(attributes.activityId(), context);
return new ActivityCancellationHandler(attributes.activityId(), handle);
}
}.setName(taskName);
context.setResultDescription("scheduleActivityTask " + taskName);
return context.getResult();
}