Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MoDisco/Workflow"

(Install MoDiscoWorkflow)
m
Line 1: Line 1:
MoDisco workflow provides a mechanism to initialize and launch a workflow of discoverers, generators and model transformations. This project uses mainly two existing components in eclipse platform: LaunchConfiguration and MWE (Model Workflow Engine).  
+
MoDisco workflow provides a mechanism to initialize and launch a workflow of discoverers, generators and model transformations. This project uses mainly two existing components in the Eclipse platform: LaunchConfiguration and MWE (Model Workflow Engine).  
  
 
== Requirements  ==
 
== Requirements  ==
Line 16: Line 16:
 
=== Dependencies errors  ===
 
=== Dependencies errors  ===
  
Because MoDisco Workflow has a driver mechanism to manage external components, each driver has a dependency to one handled component. To install properly a dedicated driver, handled component shall have been installed. It is the reason that when you clicked on the "Install..." button, you could have any dependencies errors. In that case, you could install the missing packages at the origin of the errors or deselect dedicated driver. Then restart the installation process.  
+
Because MoDisco Workflow has a driver mechanism to manage external components, each driver has a dependency to one handled component. To install a dedicated driver properly, the handled component shall have been installed. It is a reason why when you click on the "Install..." button, you can have dependency errors. In that case, you could install the missing packages at the origin of the errors or deselect the dedicated driver. Then restart the installation process.  
  
 
[[Image:-MoDiscoWorkflow-ErrorDependency.png|thumb|center|320x340px|Example of dependencies errors]]  
 
[[Image:-MoDiscoWorkflow-ErrorDependency.png|thumb|center|320x340px|Example of dependencies errors]]  
  
If you didn't have dependencies errors, click on the "Finish" button. The installation of the MoDiscoWorkflow plug-in and his selected drivers is finished. Congratulation!
+
If you didn't have dependency errors, click on the "Finish" button. The installation of the MoDiscoWorkflow plug-in and its selected drivers is finished. Congratulations!
  
 
== Build your MoDiscoWorkflow  ==
 
== Build your MoDiscoWorkflow  ==
Line 26: Line 26:
 
=== The user interface of MoDiscoWorkflow  ===
 
=== The user interface of MoDiscoWorkflow  ===
  
To reach MoDiscoWorkflow plug-in user interface, you have to click on this button [[Image:-MoDiscoWorkflow-Execution.png]] and then click on the “Run Configuration” menu.  
+
To reach the MoDiscoWorkflow plug-in user interface, you have to click on this button [[Image:-MoDiscoWorkflow-Execution.png]] and then click on the “Run Configuration” menu.  
  
 
[[Image:-MoDiscoWorkflow-PluginCentral.png|thumb|center|400x283px|User interface of MoDiscoWorkflow]]  
 
[[Image:-MoDiscoWorkflow-PluginCentral.png|thumb|center|400x283px|User interface of MoDiscoWorkflow]]  
Line 33: Line 33:
  
 
*Add a MoDiscoWork in the MoDiscoWorkflow from the “New…” button  
 
*Add a MoDiscoWork in the MoDiscoWorkflow from the “New…” button  
*Edit a MoDiscoWork from the button “Edit…”  
+
*Edit a MoDiscoWork from the “Edit…” button
*Remove a MoDiscoWork from the button “Remove”
+
*Remove a MoDiscoWork from the “Remove” button
*Up a MoDiscoWork in the MoDiscoWorkflow from the “Up” button  
+
*Move a MoDiscoWork up in the MoDiscoWorkflow using the “Up” button  
*Down a MoDiscoWork in the MoDiscoWorkflow from the “Down” button  
+
*Move a MoDiscoWork down in the MoDiscoWorkflow using the “Down” button  
 
*Load a MoDiscoWork in the MoDiscoWorkflow from the “Load…” button
 
*Load a MoDiscoWork in the MoDiscoWorkflow from the “Load…” button
  
 
=== Create a MoDiscoWork  ===
 
=== Create a MoDiscoWork  ===
  
After having clicked on the "New.." button, you must choose the type of transformation you want to add. According to the installed drivers, you have more or less choice.  
+
After having clicked on the "New..." button, you must choose the type of transformation you want to add. According to the installed drivers, you have more or less choice.
  
 
[[Image:-MoDiscoWorkflow-New.png|thumb|center|200x200px|Choice of transformation type]]  
 
[[Image:-MoDiscoWorkflow-New.png|thumb|center|200x200px|Choice of transformation type]]  
Line 47: Line 47:
 
