We’ve just released Epsilon v0.8.9, which includes many improvements and bug fixes, as well as a new task-specific language, Epsilon Flock. Epsilon Flock is a model-to-model transformation language tailored for migrating models following changes to their metamodels.
In some cases, specifying migration with existing model-to-model transformation languages can be cumbersome. For example, consider the ETL code below, for migrating Persons to a metamodel that has extracted a Telephone class:
rule Person2Person
transform old : Old!Person
to p : New!Person {
p.name = old.name;
p.address = old.address;
p.gender = old.gender;
p.dob = old.dob;
p.telephoneNumber = new New!TelephoneNumber;
p.telephoneNumber.areaCode = old.areaCode;
p.telephoneNumber.number = old.number;
}
In the transformation above, there is some redundancy. Firstly, model elements that have not been affected by the metamodel evolution (such as name, address, gender and dob), must be copied from old to new Persons. In Epsilon Flock, the values of these features are copied automatically. Secondly, the Person rule must define a source type and variable and a target type and variable. In Epsilon Flock, migration rules are scoped to a single type, and two built-in variables (original and migrated) are used to access old and new Persons. The following Epsilon Flock code is equivalent to the ETL above:
migrate Person {
migrated.telephoneNumber = new Migrated!TelephoneNumber;
migrated.telephoneNumber.areaCode = original.areaCode;
migrated.telephoneNumber.number = original.number;
}
Epsilon Flock also provides concise mechanisms for changing the type of and deleting model elements, and we have plans to enhance the language in future versions of Epsilon.
We’ve added to the Epsilon website documentation, an example and a screencast to help you get started with Epsilon Flock. There’s also a technical report, which includes examples of Epsilon Flock for migrating a Petri nets model and a UML class diagram. The Epsilon Flock paper will appear at ICMT 2010 in late June. As always, please do leave questions and feedback in the Epsilon Forum, and we’ll get back to you.