Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
MoDisco/SimpleTransformationChain
The goal of the SimpleTransformationsChain plug-in is gathering the infrastructure and technologies plug-ins and providing orchestration of these plug-ins. These additional facilities reuse the features offered by the other plug-ins in order to allow performing more elaborate operations and complex tasks, such as directly generating a UML model from a Java project. It also provides an additional feature trying to detect bidirectional associations in target UML model.
Description
After discovery of your application, you will obtain a UML model. This model could be imported in some usual modelers like Papyrus or UML2 Tools from Modeling project.
The SimpleTransformationsChain plugin offers simple Eclipse contextual actions to dynamically launch the additionally provided features.
You can launch the "Discover UML model from Java project" action from a Java project by right-clicking on the corresponding Java project (in your workspace) and then selecting the appropriate action under Discovery > Discoverers in the provided contextual menu:
Launch configuration
The SimpleTransformationsChain plugin is registered with the "discoverer" extension point, so in launch configurations, you are able to create a discoverer launcher dedicated to a project:
Open the launch configurations:
Create a new MoDisco Discovery launch configuration, and select the discoverer "discoverUMLModelWithBidirectionalAssociationsFromProject" from the drop-down list:
Then, select your project in the "Source element" field:
And finally, click Run to start the discovery.
Discoverer API
First, add the following plug-in dependencies to your project (Require-Bundle in your Manifest.MF):
- org.eclipse.uml2.uml
- org.eclipse.modisco.usecase.simpletransformationschain
- org.eclipse.modisco.infra.discovery.core
Then, you can use the following discoverer classes:
- DiscoverUmlModelFromJavaProject: from an IJavaProject (defined in jdt.core)
- DiscoverUmlModelFromProject: from an IProject
- DiscoverUmlModelWithBidirectionalAssociationsFromJavaProject: from an IJavaProject, with bidirectional associations
- DiscoverUmlModelWithBidirectionalAssociationsFromProject: from an IProject, with bidirectional associations
For example, to discover a UML model from a Java project:
DiscoverUmlModelWithBidirectionalAssociationsFromJavaProject discoverer = new DiscoverUmlModelWithBidirectionalAssociationsFromJavaProject(); discoverer.discoverElement(javaProject, monitor); Resource umlModel = discoverer.getTargetModel();
To have a monitor to pass to the discoverElement
method, you can either call the discoverer in an Eclipse Job, or pass a new NullProgressMonitor if you don't need progress reporting.
Requirements
Eclipse Galileo with modeling plugins:
- EMF
- EMF UML2
- ATL 3.0.0
A complete bundle of Modeling components can be found at this url: Eclipse Modeling Galileo Bundle
Warning : after installation, you will have to change your Eclipse settings (file eclipse.ini) to increase allowed memory size to 1GB at least (parameter "-Xmx1024m").
Example :
-startup plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519 -product org.eclipse.epp.package.modeling.product --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx1024m -XX:ThreadStackSize=4096
Team
Gabriel Barbier (Mia-Software)
Install
You can install the discoverer from the MoDisco update site.
User manual
To illustrate the SimpleTransformationsChain plug-in, we will use a sample inspired from the Pet Store Application.
Setup
Sources of the Pet Store application are available here: http://www.oracle.com/technetwork/java/petstore1-3-1-02-139690.html
You may have to download several libraries to obtain an eclipse project without errors (JPA, JTA, JSF-apis and Servlets-jsp-apis). A complete bundle is also available from Mia-Software... To view this application in your Eclipse workspace, you will have to extract the content of this archive, and use the "import" wizard (import project in workspace).
Get UML model of Pet Store application
We will explain different ways to obtain the UML model; it will demonstrate how several simple steps have been combined to build a complex task : discover a UML model from a java project.
Basic way
There are several tools that are each able to perform a specific task; we will see how each task works.
Get the java model
- Open the Run configurations... dialog.
- Then, press the "New" button to create a configuration of type "MoDisco Discovery".
- Enter a name for this configuration, "PetStore reverse to Java model" for example.
- Select the discoverer named "org.eclipse.modisco.java.discoverer.project".
- Enter the path to the project containing the PetStore application in the "Source element" field.
- Set SERIALIZE_TARGET to true
Finally, press the Run button to get the Java model.
You could also use the the contextual menu (right click) when the project containing the Pet Store application is selected. Select Discovery > Discoverers > Discover Java Project:
Get the KDM model
Using the ATL transformation javaToKdm, we will transform the Java model into a KDM model. We have to define another configuration to perform this transformation:
- Open the Run configurations... dialog
- Press the "New" button to create a configuration of type ATL Transformation
- Enter a name for this configuration, "Java to Kdm transformation" for example
- Select the ATL module in your workspace, "/Transformations/JavaToKdm.atl" for example
- Select metamodel URIs from the EMF Registry (http://www.eclipse.org/MoDisco/Java/0.2.incubation/java and http://www.eclipse.org/MoDisco/kdm/action)
- Note: the source metamodel parameter must be named "java" and the source model parameter must be named "IN", otherwise the transformation won't work
- Select the source model ("_java.xmi" file) in your workspace, and enter a path for your target model ("_kdm.xmi" file).
Finally, press the Run button to get the KDM model.
You could also use the the contextual menu (right click) when the Java model of the Pet Store application is selected: Discovery > Discoverers > Discover KDM model from Java model.
Get the UML model
Using the ATL transformation KDMtoUML, we will transform the KDM model into a UML model.
We have to define another launch configuration to perform this transformation:
- Open the Run configurations... dialog
- Press the "New" button to create a configuration of type ATL Transformation
- Enter a name for this configuration, Kdm to Uml transformation for example.
- Select the ATL module in your workspace, "/Transformations/KdmToUml.atl" for example.
- Select metamodel URIs from EMF Registry (http://www.eclipse.org/MoDisco/kdm/action and http://www.eclipse.org/uml2/2.1.0/UML)
- Note: the source metamodel parameter must be named "kdm", and the source model parameter must be named "kdmInput", otherwise the transformation won't work
- Select the source model in your workspace, and enter a path for your target model.
Finally, press the Run button to get the UML model.
You could also use the the contextual menu (right click) when the kdm model of the Pet Store application is selected: Discovery > Discoverers > Discover UML model from KDM model.
Initialize a workflow
To be able to chain previous tasks, MoDisco a workflow initializer.
Open the "Run configurations..." dialog. Then, press the "New" button to create a configuration of type "MoDisco Workflow".
Enter a name for this configuration, "Discovery of PetStore application" for example. Then, press the "Load..." button to successively add "PetStore reverse to J2SE5 model" configuration, "Java to Kdm transformation" configuration and "Kdm to Uml transformation" configuration.
Finally, press "Run" button to get the UML model. This is a first way to get a Uml model from a java application, however when parameters change (the selected java application, target uml model, ...), you will have to change it in different configurations and check coherency of all steps.
SimpleTransformationsChain way
Open the "Run configurations..." dialog. Then, press the "New" button to create a configuration of type "MoDisco Discoverers".
Enter a name for this configuration, "PetStore reverse to UML model" for example. Select Discoverer kind "Discover UML model from java project". Enter path to the project of PetStore application.
Finally, press "Run" button to get the UML model.
You could also use the the contextual menu (right click) when the project of Pet Store application is selected. Navigate in MoDisco/java menus, click on "Discover UML model from java project" menu item.
Visualize the UML model
There is different possibility to visualize the target model, and explore informations located in.
Using MoDisco model browser
The MoDisco model browser show basically the model as a tree. It proposes a view of all instances sorted by metaclass, and offer the possibility to visualize all links in model (empty or not, cardinality, etc.).
Using UML2 Tool
After installation of UML2 Tool, a component of Modeling/MDT project, you will be able to initialize class diagrams from the UML model.
Current limitations
As this component is an aggregation of existing components, its limitations reflect this architecture: the main limitations come from the KDM to UML converter.
MoDisco | |
Components | Infrastructure: KDM · SMM · GASTM · Model Browser · Discovery Manager · MoDisco Workflow · Query Manager · Facet Manager · Metrics Visualization Builder · KDM Source Extension Technologies: Java · JEE · EjbJar · WebApp · XML Use Cases: Simple Transformation Chain · Model Filter |
Help | Installation · SVN |
Project | API Policy · Retention Policy · Project Plan · metrics · Accessibility Guidelines · Capabilities Disablement |