MDWorkbench Services, available in the Services view, allow a user to easily execute a packaged model transformation. An MDWorkbench Service provides a wizard for the user to select transformation options and to launch the service execution.
MDWorkbench Services might be implemented using MDWorkbench Rules. If you have Java skills, services can also be fully implemented in Java, with an Operation Service.
Here are the steps to declare an operation service:
com.sodius.mdw.metamodel.xxx, for each metamodel your project requires.
The service extension references a wizard to display when the user executes the service. Though this wizard is optional, it is very commonly needed for the user to enter input information used by the launched transformation.
The wizard must implement the
org.eclipse.jface.wizard.IWizard interface and is recommended to extend
The wizard is free to display as many pages as needed and to group options in such a way that the interface is intuitive for the end user.
The contract is for the
IWizard.performFinish() method to store all user entered data, necessary for the service execution,
IDialogSettings instance returned by
All options set in the
IDialogSettings instance are then accessible
to the associated
The service extension references an
to instantiate the main
Operation to execute.
OperationFactory is given an instance of
OperationContext that contains all user entered data set in the wizard.
Operation is a block of code to execute and has an associated status,
which determines whether warning or errors are encountered during the execution.
The status enables to monitor the execution state of the operation and to query the execution result.
An operation can be decomposed into sub-operations.
Operation cannot throw an exception.
All exceptions that occur during the execution are to catch and to store into the operation associated status.
The developer is encouraged to regularly check the
method to determine whether the operation shall continue to execute.
The operation should return as soon as a cancel request is detected or when an error is stored in the status.
provides ready to use operations for common activities, like reading or writing a model.
provides a common base for operations that are targeted to model transformation, where an output model is created from an input model.
The Services view shows available services. User can execute Operation services from here.
When a service execution is completed, a log is displayed in the Report view.
The log shows the flow of executed operations, so that the user can review the various steps of the execution and the associated information.
MappingFunction instances were used during the execution,
the log also provides information on the input and output models and the traceability links between their model elements.
An Operation can also be executed using a code like the following:
// create the context with input options OperationContext context = OperationContext.Factory.create(MDWorkbenchFactory.create()); context.setProperty("myVariable", "myValue"); // run the operation Operation operation = new MyOperationFactory().create(context); new OperationRunner().run(operation, new NullProgressMonitor()); // write the operation's log FileOutputStream output = new FileOutputStream(new File("c:\\temp\\log.html")); StatusWriter.Factory.createHTML(context).write(operation.getStatus(), output); output.close();
The Operation service author can provide extension points in the transformation so that other plug-in authors can contribute to enhance the transformation.
com.sodius.mdw.platform.services.service extension point