The following tutorial describes how to output the following information from an EPC to an Excel sheet using a report:
First you need all selected models over which you want to iterate:
var aModels = ArisData.getSelectedModels();
Use the following method to determine the name of the current model:
var sModelName = oModel.Name(nLocale); // Name of current model
The 'ObjOccListFilter' method returns all object occurrences of the relevant model, in this case all functions.
var oFuncOccs = oModel.ObjOccListFilter(Constants.OT_FUNC);
Use the following expression to determine all incoming connections:
var aCxnOccs = oFuncOccs[j].Cxns(Constants.EDGES_IN);
In this case, only connections of the 'carries out' type are to be included in the evaluation, which means that the connection type must be checked:
if(aCxnOccs[k].CxnDef().TypeNum()==Constants.CT_EXEC_1 || aCxnOccs[k].CxnDef().TypeNum()==Constants.CT_EXEC_2)
If this query returns 'true', determine the relevant source object and check whether it is of type 'Person type':
var oSourceObjOcc = aCxnOccs[k].SourceObjOcc(); if (oSourceObjOcc.ObjDef().TypeNum() == Constants.OT_PERS_TYPE)
If the source object corresponds to this type, the following information is output:
oOutputFile.TableCell(sModelName, 20, getString("TEXT_1"), 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
var nSource = oSourceObjOcc.ObjDef().Name(nLocale);
oOutputFile.TableCell(nSource, 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
var nCxn = aCxnOccs[k].CxnDef().ActiveType();
oOutputFile.TableCell(nCxn, 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
oOutputFile.TableCell(oFuncOcc.ObjDef().Name(nLocale), 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
The complete report with all iterations and the entire output looks as follows:
var oOutputFile = Context.createOutputObject(); // Output object
var nLocale = Context.getSelectedLanguage(); // Selected database language
var aModels = ArisData.getSelectedModels();
for (var i = 0; i < aModels.length; i++) {
oOutputFile.BeginTable(100, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_LEFT, 0);
oOutputFile.TableRow();
oOutputFile.TableCell("ModelName", 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VTOP, 0);
oOutputFile.TableCell("Actor", 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VTOP, 0);
oOutputFile.TableCell("Connection", 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VTOP, 0);
oOutputFile.TableCell("Task", 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VTOP, 0);
var oModel = aModels[i]; // Current model
var sModelName = oModel.Name(nLocale); // Name of current model
//functions
var oFuncOccs = oModel.ObjOccListFilter(Constants.OT_FUNC);
for (var j = 0; j < oFuncOccs.length; j++){
var oFuncOcc = oFuncOccs[j];
var aCxnOccs = oFuncOccs[j].Cxns(Constants.EDGES_IN);
for(var k=0; k<aCxnOccs.length; k++){
if(aCxnOccs[k].CxnDef().TypeNum()==Constants.CT_EXEC_1 || aCxnOccs[k].CxnDef().TypeNum()==Constants.CT_EXEC_2){
// check type of source object
var oSourceObjOcc = aCxnOccs[k].SourceObjOcc();
if (oSourceObjOcc.ObjDef().TypeNum() == Constants.OT_PERS_TYPE){
oOutputFile.TableRow();
oOutputFile.TableCell(sModelName, 20, getString("TEXT_1"), 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
var nSource = oSourceObjOcc.ObjDef().Name(nLocale);
oOutputFile.TableCell(nSource, 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
var nCxn = aCxnOccs[k].CxnDef().ActiveType();
oOutputFile.TableCell(nCxn, 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
oOutputFile.TableCell(oFuncOcc.ObjDef().Name(nLocale), 20, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_BOLD | Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
}
}
}
}
oOutputFile.EndTable(sModelName, 100, "Arial", 10, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_LEFT | Constants.FMT_VTOP, 0);
}
oOutputFile.WriteReport();Let's see if any more wishes will come true...
Ismael Shameem Etowar on
Hi Ms Eva,
Thanks a lot for this post.
I'm really grateful to you and the whole Team for that :)
This is in fact my Christmas gift:)lol.
Keep on with the wonderful job you are doing for the ARIS Community.
Happy New Year 2011 to you all :)
Cheers
Shameem