After choosing the type of MoDiscoWork, click on the "Next" button to configure your transformation. For the example, we have chosen "Transformation Java". Now, you can configure your MoDiscoWork of java type.  
 
After choosing the type of MoDiscoWork, click on the "Next" button to configure your transformation. For the example, we have chosen "Transformation Java". Now, you can configure your MoDiscoWork of java type.  
  
[[Image:-MoDiscoWorkflow-AddMoDiscoWorkJava.png|thumb|center|368x300px|Add a MoDiscoWork of java type]]  
+
[[Image:-MoDiscoWorkflow-AddMoDiscoWorkJava.png|thumb|center|368x300px|Add a MoDiscoWork of java type]]  
  
 
=== Edit a MoDiscoWork  ===
 
=== Edit a MoDiscoWork  ===
Line 55: Line 55:
 
=== Remove a MoDiscoWork  ===
 
=== Remove a MoDiscoWork  ===
  
[[Image:-MoDiscoWorkflow-RemoveMoDiscoWorkflow.png|thumb|center|400x270px|Remove a MoDiscoWork in the MoDiscoWorkflow]]  
+
[[Image:-MoDiscoWorkflow-RemoveMoDiscoWorkflow.png|thumb|center|400x270px|Remove a MoDiscoWork from the MoDiscoWorkflow]]  
  
 
To remove a MoDiscoWork, you must select a MoDiscoWork in the MoDiscoWorkflow and click on the "Delete" button. A new window opens proposing these various choices:  
 
To remove a MoDiscoWork, you must select a MoDiscoWork in the MoDiscoWorkflow and click on the "Delete" button. A new window opens proposing these various choices:  
  
 
*"Delete from launcher": To delete the MoDiscoWork selected in the MoDiscoWorkflow and its associated launcher.  
 
*"Delete from launcher": To delete the MoDiscoWork selected in the MoDiscoWorkflow and its associated launcher.  
*"Delete from workflow" To delete the MoDiscoWork selected in the MoDiscoWorkflow  
+
*"Delete from workflow": To delete the MoDiscoWork selected in the MoDiscoWorkflow  
*Cancel : To cancel
+
*Cancel: To cancel
  
 
=== Load a MoDiscoWork  ===
 
=== Load a MoDiscoWork  ===
Line 67: Line 67:
 
[[Image:-MoDiscoWorkflow-Load.png|thumb|center|200x200px|Load a MoDiscoWork]]  
 
[[Image:-MoDiscoWorkflow-Load.png|thumb|center|200x200px|Load a MoDiscoWork]]  
  
When you want to load a launcher (MoDiscoWork) in the MoDiscoWorkflow, click on the "Load…" button. A new window opens proposing every launchers present in the workspace which have a driver defined for the type of launcher. To load a MoDisocoWork, select a launcher and click on the “Finish” button.  
+
When you want to load a launcher (MoDiscoWork) in the MoDiscoWorkflow, click on the "Load…" button. A new window opens proposing every launcher present in the workspace which has a driver defined for the type of launcher. To load a MoDiscoWork, select a launcher and click on the “Finish” button.  
  
 
=== Run your MoDiscoWorkflow  ===
 
=== Run your MoDiscoWorkflow  ===
  
When you finished building your MoDiscoWorkflow, click on the “Run” button. An error window opens if one or more MoDiscoWork are not valid. Every MoDiscoWork must be valid to run MoDiscoWorkflow.  
+
When you finished building your MoDiscoWorkflow, click on the “Run” button. An error window opens if one or more MoDiscoWork are not valid. Every MoDiscoWork must be valid to run the MoDiscoWorkflow.  
  
 
== Create a driver for MoDiscoWorkflow  ==
 
== Create a driver for MoDiscoWorkflow  ==
Line 85: Line 85:
 
*A field name: This name will be used to the list of transformation types.  
 
*A field name: This name will be used to the list of transformation types.  
 
*A field icon: It’s driver icon path.  
 
*A field icon: It’s driver icon path.  
*A field class: The class has to implement this interface "org.eclipse.gmt.modisco.workflow.DriverInterface".
+
*A field class: The class has to implement this interface: "org.eclipse.gmt.modisco.workflow.DriverInterface".
  
 
==== "execution" extension point  ====
 
==== "execution" extension point  ====
Line 91: Line 91:
 
This extension point defines:  
 
This extension point defines:  
  
*A field class: The class has to implement this interface "org.eclipse.gmt.modisco.workflow.ExecutionInterface"
+
*A field class: The class has to implement this interface: "org.eclipse.gmt.modisco.workflow.ExecutionInterface"
  
 
=== Papyrus driver example  ===
 
