Folha de Origem
de Repetição Distinta de Muitos para Um (a)
Nota: Os grupos de modelos não são repetidos nestes exemplos.
Origem: |
Companhia
Department[]
Manager[]
|
Destino: |
Corporation
Leader[]
|
Antes do mapeamento: |
<Corporation>
|
Após o mapeamento: |
<Corporation>
<ForEach Department>
<ForEach Manager>
<Qualify>
<Condition occur(Department)=occur(Manager)>
<Leader>
<MapFrom Department, Manager>
|
Leader precisa de um ForEach. Department e Manager oferecem um.
A ordem dos dois ForEaches é arbitrária.
Folha de Origem de Repetição Distinta de Muitos para Um (b)
Origem: |
Family
Father
GradeF[]
Mother
GradeM[]
Filho GradeC[]
|
Destino: |
Person
Grade[]
|
Antes do mapeamento: |
<Person>
|
Após o mapeamento: |
<Person>
<ForEach GradeF>
<ForEach GradeM>
<ForEach GradeC>
<Qualify>
<Condition occur(GradeF)=occur(GradeM)=occur(GradeC)>
<Grade>
<MapFrom GradeF, GradeM, GradeC>
|
Semelhante ao exemplo anterior, teste de mais igualdade em Condition.
Ascendente de Origem de Repetição Distinta de Muitos para Um
Origem: |
School
Boy[]
MarkB
Girl[]
MarkG
|
Destino: |
Educação Student[]
Performance
|
Antes do mapeamento: |
<Education>
|
Após o mapeamento: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
|
Para cada nível de repetição (Student) no destino, corresponda acima
com um nível de repetição de origem (Boy e Girl) em cada origem selecionada. Aninhe
elementos ForEach de cada origem selecionada.
ForEach e Qualify-Condition Já Existem
Origem: |
School
Boy[]
MarkB
AgeB
Girl[]
MarkG
AgeG
|
Destino: |
Educação Student[]
Desempenho
Age
|
Antes do mapeamento: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
<Age>
<MapFrom>
|
Após o mapeamento: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
<Age>
<MapFrom AgeB, AgeG>
|
Não é necessário inserir ForEach, Qualify, Condition porque
já existem. Não será necessário inserir <ForEach X> nests <ForEach
Y>, se <ForEach Y> nests <ForEach X> já existir. Não será
necessário inserir Condition X=Y se Condition Y=X já existir.
Estruturas Simétricas de Repetição de Nível Múltiplo de Muitos para Um
Origem: |
School
Boy[]
GradeB[]
MarkB
Girl[]
GradeG[]
MarkG
|
Destino: |
Educação Student[]
Year[]
Performance
|
Antes do mapeamento: |
<Education>
|
Após o mapeamento: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<ForEach GradeB>
<ForEach GradeG>
<Qualify>
<Condition occur(GradeB)=occur(GradeG)>
<Year>
<Performance>
<MapFrom MarkB, MarkG>
|
Para cada nível de repetição no destino, corresponda acima com um
nível de repetição de origem em cada origem selecionada. GradeB e GradeG correspondem a Year;
Boy e Girl correspondem a Student.
Origem de Repetição Comum de Muitos para Um
Origem: |
Companhia
Departamento[]
Manager
Size
|
Destino: |
Corporation
Group[]
|
Antes do mapeamento: |
<Corporation>
|
Após o mapeamento: |
<Corporation>
<ForEach Department>
<Group>
<MapFrom Manager, Size>
|
Suba a partir de cada origem (Manager e Size) e termine com a
origem de repetição comum (Departamento).
Estruturas Simétricas de Repetição de Nível Múltiplo
Origem: |
School
Grade[]
Boy[]
MarkB
Girl[]
MarkG
|
Destino: |
Educação Year[]
Student[]
Performance
|
Antes do mapeamento: |
<Education>
|
Após o mapeamento: |
<Education>
<ForEach Grade>
<Year>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
|
Boy e Girl correspondem a Student; Grade corresponde a Year.
Repetição de Nível Múltiplo Assimétrico (a)
Origem: |
Companhia
Division[]
Team[]
Employee
University
Departamento[]
Professor
|
Destino: |
Organização
Person[]
|
Antes do mapeamento: |
<organization>
|
Após o mapeamento: |
<Organization>
<ForEach Division>
<Qualify>
<Condition occur(Division)=1>
<ForEach Team>
<ForEach Department>
<Qualify>
<Condition occur(Team)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
Para repetição de origem extra, utilize um ForEach-Qualify-Condition.
Repetição de Nível Múltiplo Assimétrico (b)
Origem: |
Companhia
Division[]
Team[]
Employee
University
Departamento[]
Professor
|
Destino: |
Organização
Location[]
Person[]
|
Antes do mapeamento: |
<Organization>
|
Após o mapeamento: |
<Organization>
<ForEach Division>
<Location>
<ForEach Team>
<ForEach Department>
<Qualify>
<Condition occur(Team)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
Pare repetição de origem ausente, simplesmente nenhum ForEach.
Repetição de Nível Múltiplo Assimétrico (c)
Origem: |
Companhia
Division[]
Employee
University
Departamento[]
Professor
|
Destino: |
Organização
Location[]
Person[]
|
Antes do mapeamento: |
<Organization>
|
Após o mapeamento: |
<Organization>
<Location>
<ForEach Division>
<ForEach Department>
<Qualify>
<Condition occur(Division)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
Pare repetição de origem ausente, simplesmente nenhum ForEach.
Origens Múltiplas Problemáticas em Diferentes Níveis de Repetições
Aninhadas
Origem: |
S S1[]
S2
S3[]
S4
|
Destino: |
T
T1[]
T2[]
|
Antes do mapeamento: |
<T>
|
Após o mapeamento: |
<T>
<ForEach S1> (causado por S1-T1 correspondente para mapeamento S2-T2)
<T1>
<ForEach S1> (causado por S1-T2 correspondente para mapeamento S2-T2)
<ForEach S3> (causado por S3-T2 correspondente para mapeamento S4-T2)
<Qualify>
<Condition occur(S1)=occur(S3)>
<T2>
<MapFrom S2,S4>
|
Duas expressões ForEach com a mesma expressão não devem ser
aninhadas, occur(S1) é ambíguo.
Origens Múltiplas Problemáticas em Diferentes Níveis de Repetições
Aninhadas (a)
Origem: |
S S1[]
S2[]
S3[]
S4 S5[]
|
Destino: |
T
T1[]
|
Antes do mapeamento: |
<T>
|
Após o mapeamento: |
<T>
<ForEach S1> (causado por S não correspondente para mapeamento S3-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S2> (causado por S2 não correspondente para mapeamento S3-T1)
<Qualify>
<Condition occur(S2)=1>
<ForEach S1> (causado por S1 não correspondido para mapeamento S5-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S3> (causado por S3-T1 correspondente para mapeamento S3-T1)
<ForEach S5> (causado por S5-T1 não correspondente para mapeamento S5-T1)
<Qualify>
<Condition occur(S3)=occur(S5)>
<T1>
<MapFrom S3,S5>
|
Duas expressões ForEach com a mesma expressão não devem ser
aninhadas, occur(S1) é ambíguo.
Origens Múltiplas Problemáticas em Diferentes Níveis de Repetições
Aninhadas (b)
Origem: |
S S1[]
S2
S3[]
S4
|
Destino: |
T
T1[]
|
Antes do mapeamento: |
<T>
|
Após o mapeamento: |
<T>
<ForEach S1> (causado por S1 não correspondido para mapeamento S4-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S1> (causado por S1-T1 correspondente para mapeamento S2-T1)
<ForEach S3> (causado por S3-T1 correspondente para mapeamento S4-T1)
<Qualify>
<Condition occur(S1)=occur(S3)>
<T1>
<MapFrom S2,S4>
|