Creating a Milestone Report
This example creates a milestone overview report which shows all assigned documents of a milestone together with the document state and document version.
1. Create a Report with a Stages Data Source and a Data Set
2. Create the following Data Set result columns
Name | Type |
---|---|
DocumentName | String |
State | String |
Version | String |
milestone URL | String |
process | String |
3. Copy the Data Set script from the example into your Data Set.
Example
function getParent(myelement) { var process = ""; do { var parent = myelement.getEntities("hierarchy::HIERARCHIC@LOCAL,targetrole=parent"); if (parent[0].getProperty("IndexMode") == 1) { return (process); } process = parent[0]; myelement = parent[0]; } while (parent[0].getProperty("IndexMode") != 1); return (null); } function Dump(artifact, milestone) { var reduced_view = ""; var milestone_name = milestone.getProperty("DisplayName"); var artifact_name = artifact.getProperty("DisplayName") var artifacts_instances = artifact.getEntities("containsInstance@SYSTEM"); var artifact_id = artifact.getProperty("Id"); for each (artifacts_instance in artifacts_instances) { var artifacts_instance_id = artifacts_instance.getProperty("Id"); dataset.setColumnValue("DocumentName", "<a title=\""+artifact_name+"\" href=\"/pkit/process/viewElement.do? id=" + artifact_id+"&type=Artifact\">" + artifacts_instance.getProperty("LogicalName")+"</a>"); dataset.setColumnValue("milestone URL", "<a href=\"/pkit/process/viewElement.do?id=" + milestone.getProperty("Id")+"&type=phase\">" + milestone.getProperty("DisplayName")+"</a>"); dataset.setColumnValue("Version", artifacts_instance.getProperty("revisionIdentifier")); dataset.setColumnValue("State", artifacts_instance.getProperty("state")); var parent = getParent(artifact); if (parent) dataset.setColumnValue("process", "<a href=\"/pkit/process/viewElement.do?id=" + parent.getProperty("Id")+"&type=Artifact\">" + parent.getProperty("DisplayName")+"</a>"); dataset.storeResultRow(); } } var milestones = pkit.getCurrentProject(). getEntities("containsProcess@SYSTEM")[0]. getEntities("containsPhase@SYSTEM"); for each (milestone in milestones) { if (milestone.getProperty("SubType") == "milestone") { var artifacts = milestone.getEntities("required"); for each (artifact in artifacts) { Dump(artifact, milestone); } } }