Este tópico explica como lidar com mensagens que pertencem ao domínio MIME e que são analisadas pelo analisador MIME. Utilize essas informações em conjunto com as informações de Manipulando o Conteúdo do Corpo da Mensagem.
A árvore lógica pode ser manipulada utilizando ESQL antes da transmissão da mensagem para outros nós no fluxo de mensagens. Um fluxo de mensagens também pode criar uma árvore de domínio MIME utilizando ESQL. Quando uma mensagem de domínio MIME alcança um nó de saída, o analisador MIME é chamado para reconstruir o fluxo de bits para a árvore lógica.
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;
Duas destas abordagens criam a mesma estrutura em árvore. A primeira abordagem é recomendada pois o conhecimento explícito da estrutura em árvore que o analisador BLOB requer não está construída no fluxo.
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; -- Verifique se a mensagem MIME é multipartes ou não. 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'; -- Esta é uma maneira artificial de criar alguns dados BLOB. DECLARE newBlob BLOB '4f6e652074776f2074687265650d0a'; CREATE LASTCHILD OF P.Data DOMAIN('BLOB') PARSE(newBlob); END IF;
SET OutputRoot.Properties.ContentType = 'text/plain';Não configure o valor de Content-Type diretamente na árvore MIME nem nas árvores HTTP. Isso pode fazer com que o valor seja ignorado ou utilizado de forma inconsistente.