다대일 별도 반복 소스 리프(a)
주: 이 예에 있는 모델 그룹은 반복되지 않습니다.
소스: |
Company
Department[]
Manager[]
|
대상: |
Corporation
Leader[]
|
맵핑 전: |
<Corporation>
|
맵핑 후: |
<Corporation>
<ForEach Department>
<ForEach Manager>
<Qualify>
<Condition occur(Department)=occur(Manager)>
<Leader>
<MapFrom Department, Manager>
|
Leader에 ForEach가 필요합니다.
Department와 Manager는 각각 하나씩 제공합니다.
두 ForEach의 순서는 임의적입니다.
다대일 별도 반복 소스 리프(b)
소스: |
Family
Father
GradeF[]
Mother
GradeM[]
Child
GradeC[]
|
대상: |
Person
Grade[]
|
맵핑 전: |
<Person>
|
맵핑 후: |
<Person>
<ForEach GradeF>
<ForEach GradeM>
<ForEach GradeC>
<Qualify>
<Condition occur(GradeF)=occur(GradeM)=occur(GradeC)>
<Grade>
<MapFrom GradeF, GradeM, GradeC>
|
앞의 예와 유사함, Condition의 추가 동등 테스트
다대일 별도 반복 소스 상위
소스: |
School
Boy[]
MarkB
Girl[]
MarkG
|
대상: |
Education
Student[]
Performance
|
맵핑 전: |
<Education>
|
맵핑 후: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
|
대상의 각 반복 레벨(Student)에 대해 선택된 각 소스에서
소스 반복의 한 레벨(Boy 및 Girl)과 일치시키십시오. 선택된 각 소스의
ForEach 요소를 중첩시키십시오.
ForEach와 Qualify-Condition이 이미 있음
소스: |
School
Boy[]
MarkB
AgeB
Girl[]
MarkG
AgeG
|
대상: |
Education
Student[]
Performance
Age
|
맵핑 전: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
<Age>
<MapFrom>
|
맵핑 후: |
<Education>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
<Age>
<MapFrom AgeB, AgeG>
|
ForEach, Qualify, Condition은 이미 있으므로 삽입할
필요가 없습니다. <ForEach Y> nests <ForEach X>가 이미
있으므로 <ForEach X> nests <ForEach Y>를 삽입할 필요가 없습니다.
Condition Y=X 가 이미 있으므로 Condition X=Y를 삽입할 필요가 없습니다.
다대일 다중 레벨 반복 대칭 구조
소스: |
School
Boy[]
GradeB[]
MarkB
Girl[]
GradeG[]
MarkG
|
대상: |
Education
Student[]
Year[]
Performance
|
맵핑 전: |
<Education>
|
맵핑 후: |
<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>
|
대상의 각 반복 레벨에 대해 선택된 각 소스에서 소스
반복의 한 레벨과 일치시키십시오. GradeB와 GradeG는 Year와 일치하고
Boy와 Girl은 Student와 일치합니다.
다대일 공용 반복 소스
소스: |
Company
Department[]
Manager
Size
|
대상: |
Corporation
Group[]
|
맵핑 전: |
<Corporation>
|
맵핑 후: |
<Corporation>
<ForEach Department>
<Group>
<MapFrom Manager, Size>
|
각 소스(Manager 및 Size)부터 시작해서 공용 반복
소스(Department)에서 끝납니다.
다중 레벨 반복 대칭 구조
소스: |
School
Grade[]
Boy[]
MarkB
Girl[]
MarkG
|
대상: |
Education
Year[]
Student[]
Performance
|
맵핑 전: |
<Education>
|
맵핑 후: |
<Education>
<ForEach Grade>
<Year>
<ForEach Boy>
<ForEach Girl>
<Qualify>
<Condition occur(Boy)=occur(Girl)>
<Student>
<Performance>
<MapFrom MarkB, MarkG>
|
Boy와 Girl은 Student와 일치하고 Grade는 Year와 일치합니다.
다중 레벨 반복 비대칭(a)
소스: |
Company
Division[]
Team[]
Employee
University
Department[]
Professor
|
대상: |
Organization
Person[]
|
맵핑 전: |
<organization>
|
맵핑 후: |
<Organization>
<ForEach Division>
<Qualify>
<Condition occur(Division)=1>
<ForEach Team>
<ForEach Department>
<Qualify>
<Condition occur(Team)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
여분의 소스 반복에 ForEach-Qualify-Condition을 사용하십시오.
다중 레벨 반복 비대칭(b)
소스: |
Company
Division[]
Team[]
Employee
University
Department[]
Professor
|
대상: |
Organization
Location[]
Person[]
|
맵핑 전: |
<Organization>
|
맵핑 후: |
<Organization>
<ForEach Division>
<Location>
<ForEach Team>
<ForEach Department>
<Qualify>
<Condition occur(Team)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
누락된 소스 반복에는 ForEach가 없습니다.
다중 레벨 반복 비대칭(c)
소스: |
Company
Division[]
Employee
University
Department[]
Professor
|
대상: |
Organization
Location[]
Person[]
|
맵핑 전: |
<Organization>
|
맵핑 후: |
<Organization>
<Location>
<ForEach Division>
<ForEach Department>
<Qualify>
<Condition occur(Division)=occur(Department)>
<Person>
<MapFrom Employee, Professor>
|
누락된 소스 반복에는 ForEach가 없습니다.
중첩된 반복의 다른 레벨 내에 있는 문제의 여러 소스
소스: |
S
S1[]
S2
S3[]
S4
|
대상: |
T
T1[]
T2[]
|
맵핑 전: |
<T>
|
맵핑 후: |
<T>
<ForEach S1> (caused by matching S1-T1 for mapping S2-T2)
<T1>
<ForEach S1> (caused by matching S1-T2 for mapping S2-T2)
<ForEach S3> (caused by matching S3-T2 for mapping S4-T2)
<Qualify>
<Condition occur(S1)=occur(S3)>
<T2>
<MapFrom S2,S4>
|
표현식이 같은 두 개의 ForEach 표현식을 중첩시킬 수 없음,
occur(S1)가 확실하지 않습니다.
중첩된 반복의 다른 레벨 내에 있는 문제의 여러 소스(a)
소스: |
S
S1[]
S2[]
S3[]
S4
S5[]
|
대상: |
T
T1[]
|
맵핑 전: |
<T>
|
맵핑 후: |
<T>
<ForEach S1> (caused by unmatching S for mapping S3-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S2> (caused by unmatching S2 for mapping S3-T1)
<Qualify>
<Condition occur(S2)=1>
<ForEach S1> (caused by unmatched S1 for mapping S5-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S3> (caused by matching S3-T1 for mapping S3-T1)
<ForEach S5> (caused by matching S5-T1 for mapping S5-T1)
<Qualify>
<Condition occur(S3)=occur(S5)>
<T1>
<MapFrom S3,S5>
|
표현식이 같은 두 개의 ForEach 표현식을 중첩시킬 수 없음,
occur(S1)가 확실하지 않습니다.
중첩된 반복의 다른 레벨 내에 있는 문제의 여러 소스(b)
소스: |
S
S1[]
S2
S3[]
S4
|
대상: |
T
T1[]
|
맵핑 전: |
<T>
|
맵핑 후: |
<T>
<ForEach S1> (caused by unmatched S1 for mapping S4-T1)
<Qualify>
<Condition occur(S1)=1>
<ForEach S1> (caused by matching S1-T1 for mapping S2-T1)
<ForEach S3> (caused by matching S3-T1 for mapping S4-T1)
<Qualify>
<Condition occur(S1)=occur(S3)>
<T1>
<MapFrom S2,S4>
|