Muchos a uno

Elemento hoja origen de repetición diferenciado Muchos a uno (a)

Nota: Los grupos modelo de estos ejemplos no se repiten.
Origen:
Company
  Department[]
  Manager[]
Destino:
Corporation
  Leader[]
Antes de la correlación:
<Corporation>
Después de la correlación:
<Corporation>
  <ForEach Department>
    <ForEach Manager>
      <Qualify>
        <Condition occur(Department)=occur(Manager)>
          <Leader>
            <MapFrom Department, Manager>

Leader necesita un ForEach. Department y Manager ofrecen uno cada uno. El orden de los dos ForEaches es arbitrario.

Elemento hoja origen de repetición diferenciado Muchos a uno (b)

Origen:
 Family
  Father
    GradeF[]
  Mother
    GradeM[]
  Child
    GradeC[]
Destino:
Person
  Grade[]
Antes de la correlación:
<Person>
Después de la correlación:
<Person>
  <ForEach GradeF>
    <ForEach GradeM>
      <ForEach GradeC>
        <Qualify>
          <Condition occur(GradeF)=occur(GradeM)=occur(GradeC)>
            <Grade>
              <MapFrom GradeF, GradeM, GradeC>

Similar al ejemplo anterior, además de prueba de igualdad en Condition.

Ascendiente origen de repetición diferenciado Muchos a uno

Origen:
 School
  Boy[]
    MarkB
  Girl[]
    MarkG
Destino:
 Education
  Student[]
    Performance
Antes de la correlación:
<Education>
Después de la correlación:
 <Education>
  <ForEach Boy>
    <ForEach Girl>
      <Qualify>
        <Condition occur(Boy)=occur(Girl)>
          <Student>
            <Performance>
              <MapFrom MarkB, MarkG>

Para cada nivel de repetición (Student) del destino, emparejar con un nivel de repetición de origen (Boy y Girl) en cada origen seleccionado. Anidar elementos ForEach de cada origen seleccionado

ForEach y Qualify-Condition ya existen

Origen:
 School
  Boy[]
    MarkB
    AgeB
  Girl[]
    MarkG
    AgeG
Destino:
 Education
  Student[]
    Performance
    Age
Antes de la correlación:
 <Education>
  <ForEach Boy>
    <ForEach Girl>
      <Qualify>
        <Condition occur(Boy)=occur(Girl)>
          <Student>
            <Performance>
              <MapFrom MarkB, MarkG>
            <Age>
              <MapFrom>
Después de la correlación:
 <Education>
  <ForEach Boy>
    <ForEach Girl>
      <Qualify>
        <Condition occur(Boy)=occur(Girl)>
          <Student>
            <Performance>
              <MapFrom MarkB, MarkG>
            <Age>
              <MapFrom AgeB, AgeG>

No necesita insertar ForEach, Qualify, Condition porque ya están allí. No necesita insertar un <ForEach X> que anida <ForEach Y> si ya hay un <ForEach Y> que anida <ForEach X>. No necesita insertar Condition X=Y si ya hay Condition Y=X.

Estructuras simétricas de repetición de varios niveles Muchos a uno

Origen:
 School
  Boy[]
    GradeB[]
      MarkB
  Girl[]
    GradeG[]
      MarkG
Destino:
 Education
  Student[]
    Year[]
      Performance
Antes de la correlación:
<Education>
Después de la correlación:
 <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 nivel de repetición del destino, emparejar con un nivel de repetición de origen en cada origen seleccionado. GradeB y GradeG se emparejan con Year; Boy y Girl se emparejan con Student.

Origen de repetición común Muchos a uno

Origen:
 Company
  Department[]
    Manager
    Size
Destino:
 Corporation
  Group[]
Antes de la correlación:
<Corporation>
Después de la correlación:
 <Corporation>
  <ForEach Department>
    <Group>
      <MapFrom Manager, Size>

Desplácese hacia arriba desde cada origen (Manager y Size) y acabe con el origen de repetición común (Department).

Estructuras simétricas de repetición de varios niveles

Origen:
 School
  Grade[]
    Boy[]
      MarkB
    Girl[]
      MarkG
Destino:
 Education
  Year[]
    Student[]
      Performance
Antes de la correlación:
<Education>
Después de la correlación:
 <Education>
  <ForEach Grade>
    <Year>
      <ForEach Boy>
        <ForEach Girl>
           <Qualify>
              <Condition occur(Boy)=occur(Girl)>
                <Student>
                  <Performance>
                    <MapFrom MarkB, MarkG>

