--------------------------------------------------------------------------------
-- ATL Task
--------------------------------------------------------------------------------

--- Example
The example is the located in the egf folder. It is based on the common ATL sample example.


--- Practice
* How to create and execute an ATL Task?
1. Creation of a new ATL Task with EGF:
	Precondition:
		- The ATL project is created
		- Existence of the "ASM" file corresponding to an ATL file
		- Existence of the metamodel
		- Existence of an source file for transformation
 
	1.1. Creation in a new fcore file
   		- In a folder, [File / New / Other... / EGF / EGF Activity]
   		- In the Task, set "kind" to "ATL"
	OR
	1.1. Creation in an existing fcore file
   		- On a factory component or task, [New Sibling / Task ATL]

	1.2. Set the name of the task

	1.3. Declaration of the implementation
		- In the implementation property, select an ASM file 

	1.4. Creation of the parameters
		- On the ATL task, creation of the parameter container [New Child / Contract Container]
		- "metaModelURI" Parameter.
			New In parameter (contract), Name = "metaModelURI"
			New child, Type URI - In "Value" Property, URI expected, such as "http://www.eclipse.org/uml2/2.1.0/UML"     
		- "modelIN" Parameter.
			New In parameter (contract), Name = "modelIN"
			New child, Type URI - In "Value" Property, Path expected, such as "platform:/resource/org.eclipse.egf.usecase.atl/model/sample.uml"     
		- "modelOUT" Parameter.
			New In parameter (contract), Name = "modelOUT"
			New child, Type String - In "Value" Property, Path expected, such as "platform:/resource/org.eclipse.egf.usecase.atl/model/sample-privatized.uml"     


2. Execution of an ATL task:
	Precondition:
		- Existence of the metamodel
		- Existence of the source model
		- Existence of the output directory as specified 
 
	2.1. On the fcore file when just one task, or on the task, "Run EGF Activity..."
	2.2. The result is in the output directory


--- Platform
Validated with EGF 0.6.0, and ATL SDK-3.2.0M4
