= Simpletransformationschain 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:
<pre>
DiscoverUmlModelWithBidirectionalAssociationsFromJavaProject discoverer = new DiscoverUmlModelWithBidirectionalAssociationsFromJavaProject();
discoverer.discoverElement(javaProject, monitor);
Resource umlModel = discoverer.getTargetModel();
</pre>

To have a monitor to pass to the <code>discoverElement</code> method, you can either call the discoverer in an Eclipse Job, or pass a new NullProgressMonitor if you don't need progress reporting.
