Resumen
Diferentes estrategias para diferentes entornos
- Las acciones siguientes comparten la misma estrategia en el manejo de
repeticiones: Correlacionar desde origen, Crear nueva subcorrelación,
Llamar a subcorrelación, Llamar a rutina ESQL.
- La acción Acumular maneja las repeticiones a su manera.
- La acción Entrar expresión es independiente de la repetibilidad.
Manejar repetición para correlación de uno a uno en las
acciones Correlacionar desde origen, Crear nueva subcorrelación, Llamar a
subcorrelación, Llamar a rutina ESQL
- Al determinar la repetibilidad, un elemento (o atributo), junto con
uno o más elementos sequence/choice/all/group xsd que lo contengan
(o un contenedor de sequence/choice/all/group), forman un nivel.
- La creación de una correlación es un proceso de tres pasos: expandir,
establecer la expresión MapFrom, añadir ForEach/If/Condition. A
continuación se describe el algoritmo detallado para el último paso,
insertar ForEach y demás.
- Empezando desde el origen y destino de correlación seleccionado, desde dentro hacia afuera,
empareje un nivel de origen de repetición con un nivel de
destino de repetición.
- Para cada nivel coincidente de repetición en el origen y el destino:
- Si este nivel de destino no tienen ningún elemento
sequence/choice/all/group de repetición, cree una ForEachStatement
que contenga el nivel de estructura de destino.
- La expresión de la sentencia ForEach es la referencia correlacionable
para el nivel de origen de repetición.
- Si este nivel de destino está contenido en un elemento
sequence/choice/all/group de repetición, cree una ForEachStatement
que contenga todas las estructuras de sequence/choice/all/group.
- La expresión de la sentencia ForEach es la referencia correlacionable
para el nivel de origen de repetición.
- Si ya hay una ForEach con una expresión esperada que contiene
los miembros sequence/choice/all/group esperados, no cree otra.
- Si ya hay una ForEach con una expresión diferente pero que contiene
los miembros sequence/choice/all/group esperados, cree la ForEach
necesaria como un hijo de la ForEach existente. La ForEach interna
contiene un bloque If-Condition que incluye todo el contenido del
elemento sequence/choice/all/group.
- La expresión para la Condition anterior es que la aparición de la
expresión en la ForEach externa sea igual a la aparición de la
expresión en la ForEach interna.
- Ignore los niveles no coincidentes de repetición en el destino.
- Para cada nivel no coincidente de repetición en el origen:
- Cree una ForEachStatement que contenga una IfStatement, que
contenga una ConditionStatement, que contenga el nivel de estructura de
destino.
- La expresión de la sentencia ForEach es la referencia
correlacionable para el nivel de origen de repetición.
- Si ya hay una ForEach para el nivel de origen de repetición, no
cree otra.
- La expresión para Condition es
occurrence(this_level_of_repeating_source)=1.
- Si ya hay una Condition para la primera aparición del nivel de origen
de repetición, no cree otra Condition.
- Si ya hay una Qualify pero no hay ninguna condición esperada, cree
otra Condition en la Qualify.
- Las sentencias de destino de base de datos relacional deben colocarse
dentro de elementos ForEach.
- Cuando un origen incluye niveles de repetición anidados,
el ForEach para cada nivel está anidado.
- Un conjunto de resultados de selección de origen de base de datos
relacional es conceptualmente una repetición.
Sin embargo, una correlación desde un origen de base de datos puede
requerir la ampliación del ámbito de la sentencia select. Para simplificar las
cosas, la herramienta no inserta ningún ForEach como resultado de
correlacionar desde un origen de base de datos.
- Al insertar una SelectStatement en el modelo de sentencia,
las herramientas de correlación siempre crean una Select con una ForEach
dentro de la misma para realizar un bucle por el conjunto de
resultados.
Manejar repetición para correlación de uno a muchos en la
acción Correlacionar desde origen
- Utilice la estrategia "uno a uno" muchas veces, una vez para cada
destino.
- No intente ninguna optimización entre las muchas correlaciones.
Manejar repetición para correlación de muchos a uno en las
acciones Correlacionar desde origen, Crear nueva subcorrelación, Llamar a
subcorrelación, Llamar a rutina ESQL
- Utilice la estrategia "uno a uno" entre el origen específico y el destino.
- Para cada nivel de repetición de origen, anide elementos ForEach
invocados por cada origen. Califique por instancia para que los elementos
ForEach anidados sólo seleccionen la instancia en el mismo índice.