1-- @path Families=/Families2Persons/Families.ecore
2-- @path Persons=/Families2Persons/Persons.ecore
3
4module Families2Persons;
5create OUT: Persons from IN: Families;
6
7helper context Families!Member def: isFemale(): Boolean =
8 if not self.familyMother.oclIsUndefined() then
9 true
10 else
11 if not self.familyDaughter.oclIsUndefined() then
12 true
13 else
14 false
15 endif
16 endif;
17
18helper context Families!Member def: familyName: String =
19 if not self.familyFather.oclIsUndefined() then
20 self.familyFather.lastName
21 else
22 if not self.familyMother.oclIsUndefined() then
23 self.familyMother.lastName
24 else
25 if not self.familySon.oclIsUndefined() then
26 self.familySon.lastName
27 else
28 self.familyDaughter.lastName
29 endif
30 endif
31 endif;
32
33rule Member2Male {
34 from
35 s: Families!Member (not s.isFemale())
36 to
37 t: Persons!Male (
38 fullName <- s.firstName + ' ' + s.familyName
39 )
40}
41
42rule Member2Female {
43 from
44 s: Families!Member (s.isFemale())
45 to
46 t: Persons!Female (
47 fullName <- s.firstName + ' ' + s.familyName
48 )
49}