A tool to export Documentum (custom) object model as a graph


One of Documentum’s strengths is its strong object orientation and the possibility to define custom object types (the so-called doctypes) which inherit both attributes and behaviors from their ancestor type.

There are many cases when exporting a portion or the complete types’ hierarchy of a given repository in a readable format is really useful:

  • inserting a description of a subset of a doctypes in a documentation
  • quickly visualizing the hierarchy of doctypes while discussing design decisions

Although it has not always been officially publicly published, the “Documentum Object Relational Diagram” has always been one of the most useful technical documentation of the platform. This diagram presents the different “system” object types of the platform and their relations.

extract_documentum_or_diagram

Extract from the Documentum Object Relational Diagram for 6.0

But what if you want to easily visualize your custom doctypes (and ideally link those to the existing out-of-the-box/system doctypes)? Wouldn’t it be useful to be able to also build a visual representation of those? Manually drawing a diagram can be time-consuming and any diagram may quickly become out-of-date, automating the generation of such diagrams may sound useful.

DOT and Graphviz

There are many libraries / graph engines available. It could be Graphviz is the most known of those: it is a set of open-source tools for drawing graphs defined in the DOT language. The DOT language is actually a very plain text language, which is actually really easy to read (at least for simple to medium-complexity graphs). Here is a very small example of it:

The following DOT description:

 graph mygraph {
     a -- b -- c;
     b -- d;
 }

is the description of the following (undirected) graph:

220px-DotLanguageUndirected

Producing a Java class which would connect to a given docbase, retrieve doctype information and produce a DOT description of given Documentum object model (including both out-of-the-box types and custom types) didn’t seem too complicated. Ideally the following information could be retrieved for each doctype:

  • its attributes: names, data types and lengths, single/repeating/mandatory, ideally their DQL value assistance
  • the links to its parent and children types
  • the filestore defined on the doctype (if any)
  • whether the doctype has a TBO (Types Based Object) attached

Once the DOT description file produced, Graphviz would be used to generate a graph from it.

The Documentum Object Model Exporter

The utility I developed (the so-called “Object Model Exporter”) is available for download on this sourceforge page. Note that the entire graphical interface of the tool is built on the antinstaller utility.


A small note here as antinstaller is really worth it. What a great piece of tool!

[…]AntInstaller enables you to quickly build installers for your applications using an XML config file and all the power of Ant.[…]

If you produce some program or script which needs some user input, building the corresponding graphical interface can actually take more time than developing the program/script code. And this is where antinstaller comes into the game. With antinstaller, you may quickly and easily define one or several pages with various controls which your user(s) will use to define the different parameters to inject into your program/script. If you do not have any utility like antinstaller in your environment, please try it, it can be a real game-changer.


Running the tool

For the moment, the only real requirement for running the Object Model Exporter program is running it on a Windows machine. Once the ObjectModelExporter.zip downloaded to your station, unzip it to the location of your choice. [edit: there is currently a small limitation: the path you run the tool from should not contain spaces]. Note that the zip contains both the 1.5.0_14 JRE and Graphviz 2.26.3, which explains its quite important size. The tool also contains a DFC v6.7SP1. If your target docbase is not compatible with a 6.7DFC, please replace the jars contained in the Tools\DFC directory (all jars contained in the folder are dynamically load to the classpath). !!! Important: depending your  DFC version, you may have to update the version of the bundled JRE, in this case, please modify the JAVA_HOME variable in the install.cmd file accordingly !!!

Step 0: Update the Tools\DFC\config\dfc.properties file to match the target environment.

Step 1: Run the install.cmd command file.

objectmodelexporter_welcome

Click on next.

Step 2: Define which doctypes you want to list on the diagram by:

  • either defining a comma-seperated list of doctypes to analyze
  • or defining a qualification for selecting the dm_type objects to analyze

objectmodelexporter_mainparameters

Click on Next

Step 3: Enter the connection settings (docbase name, username and password) to be used to connect to the target docbase

objectmodelexporter_connection_settings

Click on Next

Step 4:

objectmodelexporter_launch

Click on Launch.

objectmodelexporter_finished

Step 5: Once the “Finished” dialog box displayed, you can access the result of the object model analysis in the \output folder.

Example graph (out-of-the-box types)

Example graph (out-of-the-box types)


In this very first version of the tool, the image is exported as a JPEG picture. If the number of doctypes is important, the output image could be quite complex and finding a fast image viewer. I personally recommend the Picasa Photo Viewer.

If I get such requests, I will work on providing a PDF export (I currently have some graphical bugs when exporting to PDF and don’t have much time to investigate on those). It could also be the JPEG format is not the best format to choose for getting the best viewing performance. If you have some recommendation, please post a reply. You may actually modify the graphFormat parameter of the generateObjectModelGraph ANT task macro in file objectmodelexporter-build.xml, and specify a different GraphViz output format.


