Tuesday 15 January 2019

Aggreegation - ParallelCall


If we are using queue prefixes then we can use the below command to create the Configurable service:


mqsicreateconfigurableservice IB9NODE -c Aggregation -o myAggregationService 
-n queuePrefix,timeoutSeconds -v AGGRPOC,60 

1.myAggregationService :  This is name where we need to provide for AggregateControl and AggregateReply Node property 

2. AGGRPOC : This is the queue name where we need to create the new system queue .

SYSTEM.BROKER.AGGR.AGGRPOC.CONTROL
SYSTEM.BROKER.AGGR.AGGRPOC.REPLY
SYSTEM.BROKER.AGGR.AGGRPOC.REQUEST
SYSTEM.BROKER.AGGR.AGGRPOC.UNKNOWN
SYSTEM.BROKER.AGGR.AGGRPOC.TIMEOUT



1.Aggregation_FanOut_MF.msgflow

Before  or AFter AggregateControlNode :

SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
CREATE LASTCHILD OF Environment NAME 'Variables';
DECLARE rEnv REFERENCE TO Environment.Variables;

SET rEnv.HTTPRequestIdentifier = InputLocalEnvironment.Destination.HTTP.RequestIdentifier;
SET rEnv.transactionId = InputRoot.XMLNSC.*:membershipRequest.*:eieHeader.*:transactionID;

SET OutputRoot.HTTPInputHeader = NULL;
SET OutputRoot.HTTPRequestHeader = NULL;
SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot.MQMD = NULL;
SET OutputRoot.Properties = InputRoot.Properties;

CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION;
SET OutputRoot.MQMD.Format = 'MQRFH2 ';
CREATE NEXTSIBLING OF OutputRoot.MQMD DOMAIN 'MQRFH2';
SET OutputRoot.MQRFH2.(MQRFH2.Field)Version = 2;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = 'MQSTR ';
SET OutputRoot.MQRFH2.psc.HTTPRequestIdentifier = rEnv.HTTPRequestIdentifier;
SET OutputRoot.MQRFH2.psc.TransactionIdentifier = rEnv.transactionId;
SET OutputRoot.MQRFH2.psc.inputmsg = InputRoot.XMLNSC.*:membershipRequest;

RETURN TRUE;


--Backend Call Flow

1st Compute node before WS call


CREATE FIELD Environment.Variables;
DECLARE rEnv REFERENCE TO Environment.Variables;
SET rEnv.Properties            = InputRoot.Properties;
    SET rEnv.MQMD                  = InputRoot.MQMD;
    SET rEnv.MQRFH2                = InputRoot.MQRFH2;
    SET rEnv.HTTPRequestIdentifier = InputRoot.MQRFH2.psc.HTTPRequestIdentifier;

    SET rEnv.TransactionIdentifier = InputRoot.MQRFH2.psc.TransactionIdentifier;
SET rEnv.inputmsg    = InputRoot.MQRFH2.psc.inputmsg;
SET OutputRoot.Properties = InputProperties;
-- SET OutputLocalEnvironment = InputLocalEnvironment;

SET OutputRoot.HTTPRequestHeader.Host = 'abc.xyz.com';
SET OutputRoot.HTTPRequestHeader."Accept-Encoding" = 'gzip';
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'application/xml';


SET OutputRoot.XMLNSC = NULL;

                 Construct the request message as per requirement


2nd ComputeNode After WS call :

DECLARE rEnv REFERENCE TO Environment.Variables;
SET OutputLocalEnvironment = InputLocalEnvironment;


SET OutputRoot.MQMD = rEnv.MQMD;
SET OutputRoot.MQMD.CorrelId = rEnv.MQMD.MsgId;
SET OutputRoot.MQRFH2 = rEnv.MQRFH2;
SET OutputRoot.MQRFH2.psc.HTTPRequestIdentifier = rEnv.HTTPRequestIdentifier;
SET OutputRoot.MQRFH2.psc.TransactionIdentifier = rEnv.TransactionIdentifier;
SET OutputRoot.MQRFH2.psc.inputmsg = rEnv.inputmsg;
--SET OutputRoot.MQRFH2.psc.Accesstoken = Environment.Variable.AccessToken;
SET OutputRoot.XMLNSC = InputRoot.XMLNSC;

RETURN TRUE;

AggregateFanIn Flow :

After AggreegateReply an Before HTTPreply Node:


                SET OutputRoot.Properties = InputProperties;

SET OutputRoot.Properties.ReplyProtocol = '';
SET OutputRoot.Properties.Encoding = 546;
SET OutputRoot.Properties.CodedCharSetId = 1208;
SET OutputRoot.Properties.Transactional = false;
SET OutputRoot.Properties.Persistence = false;
SET OutputRoot.Properties.ReplyProtocol = 'SOAP-HTTP';

SET OutputLocalEnvironment = InputLocalEnvironment;

SET Environment.HTTPRequestIdentifier  =  InputRoot.ComIbmAggregateReplyBody.Request1.MQRFH2.psc.HTTPRequestIdentifier;

SET OutputRoot.Properties.ReplyIdentifier = CAST(Environment.HTTPRequestIdentifier AS BLOB);
SET OutputRoot.Properties.ContentType = 'application/xml';
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier = CAST(Environment.HTTPRequestIdentifier AS BLOB);

SET OutputRoot.XMLNSC.FinalResponse.IMI = InputRoot.ComIbmAggregateReplyBody.Request1.XMLNSC.*:GetIndividualDetailsRes;

SET OutputRoot.XMLNSC.FinalResponse.CommunicationPreference = InputRoot.ComIbmAggregateReplyBody.Request2.XMLNSC;





No comments:

Post a Comment