Alf Plugin

Alf language within MagicDraw

Alf (the Action Language for Foundation UML) is a textual language for coding detailed, executable behavior within an overall UML model. Alf is a standard of the Object Management Group (OMG), which is also the organization that maintains the UML specification. Alf is one of a suite of OMG specifications related to defining precise execution semantics for UML, building on the original Foundational UML (fUML) specification.

The Alf Plugin for MagicDraw allows you to use the Alf language within MagicDraw. The Alf Plugin provides both a syntax-aware editor for entering and updating Alf code, and a compiler for translating Alf code into fUML activity models. When used with Cameo Simulation Toolkit, behavioral specifications written using Alf code are fully executable in the context of class, activity and state machine models.

The Alf Plugin supports the Alf language at the “Full Conformance” level, i.e. it provides a complete action language for representing behavior within a UML model created in the usual way in MagicDraw.


Key Features:

  • Supports the Alf 1.1 action language at the “Full Conformance” level.
  • Provides a syntax aware editor for Alf bodies of activities, opaque behavior, opaque expressions and opaque actions.
  • Compiles to executable UML activity models.

Why an action language?

In order for a model to be fully executable, it has to specify all the detailed behavior to be executed during a simulation run. It is possible to do this using activity diagrams, but creating explicit activity models at this level of detail is tedious and error prone.

Alternatively, Cameo Simulation Toolkit provides a rich capability for using scripting languages (such as Javascript) within executable UML models. While such languages benefit from being already well-known, they do not, however, naturally integrate with the UML model in which they are embedded. For example, a navigation from an object across an association can require several API calls.

Alf, on the other hand, was designed as a Java-like scripting language that is fully integrated with the enclosing UML model. Using Alf gives you all the functionality of specifying behavior using activity diagrams, only far more easily.

For example, suppose you are modeling an Assembly that contains a set of Components, and you want to compute the total weight of the Assembly as the sum of the weight of the Components. You could draw an Activity diagram with eight or more different actions on it to do this. Or you could code it in JavaScript using the non-standard MagicDraw Action Language Helper (ALH) API as

totalWeight = 0.0;

for (var i = 0; i < components.length; i++) {
    totalWeight += ALH.getValue(components[i], "weight");


Or you could write the single standard Alf expression:


this.totalWeight = this.components.weight->reduce '+' ?? 0.0;

and the Alf Editor will even provide static type checking, consistent with your class model.
Alf is the scripting language designed to be used with UML.