This open source software is a reference implementation, consisting of software and related files, for the OMG specification called the Semantics of a Foundational Subset for Executable UML Models (fUML). The reference implementation is intended to implement the execution semantics of UML activity models, accepting an XMI file from a conformant UML model as its input and providing an execution trace of the selected activity model(s) as its output.
The reference implementation was developed as part of a Lockheed Martin Corporation funded project with Model Driven Solutions (at that time a division of Data Access Technologies) in 2008. The objectives for making this reference implementation open source are to:
-
encourage tool vendors to implement this standard in their tools
-
provide a reference that can assist in evaluating vendor implementations conformance with the specification
-
encourage evolution of the reference implementation to support further enhancements to its functionality such as a model debugger, or animation of the execution trace
-
support evaluation and evolution of the the specification to support UML execution semantics and the execution semantics of its profiles suchas SysML.
For licensing information, please see the file Licensing-Information.txt and the associated files Common-Public-License-1.0.txt and Apache-License-2.0.txt.
The implementation build requires the following to be installed:
- Oracle Java Version 8 - see http://java.oracle.com/ (currently cannot use JDK 9 or higher)
- Apache Maven Version 2.2 or above - see http://maven.apache.org/
To build from the command line:
-
In a Windows/DOS command window, navigate to the 'root' reference implementation directory. This directory is where the Apache Maven 'pom.xml' file can be found.
-
Use the following command:
mvn -DskipTests install
Several targets will be executed, and the message 'BUILD SUCCESSFUL' should be displayed. Generated and compiled code can be found under the 'target' directory.
To build using Eclipse: The implementation build requires Eclipse Neon or above with the M2E plugin and dependencies:
-
Start Eclipse
-
Import the Maven project into Eclipse
- File->Import->Existing Maven Projects
- Select Next and for the "root directory" select the parent directory for the pom.xml file.
- The project should be imported successfully.
- Run the tests
- Right click the project root (fuml)
- Run As->Maven test
- Install
- Right click the project root (fuml)
- Run As->Maven install
-
In a Windows/DOS command window, navigate to the 'root' reference implementation directory. This directory is where the Apache Maven 'pom.xml' file can be found.
-
Use the following command:
mvn test
The test output can be found in the 'target/surefire-reports' directory.
Testing individual JUnit tests in Eclipse:
- Right-click on any file under the 'src/test/java' folder with a filename ending in 'TestCase' or 'Test'
- Run As->JUnit Test.
- The test should execute and display output.
-
In a Windows/DOS command window, navigate to the 'root' reference implementation directory. This directory is where the Apache Maven 'pom.xml' file can be found.
-
Use the following command:
mvn install
A binary deployment 'zip' file will be created and expanded onto the current drive's root directory. The deployment directory will be called: 'fuml-[version string]-distribution'
-
In a Windows/DOS command window, navigate to the 'bin' directory for the DEPLOYED implementation. The implementation can only be run from a DEPLOYED binary or source distribution (see above).
-
To load a UML model file (XMI 2.1 or 2.4.1/2.5 format) and execute one or more behaviors (activities), use the following command:
fuml <model-file> [<behavior-name> <behavior-name> <behavior-name> <...>]
Where:
-
<model-file>
is UML model file (XMI 2.1 or 2.4.1/2.5 format) -
<behavior-name>
is a named behavior within the model-file
If no behavior name is given, then there should be only a single behavior in the top-level namespace of the model, and this is what is executed.
-
-
The execution trace will print to the console. This may be redirected to a file if desired (e.g., by appending '> trace.txt' to the command above).