Este tema explica cómo tratar con mensajes que pertenecen al dominio MIME y que el analizador MIME analiza. Utilice esta información junto con la información del apartado Manipular el contenido del cuerpo del mensaje.
Se puede manipular el árbol lógico utilizando ESQL antes de que se pase el mensaje a otros nodos del flujo de mensajes. Un flujo de mensajes también puede crear un árbol de dominio MIME utilizando ESQL. Cuando un mensaje de dominio MIME alcanza un nodo de salida, se llama al analizador MIME para que vuelva a crear la corriente de bits desde el árbol lógico.
CREATE FIELD OutputRoot.MIME TYPE Name; DECLARE M REFERENCE TO OutputRoot.MIME; CREATE LASTCHILD OF M TYPE Name NAME 'Data';
DECLARE partData BLOB ASBITSTREAM(InputRoot.XML); CREATE LASTCHILD OF M.Data DOMAIN('BLOB') PARSE(partData);
DECLARE partData BLOB ASBITSTREAM(InputRoot.XML); CREATE LASTCHILD OF M.Data DOMAIN('BLOB') NAME 'BLOB'; CREATE LASTCHILD OF M.Data.BLOB NAME 'BLOB' VALUE partData;
Estas dos propuestas crean la misma estructura de árbol. Se recomienda utilizar la primera propuesta porque en el flujo no se incorpora ninguna descripción explícita de la estructura de árbol necesaria para el analizador BLOB.
DECLARE part1Data BLOB ASBITSTREAM(InputRoot.XML.part1); DECLARE part2Data BLOB ASBITSTREAM(InputRoot.XML.part2); SET OutputRoot.Properties.ContentType = 'multipart/related; boundary=myBoundary'; CREATE FIELD OutputRoot.MIME TYPE Name; DECLARE M REFERENCE TO OutputRoot.MIME; CREATE LASTCHILD OF M TYPE Name NAME 'Parts'; CREATE LASTCHILD OF M.Parts TYPE Name NAME 'Part'; DECLARE P1 REFERENCE TO M.Parts.Part[1]; CREATE FIELD P1."Content-Type" TYPE NameValue VALUE 'text/plain'; CREATE FIELD P1."Content-Id" TYPE NameValue VALUE 'part one'; CREATE LASTCHILD OF P1 TYPE Name NAME 'Data'; CREATE LASTCHILD OF P1.Data DOMAIN('BLOB') PARSE(part1Data); CREATE LASTCHILD OF M.Parts TYPE Name NAME 'Part'; DECLARE P2 REFERENCE TO M.Parts.Part[2]; CREATE FIELD P2."Content-Type" TYPE NameValue VALUE 'text/plain'; CREATE FIELD P2."Content-Id" TYPE NameValue VALUE 'part two'; CREATE LASTCHILD OF P2 TYPE Name NAME 'Data'; CREATE LASTCHILD OF P2.Data DOMAIN('BLOB') PARSE(part2Data);
SET OutputRoot = InputRoot; -- Comprobar si el mensaje MIME tiene varias partes o no. IF LOWER(InputProperties.ContentType) LIKE 'multipart/%' THEN CREATE LASTCHILD OF OutputRoot.MIME.Parts NAME 'Part'; DECLARE P REFERENCE TO OutputRoot.MIME.Parts.[<]; CREATE FIELD P."Content-Type" TYPE NameValue VALUE 'text/xml'; CREATE FIELD P."Content-ID" TYPE NameValue VALUE 'new part'; CREATE LASTCHILD OF P TYPE Name NAME 'Data'; -- Éste es un procedimiento artificial para crear datos BLOB. DECLARE newBlob BLOB '4f6e652074776f2074687265650d0a'; CREATE LASTCHILD OF P.Data DOMAIN('BLOB') PARSE(newBlob); END IF;
SET OutputRoot.Properties.ContentType = 'text/plain';No establezca el valor de Content-Type directamente en el árbol MIME o los árboles HTTP. Esto puede hacer que el valor se ignore o se utilice de forma incoherente.