=== Papyrus driver example  ===
Line 100: Line 100:
 
*Name this project "org.eclipse.gmt.modisco.driver.papyrus"  
 
*Name this project "org.eclipse.gmt.modisco.driver.papyrus"  
 
*Add the "com.cea.papyrus.extensionpoints.transformation" plug-in to the list of plug-ins required for the operation of this plug-in (dependencies)  
 
*Add the "com.cea.papyrus.extensionpoints.transformation" plug-in to the list of plug-ins required for the operation of this plug-in (dependencies)  
*Create a class ("LaunchDriverPapyrus.java") whish implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface" (below).  
+
*Create a class ("LaunchDriverPapyrus.java") which implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface" (below).  
*Create a class ("TransformationExecute.java") whish implements the interface "org.eclipse.gmt.modisco.workflow.ExecutionInterface" (below).  
+
*Create a class ("TransformationExecute.java") which implements the interface "org.eclipse.gmt.modisco.workflow.ExecutionInterface" (below).  
 
*Add a new extension named "org.eclipse.gmt.driver"  
 
*Add a new extension named "org.eclipse.gmt.driver"  
 
*Name the "id" field of extension point "idPapyrus"  
 
*Name the "id" field of extension point "idPapyrus"  
 
*For the "driverUI" point extension:  
 
*For the "driverUI" point extension:  
 
**Name the "name" field "Papyrus Generation"  
 
**Name the "name" field "Papyrus Generation"  
**Indicate the icon papyrus path in the plug-in  
+
**Indicate the papyrus icon's path in the plug-in  
 
**Indicate the class which implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface"  
 
**Indicate the class which implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface"  
 
*For the "execution" point extension:  
 
*For the "execution" point extension:  

Revision as of 16:33, 12 January 2010

MoDisco workflow provides a mechanism to initialize and launch a workflow of discoverers, generators and model transformations. This project uses mainly two existing components in the Eclipse platform: LaunchConfiguration and MWE (Model Workflow Engine).

Requirements

To use the plug-in you need:

  • JDK 1.5 or above
  • Eclipse Modeling Ganymede SR2 (Version: 3.4.2) because it incorporates JET, QVTo and ATL.

Install MoDiscoWorkflow

Install instructions

You could download an archived site or use the update site of MoDisco .

Dependencies errors

Because MoDisco Workflow has a driver mechanism to manage external components, each driver has a dependency to one handled component. To install a dedicated driver properly, the handled component shall have been installed. It is a reason why when you click on the "Install..." button, you can have dependency errors. In that case, you could install the missing packages at the origin of the errors or deselect the dedicated driver. Then restart the installation process.

Example of dependencies errors

If you didn't have dependency errors, click on the "Finish" button. The installation of the MoDiscoWorkflow plug-in and its selected drivers is finished. Congratulations!

Build your MoDiscoWorkflow

The user interface of MoDiscoWorkflow

To reach the MoDiscoWorkflow plug-in user interface, you have to click on this button -MoDiscoWorkflow-Execution.png and then click on the “Run Configuration” menu.

User interface of MoDiscoWorkflow

You can now build your MoDiscoWorkflow. Various properties are proposed to you:

  • Add a MoDiscoWork in the MoDiscoWorkflow from the “New…” button
  • Edit a MoDiscoWork from the “Edit…” button
  • Remove a MoDiscoWork from the “Remove” button
  • Move a MoDiscoWork up in the MoDiscoWorkflow using the “Up” button
  • Move a MoDiscoWork down in the MoDiscoWorkflow using the “Down” button
  • Load a MoDiscoWork in the MoDiscoWorkflow from the “Load…” button

Create a MoDiscoWork

After having clicked on the "New..." button, you must choose the type of transformation you want to add. According to the installed drivers, you have more or less choice.

Choice of transformation type

After choosing the type of MoDiscoWork, click on the "Next" button to configure your transformation. For the example, we have chosen "Transformation Java". Now, you can configure your MoDiscoWork of java type.

Add a MoDiscoWork of java type

Edit a MoDiscoWork

To edit a MoDiscoWork, click on the “Edit…” button after selecting the desired MoDiscoWork. A new wizard opens to configure the selected MoDiscoWork.

Remove a MoDiscoWork

Remove a MoDiscoWork from the MoDiscoWorkflow

To remove a MoDiscoWork, you must select a MoDiscoWork in the MoDiscoWorkflow and click on the "Delete" button. A new window opens proposing these various choices:

  • "Delete from launcher": To delete the MoDiscoWork selected in the MoDiscoWorkflow and its associated launcher.
  • "Delete from workflow": To delete the MoDiscoWork selected in the MoDiscoWorkflow
  • Cancel: To cancel

