Muitos para um

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>
Tarefas relacionadas
Desenvolvendo Mapeamentos de Mensagens
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2005 Última Atualização: 04/11/2005
ar25235_3_