
Asignación de mensajes SAP CPI de estructura plana a estructura de árbol que ha sido explicada brevemente por Eaksiri Sontisirikul en el Blog. Es un gran blog. Gracias Eaksiri.
Estaba tratando de expandir el complejo de bits de carga útil y se me ocurrieron algunos pasos de mapeo adicionales.
Así que decidí compartir esa información a continuación.
Solicitar carga útil.
<CompoundEmployee>
<Person>
<Manager_ID>1000</Manager_ID>
<Manager_Name>Manager A</Manager_Name>
<Employee_ID>8000</Employee_ID>
<Employee_Name>Emp A</Employee_Name>
</Person>
<Person>
<Manager_ID>1000</Manager_ID>
<Manager_Name>Manager A</Manager_Name>
<Employee_ID>8005</Employee_ID>
<Employee_Name>Emp B</Employee_Name>
</Person>
<Person>
<Manager_ID>2000</Manager_ID>
<Manager_Name>Manager B</Manager_Name>
<Employee_ID>9000</Employee_ID>
<Employee_Name>Emp C</Employee_Name>
</Person>
<Person>
<Manager_ID>2000</Manager_ID>
<Manager_Name>Manager B</Manager_Name>
<Employee_ID>9002</Employee_ID>
<Employee_Name>Emp D</Employee_Name>
</Person>
<Person>
<Manager_ID>1000</Manager_ID>
<Manager_Name>Manager A</Manager_Name>
<Employee_ID>9003</Employee_ID>
<Employee_Name>Emp E</Employee_Name>
</Person>
<Person>
<Manager_ID>3000</Manager_ID>
<Manager_Name>Manager C</Manager_Name>
<Employee_ID>9004</Employee_ID>
<Employee_Name>Emp F</Employee_Name>
</Person>
<Person>
<Manager_ID>2000</Manager_ID>
<Manager_Name>Manager B</Manager_Name>
<Employee_ID>9005</Employee_ID>
<Employee_Name>Emp G</Employee_Name>
</Person>
</CompoundEmployee>
Carga útil de respuesta
<CompoundEmployee>
<Person>
<Manager_ID>1000</Manager_ID>
<Manager_Name>Manager A</Manager_Name>
<Employee>
<Employee_ID>8000</Employee_ID>
<Employee_Name>Emp A</Employee_Name>
</Employee>
<Employee>
<Employee_ID>8005</Employee_ID>
<Employee_Name>Emp B</Employee_Name>
</Employee>
<Employee>
<Employee_ID>9003</Employee_ID>
<Employee_Name>Emp E</Employee_Name>
</Employee>
</Person>
<Person>
<Manager_ID>2000</Manager_ID>
<Manager_Name>Manager B</Manager_Name>
<Employee>
<Employee_ID>9000</Employee_ID>
<Employee_Name>Emp C</Employee_Name>
</Employee>
<Employee>
<Employee_ID>9002</Employee_ID>
<Employee_Name>Emp D</Employee_Name>
</Employee>
<Employee>
<Employee_ID>9005</Employee_ID>
<Employee_Name>Emp G</Employee_Name>
</Employee>
</Person>
<Person>
<Manager_ID>3000</Manager_ID>
<Manager_Name>Manager C</Manager_Name>
<Employee>
<Employee_ID>9004</Employee_ID>
<Employee_Name>Emp F</Employee_Name>
</Employee>
</Person>
</CompoundEmployee>
Simulación
Para obtener este resultado, tenemos que adaptar nuestro mapeo con las funciones ‘sort’, ‘sortByKey’ en el medio.
Employee_ID, Employee_Name también necesitan pasos de mapeo adicionales.
CompuestoEmpleado
Persona
Manager_ID > removeContext
> Sort(case sensitive,asc)
> SplitByValue (value change)
> collapseContext
> Person
Gerente_ID
Manager_ID > Removecontext
> sort(case sencitive, asc)
> SplitByValue (value change)
> collapseContext
> splitByValue
> Manager_ID
Nombre del gerente
Manager_Name > removeContext
> sort (case sensitive, asc)
> splitByValue (Value change)
> collapseContext
> splitByValue (Each value )
> formatByExample(input)
> Manager_Name
Manager_ID > removeContext
> sort (case sensitive, asc)
> splitByValue (Value change)
> collapseContext
> splitByValue (Each value )
> formatByExample(pattern)
> Manager_Name
Empleado
Employee_ID > formatByExample (input)
> Employee
Manager_ID > removeContext
> sort (case sensitive, asc)
> splitByValue (Value change)
> formatByExample (pattern)
> Employee
ID de empleado
Manager_ID > removeContext
> sortByKey(key)
> splitByValue(Each value)
> Employee_ID
Emoloyee_ID > removecontext
> sortByKey(value)
> Employee_ID
Nombre de empleado
Mismo mapeo que arriba con Employee_Name
Feliz lectura.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073