Integrating the TextUML Toolkit with other modeling tools

No tool is an island. That is even more important when we are talking about highly focused single-purpose tools such as the TextUML Toolkit. As you probably know, the TextUML Toolkit is a tool for UML modeling using a textual notation, but that is about it. The TextUML Toolkit itself won’t help if you need features such as code generation, reverse engineering or graphical modeling/visualization. That might look as a negative thing to some, but that is by design. I am a strong believer of separation of concerns, component-based software and using the best tool for the job, and that is reflected in the design of the Toolkit.

This post will describe how to use models created by other UML2-compatible modeling tools from models you create using the TextUML Toolkit. I plan to cover other areas of integration in future posts.

Reading models created by other UML tools using the TextUML notation

If you have the TextUML Toolkit installed, one of the editors available for UML files is the TextUML Viewer. As the name implies, it is not really an editor, i.e., you cannot edit models with it, just visualize them using the TextUML notation. But it is an useful tool for reading UML models you don’t have the source for, i.e. models created by other UML2 modeling tools.

Using models created by other tools…

There are a few different ways of using models created by other UML modeling tools from your models created in TextUML.

…by co-location

In this method, you just drop the UML model you want to use to at the root of your TextUML (i.e. MDD) project. All models at the root of the same MDD project are considered to be in the same repository and thus you can make cross-model references by either using qualified names or importing the package and using simple names.

This method is dirty simple, but it forces you to keep the foreign model at a specific location, potentially forcing you to keep multiple copies of the model.

…with project references

In this method (available starting in version 1.2), the UML model you want to use is in a different project than the one you want to refer it from. You just open the properties dialog for your TextUML (MDD) project and add the project providing the UML model you want to use to the list of referenced projects. Now models at the root of that project will also be visible from your TextUML (MDD) project, in other words, they are also seen as part of the same repository.

This method is more powerful than the previous one, as now models can be shared by reference instead of by copying. There is a limitation still: the models you use ought to be part of some project in the workspace, so you cannot refer to models stored at arbitrary locations in the file system or models that are contributed by Eclipse bundles.

…by explicitly loading them

For this method, you use the load directive to load an external model located by a URI.

This method allows you to load any model, provided its location can be represented as a resolvable URI. That is the case of any file system path, or Eclipse platform URLs. The caveat is that some URIs such as file system URIs are not portable, so they are are bound to be invalid on other machines.

The entire truth…

…is that even if you are using only the TextUML Toolkit for building UML models, these are the same mechanisms for creating models that make cross-package references (see also the TextUML Guide). For the TextUML Toolkit, all UML2-compatible models are equal, no matter how they were created.

Email this to someoneShare on FacebookShare on LinkedInShare on Google+Tweet about this on Twitter

5 thoughts on “Integrating the TextUML Toolkit with other modeling tools

  1. Jerome BENOIS

    December 24, 2008 at 1:03am

    Hi Rafael,

    Great!
    “Reading models created by other UML tools using the TextUML notation” could provide an excellent way to integrate TextUML as an Eclipse Papyrus Diagram.

    Cheers,
    Jérôme.

  2. rafael.chaves

    December 24, 2008 at 1:44am

    Hi Jérôme,

    Actually, the TextUML renderer (the component that generates TextUML source from UML2 models) is pretty much self-contained so I would say it is ready for integration into Papyrus. It only needs to be wired into whatever framework Papyrus offers for third-party diagram providers. Not sure how easy or hard that part is.

    Cheers,

    Rafael

  3. rafael.chaves

    December 24, 2008 at 4:57pm

    Hi Maarten, thanks for the kind words, and thanks also for your suggestion. I investigated a while ago making UMLGraph (the tool behind LightUML) more generally useful so model creation and diagram rendering capabilities were completely decoupled (the former is based on Java code as input and as such doesn’t serve me, while the latter is based on Graphviz, and is really cool).

    The effort required was not trivial though, and since graphical visualization is more a nice to have than a key feature, I decided to drop that idea and integrated with Graphviz via EclipseGraphviz instead.

Comments are closed.