Generating Documents using Document Scripts in Enterprise Architect

Sparx Systems Enterprise Architect is one of the very few tools that has the capability to generate document on go from a centralized repository. Enterprise Architect has features to customize document contents using user templates, fragments, style sheets, cover pages and headers and footers.

  • Document Script in fragments is a new option which is introduced in Enterprise Architect 13.
  • Used generally for generating complex documents from Enterprise Architect.

Custom Script vs Document Script

  • Custom script (Introduced in EA 11): Script returns a value which can be used in the fragment using the ‘custom’ field.
  • Document script (Introduced in EA 13): A combination of scripts and templates. Script calls another Template and passes ID of an object to be reported

How Document Script works?

Advantages of Document Script:

  • Flexibility in reporting desired fields in desired order
  • Loop through or mix and match details in a custom way, as per the requirements.
  • Removes need to write external addin to generate custom documents from the model.

Steps to create Document using Document Scripts:

 

  • From Above business process diagram, we are going to generate all the diagram objects from the parent package.
  • Initially have created a Template like below with package and element section enabled
  • Under the Diagram Objects heading have inserted a new fragment and inside the fragment have enabled the Custom Section as below
  • To create a document script Fragment -> Document Options ->Custom Query -> Document Script and in the dropdown select the script which is written for document generation.

  • Reference the ID of the element or Package currently being processed by the document template, using the #OBJECTID# or #PACKAGEID#
  • Process Package script does the magic of rendering the objects in an order to a document.
  • Script which need be used in the Document script should always return an rtf

        var docGenerator as EA.DocumentGenerator;

        docGenerator = Repository.CreateDocumentGenerator();

        if ( docGenerator.NewDocument(“”) )

        {

            docGenerator.DocumentElement(ElementID,Heading Depth,”templateName”); // Used to add the element details in rtf

var rtf = docGenerator.GetDocumentAsRTF();

return rtf;

       }

  • For more details on attributes and methods of DocumentGenerator class please refer Sparx Help on Document Generator class
  • In document script a template should be referred so that the data will be formatted and printed based on that template.
  • For e.g. From the below package structure in Enterprise Architect

  • If the documentation is generated in the package level (BP00100) and the script for rendering all the diagram objects of a diagram
  • We need to pass the packageID as the parameter in document script.
  • In the script main function rtf should be returned

function main(packageID)

{

var docGenerator as EA.DocumentGenerator;

docGenerator = Repository.CreateDocumentGenerator();

if ( docGenerator.NewDocument(“”) )

{

try

   {

var package as EA.Package;

package = Repository.GetPackageByID(packageID);

var  diagram as EA.Diagram;

diagram = package.Diagrams.GetAt(0);

var  diagramObjects as EA.Collection;

diagramObjects = diagram.DiagramObjects;

        for( var i = 0 ; i < diagramObjects.Count ; i++ )

       {

var diagramObject as EA.DiagramObject;

diagramObject = diagramObjects.GetAt( i );

var currentElement as EA.Element;

currentElement = Repository.GetElementByID(diagramObject.ElementID);

 

if(currentElement.Type != “Note” && currentElement.Type != “ActivityPartition” &&                                      currentElement.Type != “Pool” && currentElement.Type != “Lane”)

docGenerator.DocumentElement(currentElement.ElementID,1,ACTIVITY_TEMPLATE);

 

         }

   }

catch(e)

  {

Session.Output(e);

  }

var rtf = docGenerator.GetDocumentAsRTF();

return rtf;

}

return “”;

}

 

  • Templates inside the script can be mentioned as below

var ACTIVITY_TEMPLATE = “Activity_Report”;

Conclusion:

  • Above described is an example for generating a document using document script .You can download this entire sample model with document generation scripts and templates from http://sparxsystems.in/downloads/DocumentScriptTest.eap
  • Any complex logics can be used in the script but finally it should return an RTF. 

For more details or assistance please drop a mail to info@sparxsystems.in

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *