Create Scenarios from Files
This task imports a list of files into new scenarios, supporting several formats.
@Bean
public ScriptedTaskDescription scenariosImportTask() {
ScriptedTaskDescription task = new ScriptedTaskDescription("ScenariosImportTask", "Create scenarios from files");
task.setDescription("Import a list of files into new scenarios, supporting several formats");
setI18nKeys(task, "SCENARIOS_IMPORT");
var folder = VariableAccessExpression.ofFolder();
var scenarioFiles = VariableAccessExpression.ofFile();
var scenarioCreationParameters = VariableAccessExpression.ofScenarioCreationExpression();
// Variables for ForeachStatement
var scenarioFile = VariableAccessExpression.of("scenarioFile");
var createdScenarios = VariableAccessExpression.of("createdScenarios");
task.getScript()
.addStatement(AskInputStatement.ofVariable(folder, true, JobInputType.FOLDER_IN_WORKSPACE, "The Folder in a Workspace where to import the new Scenarios"))
.addStatement(AskInputStatement.ofVariable(scenarioFiles, true, JobInputType.files(1, null, "xlsx", "dbrf", "gz", "zip"), "The Scenario files containing the data (.xlsx, .dbrf, .gz, .zip)"))
.addStatement(AskInputStatement.ofVariable(scenarioCreationParameters, true, JobInputType.SCENARIO_CREATION_PARAMETERS, "Parameters to create the Scenario"))
.addStatement(ForeachStatement.of(
scenarioFile.getVariableName(),
scenarioFiles,
// Create the new scenario using metadata if exists.
SetVariableStatement.of(
createdScenarios.getVariableName(),
ScenarioCreationExpression.of(
scenarioCreationParameters,
folder
)
.withFileForProperties(scenarioFile)
.withScenarioNamePrefix(
StringExpression.concat(
StringExpression.ofFileName(scenarioFile),
StringExpression.of(" - ")
))
),
// Import the scenarios or delete them if an error occurs
DoStatementOnLockedScenariosOrDeleteThem.of(
createdScenarios,
// Save the file content in the data service
ImportScenarioStatement.of(createdScenarios, scenarioFile)
)
));
return task;
}