Hi all,

I'm making a report which runs on a group and its subgroups hierarchy and models. Each model should be saved in a separate file, residing in a directory reflecting the subgroup, where it is located. For example, if the model is located in Group1\Group2\My Model, then the report should be saved in a file ${user.selected.dir}\Group1\Group2\My Model.xml (${user.selected.dir} is the directory, selected by the user when the report was run).

 

What I managed to dig-out from the documentation is method Context.setSelectedPath(), but it doesn't seem to work. Here is the code:

// Get the current group and all its children
var group = ArisData.getSelectedGroups()[0];
var groups = group.Childs(true);
    
for (var i=0; i<groups.length; i++) {
    // Iterate over group's models
    var models = groups[i].ModelList();
    for (var j=0; j<models.length; j++) {
        // Create the report
        var doc = createXMLDocument(models[j]);
        
        // Get the absolute path of the directory, where the report should be saved.
        // getAbsoluteOutputPath () is a local function which concatenats
        // Context.getSelectedPath() and the group path. The path separators are 
        // converted from '\' to '/'.
        var path = getAbsoluteOutputPath(models[j]);
        
        // Set the output path
        Context.setSelectedPath(path);
        
        // Get file name 
        var xmlFile = models[j].Name(nLocale)+".xml";
        
        // Get XML writer and write the report
        var xmlWriter = Context.createXMLOutputObject(xmlFile, doc);
        xmlWriter.WriteReport();
    }
}

 

However invoking 

Context.setSelectedPath(path);

results in saving all files in ${user.home} directory (e.g. C:\Users\simeon\Documents\BPA11) instead of ${user.selected.dir} without creating any subdirectory structure.

 

Thank you for your help!

Simeon

Tags: ARIS Report Scripting