Duplicate Scenario

This task duplicates the selected scenario.

    @Bean
    public ScriptedTaskDescription duplicateScenarioTask() {
        ScriptedTaskDescription task = new ScriptedTaskDescription("DuplicateScenarioTask", "Duplicate Scenario");
        task.setDescription("Duplicate the selected scenario");
        setI18nKeys(task, "DUPLICATE_SCENARIO");
        var scenario = VariableAccessExpression.ofScenario();
        var newScenarioName = VariableAccessExpression.of("New scenario name");
        var duplicateVisibleScenarios = VariableAccessExpression.of("Duplicate visible scenarios");
        var newScenarioIds = VariableAccessExpression.of("Created scenario IDs");

        task.getScript()
            .addStatement(AskInputStatement.ofVariable(scenario, true, JobInputType.SCENARIO_ID))
            .addStatement(AskInputStatement.ofVariable(newScenarioName,false, ParameterTypes.TEXT))
            .addStatement(AskInputStatement.ofVariable(duplicateVisibleScenarios,false, ParameterTypes.BOOLEAN))
            .addStatement(ExecuteRoutineStatement
                .of(StringExpression.of("com.decisionbrain.gene.DuplicateScenarioRoutine"))
                .withInput(scenario)
                .withInput(newScenarioName)
                .withInput(duplicateVisibleScenarios)
                .withOutput("new-scenario-ids", newScenarioIds.getVariableName())
            )
            .addStatement(SetTaskOutputStatement.of("New Scenario IDs", newScenarioIds));
        return task;
    }