In questo argomento viene descritta la modalità di gestione dei messaggi che appartengono al dominio MIME e che vengono analizzati mediante il programma di analisi MIME. Utilizzare queste informazioni insieme alle informazioni contenute in Manipolazione del contenuto del messaggio.
E' possibile manipolare la struttura logica utilizzando ESQL prima che il messaggio venga trasmesso ad altri nodi nel flusso di messaggi. E' inoltre possibile creare una struttura di dominio MIME mediante un flusso di messaggi utilizzando ESQL. Quando un messaggio di dominio MIME raggiunge un nodo di output, il programma di analisi MIME viene richiamato per creare nuovamente il flusso di bit dalla struttura logica.
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;
Entrambi gli approcci consentono di creare la stessa struttura di albero. Si consiglia il primo approccio perché la conoscenza esplicita della struttura di albero richiesta dal programma di analisi BLOB non è creata nel flusso.
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; -- Check to see if the MIME message is multipart or not. 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'; -- This is an artificial way of creating some BLOB data. DECLARE newBlob BLOB '4f6e652074776f2074687265650d0a'; CREATE LASTCHILD OF P.Data DOMAIN('BLOB') PARSE(newBlob); END IF;
SET OutputRoot.Properties.ContentType = 'text/plain';Non impostare il valore Content-Type direttamente nella struttura MIME o nelle strutture HTTP. E' possibile che il valore venga ignorato o utilizzato in modo incongruente.