Boy y Girl se emparejan con Student; Grade se empareja con Year.

Repetición de varios niveles asimétrica (a)

Origen:
 Company
  Division[]
    Team[]
      Employee
University
  Department[]
    Professor
Destino:
 Organization
  Person[]
Antes de la correlación:
<organization>
Después de la correlación:
 <Organization>
  <ForEach Division>
    <Qualify>
      <Condition occur(Division)=1>
        <ForEach Team>
          <ForEach Department>
             <Qualify>
                <Condition occur(Team)=occur(Department)>
                  <Person>
                    <MapFrom Employee, Professor>

Para la repetición de origen sobrante, utilizar ForEach-Qualify-Condition.

Repetición de varios niveles asimétrica (b)

Origen:
Company
  Division[]
    Team[]
      Employee
University
  Department[]
    Professor
Destino:
Organization
  Location[]
    Person[]
Antes de la correlación:
<Organization>
Después de la correlación:
 <Organization>
  <ForEach Division>
    <Location>
      <ForEach Team>
        <ForEach Department>
          <Qualify>
            <Condition occur(Team)=occur(Department)>
              <Person>
                <MapFrom Employee, Professor>

Para la repetición de origen que falta, sin ForEach.

Repetición de varios niveles asimétrica (c)

Origen:
Company
  Division[]
    Employee
University
  Department[]
    Professor
Destino:
 Organization
  Location[]
    Person[]
Antes de la correlación:
<Organization>
Después de la correlación:
 <Organization>
  <Location>
    <ForEach Division>
      <ForEach Department>
        <Qualify>
          <Condition occur(Division)=occur(Department)>
            <Person>
              <MapFrom Employee, Professor>

Para la repetición de origen que falta, sin ForEach.

Varios orígenes problemáticos dentro de distintos niveles en repeticiones anidadas

Origen:
 S
  S1[]
    S2
    S3[]
      S4
Destino:
 T
  T1[]
    T2[]
Antes de la correlación:
<T>
Después de la correlación:
 <T>
  <ForEach S1> (causado por S1-T1 coincidente para la correlación S2-T2)
    <T1>
      <ForEach S1> (causado por S1-T2 coincidente para la correlación S2-T2)
        <ForEach S3> (causado por S3-T2 coincidente para la correlación S4-T2)
          <Qualify>
            <Condition occur(S1)=occur(S3)>
              <T2>
                <MapFrom S2,S4>

Dos expresiones ForEach con la misma expresión no deberían estar anidadas, occur(S1) es ambiguo.

Varios orígenes problemáticos dentro de distintos niveles en repeticiones anidadas (a)

Origen:
 S
  S1[]
    S2[]
      S3[]
    S4
      S5[]
Destino:
 T
  T1[]
Antes de la correlación:
<T>
Después de la correlación:
 <T>
  <ForEach S1> (causado por S no coincidente para la correlación S3-T1)
    <Qualify>
      <Condition occur(S1)=1>
        <ForEach S2> (causado por S2 no coincidente para la correlación S3-T1)
          <Qualify>
            <Condition occur(S2)=1>
              <ForEach S1> (causeado por S1 no coincidente para la correlación S5-T1)
                <Qualify>
                  <Condition occur(S1)=1>
                    <ForEach S3> (causado por S3-T1 no coincidente para la correlación S3-T1)
                      <ForEach S5> (causado por S5-T1 coincidente para la correlación S5-T1)
                        <Qualify>
                          <Condition occur(S3)=occur(S5)>
                            <T1>
                              <MapFrom S3,S5>

Dos expresiones ForEach con la misma expresión no deberían estar anidadas, occur(S1) es ambiguo.

Varios orígenes problemáticos dentro de distintos niveles en repeticiones anidadas (b)

Origen:
 S 
  S1[]
   S2
   S3[]
      S4
Destino:
 T
  T1[]
Antes de la correlación:
<T>
Después de la correlación:
 <T>
   <ForEach S1> (causeado por S1 no coincidente para la correlación S4-T1)
      <Qualify>
         <Condition occur(S1)=1>
            <ForEach S1> (causado por S1-T1 coincidente para la correlación S2-T1)
               <ForEach S3> (causado por S3-T1 no coincidente para la correlación S4-T1)
                  <Qualify>
                     <Condition occur(S1)=occur(S3)>
                        <T1>
                           <MapFrom S2,S4>
Tareas relacionadas
Desarrollo de correlaciones de mensajes
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2005 Última actualización: 11/11/2005
ar25235_3_