Advanced configuration

You won’t find advanced settings in the GUI itself, but you may tune the behavior of the Object Model Exporter by modifying the conf\customObjectModelExporter.properties configuration file to fit your needs. Here is the complete list of the options which you can use.

Parameter Description Default value
setDrawAttributesEnabled Whether to draw attributes information for each selected type false
setDrawParentsEnabled Whether to draw the supertype(s) for each selected type true
setDrawParentsAttributesEnabled Whether to draw the attributes of the supertype(s) of each selected type false
setDrawChildsEnabled Whether to draw subtypes for each selected type true
setDrawTBOEnabled Whether to draw an image next to each type’s name if a TBO is defined on the type true
setDrawDmSysobjectAttributesEnabled Whether the draw the attributes of the dm_sysobject type false
setDrawFileStoreInfoEnabled Whether the draw the filestore defined on each selected type false
setDrawValueAssistanceEnabled Whether to draw the Value Assistance information (only for DQL-based value assistance, other VA not supported) true
setTypesPrefixBlackListFilter A comma-seperated list of blacklisted prefixes of doctypes which should not be displayed N.A.
setJustifyValueAssistanceEnabled The Value Assistance information may be large. This setting defines whether the value assistance lines should be justified.</ true
setVaJustificationMaxWordsCountPerLine When the setJustifyValueAssistanceEnabled setting is set to true, defines whether the maximum count of words each line of the value assistance should contain 5
setDrawHeadingsEnabled Whether to draw the “Name, Type, Length, VA” headings for type info true
setDrawTitleEnabled Whether a title should be printed on the graph false

15 responses to “A tool to export Documentum (custom) object model as a graph

  1. Pingback: Documentum Object Model Diagramer | dm_misc: Miscellaneous Documentum Information

  2. Reblogged this on dump dm_documentum and commented:
    Helpful tool

    Like

  3. Laurent Bluszez

    Congratulations /Félicitations ….
    Very useful. A really interesting tool for Documentum Consultants
    Thanks a lot for sharing …
    You should receive an award for this …

    Like

    • Thanks for the comment. Happy to see you find the tool useful. Do not hesitate if you have some feedback about its usage or have ideas to improve the tool. I hope you will also appreciate the other tools/posts I will share in the future.

      Like

  4. Ingrid-Karin Gilje

    Very usefull tool!

    A very minor suggestion: The example for specification mode dql is misguiding: It says “where type like ‘%doc%’, but it should be “where name like ‘%doc%’. No fatal error, since we can look up the correct dm_type attribute if we don’t already know it.

    Liked by 1 person

  5. Nice Tool, I’m using XCP 2.1/2.0, is there any way/method of showing the model based on relationship not supertype?

    Like

  6. Gerrit van Kammen

    very nice tool! We have implemented a lot of custom types and created relations between them (parent child). Is it much work to visualize the relations between the types in the diagram? Or could you give some hints on how to implement this feature?

    Like

    • Hi Gerrit,

      I presume you want a link to be displayed between two doctypes of a dm_relation_type exists for which those two doctypes are specified as child_type and parent_type. And the relation_name must be written on the link. Could you confirm? Maybe indicating the relatio´s direction could also be useful.

      Like

      • Gerrit van Kammen

        HI Stephane, Yes, all of the above would be great. We also have defined relations with their own custom attributes. I am not sure yet what would be the best way to show those in the diagram. Maybe in that case show the relation type as a record shape with the attributes inside (just like a regular type) and show the link between the parent and the child, but only if the relation has custom attributes. And as Marc suggested earlier, maybe include an option to choose the diagram type : hierarchy (super_type based), relational (relation based), both (hierarchy and relational).I would be happy to test and suggest some more features.

        Like

      • Exactly that would be perfect, it is tricky as there can be a hierarchy, doing it manually is a pain.

        Like

  7. Gerrit, Marc, I created a discussion thread on the sourceforge project of the tool. If you don’t mind, we will use this thread to further discuss this feature request: http://sourceforge.net/p/documentumobjectmodelexporter/discussion/featurerequests/
    Thanks,

    Like

  8. very useful tool. I hope new version in the furure

    Like

  9. I just discovered this tool. I’ve been wishing for something like this for a long time. Is there any way to control the order that the attributes are presented. It doesn’t always appear to be alphabetical, nor does it follow the display_config order. Thank you for this tool. I’d be interested in expanding on some of the capabilities to show the label. Perhaps a display config tool to show the order/attribute information for all types.

    Like

Leave a comment