Author |
Message
|
r4lukk4 |
Posted: Thu Jan 11, 2007 5:03 pm Post subject: Convert XML message to CWF |
|
|
Novice
Joined: 29 Nov 2006 Posts: 20
|
Hi,
I´m trying to convert a XML message to CWF, because I need to send to the output queue, a text message.
I defined the CWF message into a Compute_Node, and there I try to convert the input format message to the new one, but I´m sending a empty message to the output queue.
My code is:
CREATE COMPUTE MODULE "Arquivo_Petição_Verificação_dÃvida"
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyEntireMessage();
RETURN TRUE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
DECLARE integracao CHARACTER;
IF (InputRoot.MQMD.ReplyToQ = 'I00.SBL.TXT.Q02') THEN
SET integracao = TRUE;
ELSE
SET integracao = FALSE;
END IF;
--SET OutputRoot = InputRoot;
DECLARE MSG, M, N, O, P, Q CHARACTER;
DECLARE Pattern CHARACTER 'yyyyMMddHHmmss';
DECLARE I, J, K, L INTEGER;
DECLARE space CHARACTER;
DECLARE evento CHARACTER;
DECLARE id_evento CHARACTER;
--Espaços em branco para preencher o campo correspondente ao CPF no SGC
DECLARE bl_cliente CHARACTER;
--Espaços em branco para preencher o campo correspondente ao Cliente no SGC
DECLARE bl_cpf CHARACTER;
SET K = 1;
SET L = 79;
SET space = ' ';
WHILE K < L DO
SET space = space || ' ';
SET K = K + 1;
END WHILE;
--<Evento de chamada por tipo consulta>
SET I = 1;
SET J = CARDINALITY (InputRoot.*[]);
WHILE I < J DO
IF ((InputRoot.*[I] LIKE '%CEGTipoConsulta%')= TRUE) THEN
SET M = SUBSTRING(InputRoot.*[I] FROM (LENGTH('[CEGTipoConsulta] = "') - 1));
SET M = LEFT(M, POSITION('"' IN M));
IF (M = '01') THEN
SET evento = '00010';
SET id_evento = '01';
SET bl_cpf = ' ';
ELSE
SET evento = '00011';
SET id_evento = '02';
SET bl_cliente = ' ';
END IF;
END IF;
SET I = I + 1;
END WHILE;
--</Evento de chamada por tipo consulta>
--<Mapeamento cabeçalho adaptador SGC>
IF (integracao = TRUE) THEN
SET MSG = '34';
ELSE
SET MSG = '01';
END IF;
SET MSG = MSG ||'SGC 0000100100 '|| space;
--</Mapeamento cabeçalho adaptador SGC>
--<Mapeamento cabeçalho mensagem>
SET MSG = MSG ||'01SBLSGCSBLSGC07 '|| evento ||'CEG '|| CAST(CURRENT_TIMESTAMP AS CHARACTER FORMAT Pattern);
--</Mapeamento cabeçalho mensagem>
--<Mapeamento campos da query>
SET MSG = MSG || '02' || id_evento;
SET I = 1;
SET J = CARDINALITY (InputRoot.*[]);
WHILE I < J DO
SET M = InputRoot.*[I];
IF ((M LIKE '%CEGCliente%')= TRUE) THEN
SET K = POSITION('CEGCliente' IN InputRoot.*[I]);
SET M = SUBSTRING(M FROM (LENGTH('[CEGCliente] = "') - 1));
SET N = LEFT(M, POSITION('"' IN M)); --Cliente ou CPF
ELSEIF ((M LIKE '%CEGTipoMercado%')= TRUE) THEN
SET K = POSITION('CEGTipoMercado' IN InputRoot.*[I]);
SET M = SUBSTRING(M FROM (LENGTH('[CEGTipoMercado] = "') - 1));
SET O = LEFT(M, POSITION('"' IN M)); --Tipo Mercado
ELSEIF ((M LIKE '%CEGLogin%')= TRUE) THEN
SET K = POSITION('CEGLogin' IN InputRoot.*[I]);
SET M = SUBSTRING(M FROM (LENGTH('[CEGLogin] = "') - 1));
SET P = LEFT(M, POSITION('"' IN M)); --Login usuario
ELSEIF ((M LIKE '%CEGTipoConsulta%')= TRUE) THEN
SET K = POSITION('CEGTipoConsulta' IN InputRoot.*[I]);
SET M = SUBSTRING(M FROM (LENGTH('[CEGTipoConsulta] = "') - 1));
SET Q = LEFT(M, POSITION('"' IN M)); --Tipo Consulta
END IF;
SET I = I + 1;
END WHILE;
--<Consulta por cliente ou por CPF>
IF (id_evento = '01') THEN
SET MSG = MSG || N || bl_cpf;
ELSEIF (id_evento = '02') THEN
SET MSG = MSG || bl_cliente || N;
END IF;
--</Consulta por cliente ou por CPF>
SET MSG = MSG || O || P || Q;
--</Mapeamento campos da query>
SET OutputRoot.Properties.MessageSet = 'PS5FJ5G002001';
SET OutputRoot.Properties.MessageType = 'VERIFICACAO_DIVIDA';
SET OutputRoot.Properties.MessageFormat = 'CWF';
SET OutputRoot.MQMD.ReplyToQMgr = 'D00';
SET OutputRoot.MQMD.ReplyToQ = 'D00.SGC.TXT.Q00';
SET OutputRoot.MRM = MSG;
RETURN;
END;
END MODULE;
Could you help me with this fatal error, please?
Thanks. _________________ R4lukk4 |
|
Back to top |
|
 |
r4lukk4 |
Posted: Thu Jan 11, 2007 6:01 pm Post subject: |
|
|
Novice
Joined: 29 Nov 2006 Posts: 20
|
Hi again!
I changed my code to try to resolve my error, and now I have the following error "RM Dictionary Not Found". I think that the problem is in the new message definition.
Can anyone help me, please?
Thanks a lot. _________________ R4lukk4 |
|
Back to top |
|
 |
gregop |
Posted: Thu Jan 11, 2007 11:56 pm Post subject: |
|
|
Voyager
Joined: 24 Nov 2006 Posts: 81
|
You need to add your message set to a bar file and deploy to your Execution Group |
|
Back to top |
|
 |
r4lukk4 |
Posted: Fri Jan 12, 2007 3:59 am Post subject: |
|
|
Novice
Joined: 29 Nov 2006 Posts: 20
|
Thanks gregop,
I'll test it  _________________ R4lukk4 |
|
Back to top |
|
 |
r4lukk4 |
Posted: Fri Jan 12, 2007 5:04 am Post subject: |
|
|
Novice
Joined: 29 Nov 2006 Posts: 20
|
It isn´t run...  _________________ R4lukk4 |
|
Back to top |
|
 |
gregop |
Posted: Fri Jan 12, 2007 5:51 am Post subject: |
|
|
Voyager
Joined: 24 Nov 2006 Posts: 81
|
What do mean ? Still getting 'RM Dictionary not found' error ? |
|
Back to top |
|
 |
r4lukk4 |
Posted: Fri Jan 12, 2007 6:47 am Post subject: |
|
|
Novice
Joined: 29 Nov 2006 Posts: 20
|
Yes, I have the same error... _________________ R4lukk4 |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Jan 12, 2007 6:49 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Then your message set didn't deploy properly.
Or you're not using the right information to tell Broker to use your message set. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
|