public Promise scheduleActivityTask()

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();
    }