@Override
    public List<TaskModel> getMappedTasks(TaskMapperContext taskMapperContext)
            throws TerminateWorkflowException {

        LOGGER.debug("TaskMapperContext {} in UserDefinedTaskMapper", taskMapperContext);

        WorkflowTask workflowTask = taskMapperContext.getWorkflowTask();
        WorkflowModel workflowModel = taskMapperContext.getWorkflowModel();
        String taskId = taskMapperContext.getTaskId();
        int retryCount = taskMapperContext.getRetryCount();

        TaskDef taskDefinition =
                Optional.ofNullable(taskMapperContext.getTaskDefinition())
                        .orElseGet(
                                () ->
                                        Optional.ofNullable(
                                                        metadataDAO.getTaskDef(
                                                                workflowTask.getName()))
                                                .orElseThrow(
                                                        () -> {
                                                            String reason =
                                                                    String.format(
                                                                            "Invalid task specified. Cannot find task by name %s in the task definitions",
                                                                            workflowTask.getName());
                                                            return new TerminateWorkflowException(
                                                                    reason);
                                                        }));

        Map<String, Object> input =
                parametersUtils.getTaskInputV2(
                        workflowTask.getInputParameters(), workflowModel, taskId, taskDefinition);

        TaskModel userDefinedTask = taskMapperContext.createTaskModel();
        userDefinedTask.setInputData(input);
        userDefinedTask.setStatus(TaskModel.Status.SCHEDULED);
        userDefinedTask.setRetryCount(retryCount);
        userDefinedTask.setCallbackAfterSeconds(workflowTask.getStartDelay());
        userDefinedTask.setRateLimitPerFrequency(taskDefinition.getRateLimitPerFrequency());
        userDefinedTask.setRateLimitFrequencyInSeconds(
                taskDefinition.getRateLimitFrequencyInSeconds());

        return List.of(userDefinedTask);
    }
This method maps a {@link WorkflowTask} of type {@link TaskType#USER_DEFINED} to a {@link
TaskModel} in a {@link TaskModel.Status#SCHEDULED} state

@param taskMapperContext: A wrapper class containing the {@link WorkflowTask}, {@link
    WorkflowDef}, {@link WorkflowModel} and a string representation of the TaskId
@return a List with just one User defined task
@throws TerminateWorkflowException In case if the task definition does not exist
core/src/main/java/com/netflix/conductor/core/execution/mapper/UserDefinedTaskMapper.java