Differences

This shows you the differences between two versions of the page.

Link to this comparison view

72:custom_reports_accessing_data_reading_process_rolereport [2019/02/27 20:03]
ext-bkkr created
72:custom_reports_accessing_data_reading_process_rolereport [2019/02/27 20:47]
ext-bkkr
Line 1: Line 1:
 ====== Creating a Role Report ====== ====== Creating a Role Report ======
 +
 +This example shows how to collect all roles in a process and their assigned users.
 +
 +1. Create a Report with a Stages Data Source and a Data Set
 +
 +2. Create the following Data Set result columns:
 +
 +^Name^Type|
 +|Username|String|
 +|Fullname|String|
 +|LicenseType|String|
 +|Name|String|
 +|EmailAddress|String|
 +|Indented|String|
 +
 +3. Copy the Data Set script from the example into your Data Set.
 +
 +**Example**
 +<​code>​
 +function getChilds(element,​mylevel)
 +{
 + var children_level = mylevel + 1;
 + var myelements =
 + ​element.getEntities("​hierarchy::​hierarchic@LOCAL,​targetrole=children"​);​
 + for each (myelement in myelements) {
 + ​getUsers(myelement,​mylevel);​
 + ​gethilds(myelement,​children_level);​
 + }
 +}
 +function getIndex(myelement) {
 + do {
 + var parent =
 + ​myelement.getEntities("​hierarchy::​HIERARCHIC@LOCAL,​targetrole=parent"​);​
 + if (parent[0].getProperty("​IndexMode"​)==1) {
 + ​return (parent[0]);​
 + }
 + ​myelement = parent[0];
 + } while (parent[0].getProperty("​IndexMode"​)!=1);​
 + ​return (null);
 +}
 +function addSpaces (n) {
 + var string = "";​
 + for (var i=0; i<n; i++) {
 + ​string = string+"&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;";​
 + }
 + ​return string;
 +}
 +function getUsers(myelement,​ mylevel) {
 + var myUsers = myelement.getEntities("​containsUser@SYSTEM"​);​
 + for each (myUser in myUsers) {
 + ​dataset.setColumnValue("​Username",​myUser.getProperty("​Username"​));​
 + ​dataset.setColumnValue("​Fullname",​myUser.getProperty("​Fullname"​));​
 + ​dataset.setColumnValue("​LicenseType",​myUser.getProperty("​LicenseType"​));​
 + ​dataset.setColumnValue("​EmailAddress",​myUser.getProperty("​EmailAddress"​));​
 + ​saveColumn(myelement,​mylevel)
 + }
 + if (myUsers.length==0)
 + ​saveColumn(myelement,​mylevel);​
 +}
 +function saveColumn(element,​mylevel) {
 + ​dataset.setColumnValue("​Name",​element.getProperty("​DisplayName"​));​
 + ​dataset.setColumnValue("​indented",​addSpaces(mylevel)
 + ​+element.getProperty("​DisplayName"​));​
 + ​dataset.storeResultRow();​
 +}
 +var currentProject = pkit.getCurrentProject();​
 +var process = currentProject.getEntities("​containsProcess@SYSTEM"​)[0];​
 +var assocs = process.getPkitClass().getAssociations();​
 +for each (assoc in assocs) {
 + if (assoc.getName().match(/​Role/​)) {
 + var elements = process.getEntities(assoc.getName());​
 + if (elements.length>​ 0) {
 + ​act_index = getIndex(elements[0]);​
 + ​getChilds(act_index,​0)
 + }
 + }
 +}
 +</​code>​
 +
 +\\