I found a solution using just some for loops, to browse all tags from an industrial connection, using just 2 services ; browseGroups and BrowseItems,
// this service is for browsing all tags of an industrial connection
//level 1 : Groups
//level 2 : SubGroups
//Level 3 : items or Tags
var IndustrialConnectionThingName ="YourIndustrialConnectionThingName";
//get Groups
var Groups = Things[IndustrialConnectionThingName].BrowseGroups({
filter: undefined /* STRING */,
path: undefined /* STRING */
});
var resGroups = [];
for (var x=0; x < Groups.rows.length; x++){
var row = Groups.rows[x];
var hasAnySubGroups = row.HasAnySubGroups;
var IsSystemGroup = row.IsSystemGroup;
var HasNonSystemSubGroups = row.HasNonSystemSubGroups;
if(!IsSystemGroup &&HasNonSystemSubGroups && hasAnySubGroups){
var groupFullPath = row.FullPath ;
resGroups.push(groupFullPath);
}
}
//Get SubGroups
var resSubGroups = [];
for (var i=0; i < resGroups.length; i++) {
var resGroupsRow = resGroups[i];
var SubGroups = Things[IndustrialConnectionThingName].BrowseGroups({
filter: undefined /* STRING */,
path: resGroupsRow /* STRING */
});
for (var j=0; j < SubGroups.rows.length; j++) {
var SubGroupsRow = SubGroups.rows[j];
var hasAnySubGroups = SubGroupsRow.HasAnySubGroups;
var IsSystemGroup = SubGroupsRow.IsSystemGroup;
var HasNonSystemSubGroups = SubGroupsRow.HasNonSystemSubGroups;
if(!IsSystemGroup ){
var SubGroupFullPath = SubGroupsRow.FullPath ;
resSubGroups.push(SubGroupFullPath);
}
}
}
// Get Items === Tags
//var resItems = [];
// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(IndustrialItems)
var resItems = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape({
infoTableName : "InfoTable",
dataShapeName : "IndustrialItems"
});
// iterate over resSubGroups to get items
for (var p=0; p < resSubGroups.length; p++) {
var resSubGroupsRow = resSubGroups[p];
// result: INFOTABLE dataShape: "IndustrialItems"
var items = Things[IndustrialConnectionThingName].BrowseItems({
filter: undefined /* STRING */,
path: resSubGroupsRow /* STRING */
});
//iterate over items to find tags and push them in resItems
for (var k=0; k < items.rows.length;k++) {
var itemsRow = items.rows[k];
//var TagName = itemsRow.Source ;
//resItems.push(TagName);
resItems.AddRow(itemsRow);
}
}
//infotable : datashape : industrialitems
result = resItems;