Load a MoDiscoWork

Load a MoDiscoWork

When you want to load a launcher (MoDiscoWork) in the MoDiscoWorkflow, click on the "Load…" button. A new window opens proposing every launcher present in the workspace which has a driver defined for the type of launcher. To load a MoDiscoWork, select a launcher and click on the “Finish” button.

Run your MoDiscoWorkflow

When you finished building your MoDiscoWorkflow, click on the “Run” button. An error window opens if one or more MoDiscoWork are not valid. Every MoDiscoWork must be valid to run the MoDiscoWorkflow.

Create a driver for MoDiscoWorkflow

"driver" extension point

"driver" extension point architecture

The MoDiscoWorkflow plug-in proposes an extension point named "driver". This extension point contains a sequence one..one of "driverUI" extension point and "execution" extension point. The "id" field is required. It allows binding both extension points.

===="driverUI" extension point====" This extension point defines:

  • A field name: This name will be used to the list of transformation types.
  • A field icon: It’s driver icon path.
  • A field class: The class has to implement this interface: "org.eclipse.gmt.modisco.workflow.DriverInterface".

"execution" extension point

This extension point defines:

  • A field class: The class has to implement this interface: "org.eclipse.gmt.modisco.workflow.ExecutionInterface"

Papyrus driver example

In this example, we are creating a new driver for launcher of papyrus. Follow these steps:

  • Create a new plug-in project
  • Name this project "org.eclipse.gmt.modisco.driver.papyrus"
  • Add the "com.cea.papyrus.extensionpoints.transformation" plug-in to the list of plug-ins required for the operation of this plug-in (dependencies)
  • Create a class ("LaunchDriverPapyrus.java") which implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface" (below).
  • Create a class ("TransformationExecute.java") which implements the interface "org.eclipse.gmt.modisco.workflow.ExecutionInterface" (below).
  • Add a new extension named "org.eclipse.gmt.driver"
  • Name the "id" field of extension point "idPapyrus"
  • For the "driverUI" point extension:
    • Name the "name" field "Papyrus Generation"
    • Indicate the papyrus icon's path in the plug-in
    • Indicate the class which implements the interface "org.eclipse.gmt.modisco.workflow.DriverInterface"
  • For the "execution" point extension:
    • Indicate the class which implements the interface "org.eclipse.gmt.modisco.workflow.ExecutionInterface"
Driver Papyrus example ("driverUI" extension point)
Driver Papyrus example ("extension" extension point)

package org.eclipse.gmt.modisco.workflow.driver.papyrus.ui;
 
import java.util.List;
 
import org.eclipse.gmt.modisco.workflow.DriverInterface;
import org.eclipse.gmt.modisco.workflow.driver.papyrus.Constant;
import org.eclipse.gmt.modisco.workflow.ui.common.MoDiscoWorkParameter;
 
public class LaunchDriverPapyrus implements DriverInterface {
 
	@Override
	public String getTypeLaunchConfig() {
	     return "com.cea.papyrus.extensionpoints.transformation.launchConfigurationType";
	}
}

The "com.cea.papyrus.extensionpoints.transformation.launchConfigurationType" string is the papyrus launcher type. The launcher type is present in the ".launch" file. This file is created during the creation of a new launcher of this type

package org.eclipse.gmt.modisco.workflow.driver.papyrus.execution;
 
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.gmt.modisco.workflow.ExecutionInterface;
import com.cea.papyrus.extensionpoints.transformation.launch.LaunchTransformationDelegate;
 
 
public class TransformationExecute implements ExecutionInterface {
 
	@Override
	public void launch(ILaunchConfigurationWorkingCopy configuration, ILaunch launch) {
		try {
			LaunchTransformationDelegate delegate = new LaunchTransformationDelegate();
			delegate.launch(configuration,ILaunchManager.RUN_MODE, launch,new NullProgressMonitor());
		} catch (CoreException e) {
			e.printStackTrace();
		}
	}
}

It is necessary to use the delegate to execute the configuration.

Team

Nicolas Payneau (Mia-Software)

Gabriel Barbier (Mia-Software)

Current limitations

Right now, it's not possible to bind the parameters between components. Furthermore, the workflow is executed in a sequential way.

Wishlist

  • Use the engine of MWE to launch a workflow.
  • Use the last version of MWE in MoDiscoWorkflow.
  • Export a MoDiscoWorkflow as a new discoverer project (Java plug-in project).

Back to the top