Thursday 17 January 2019

APP Connect V11 Software Download

https://www-01.ibm.com/marketing/iwm/iwm/web/pickUrxNew.do?source=swg-wmbfd&transactionid=451565821

Sort the Alphabet or String In ESQL

InPutMessage :

<Roots>
<Names>
<Name>Venkat</Name>
</Names>
<Names>
<Name>Krishna</Name>
</Names>
<Names>
<Name>Rathod</Name>
</Names>

</Roots>




ESQL LOGIC :



CREATE COMPUTE MODULE AlphabetSorting_MF_LogicTOSortAlphabet
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN

DECLARE Names INTEGER 1;
DECLARE  rInputMessage REFERENCE TO InputRoot.XMLNSC.Roots.Names[1];
WHILE LASTMOVE(rInputMessage)  DO
SET Environment.Variables.Names[Names] =  rInputMessage.Name;
SET Names = Names +1;
MOVE rInputMessage NEXTSIBLING REPEAT TYPE NAME;
END WHILE;

DECLARE n INTEGER CARDINALITY(Environment.Variables.Names[]);

DECLARE i INTEGER 1;
DECLARE temp CHARACTER;

WHILE i < n DO
SET i = i +1;
DECLARE j INTEGER 1;
WHILE j < n DO
SET j = j + 1;
DECLARE IntName1 CHARACTER UPPER(Environment.Variables.Names[j-1]);
DECLARE IntName2 CHARACTER UPPER(Environment.Variables.Names[j]);
DECLARE NameConstatnt INTEGER;

IF IntName1 = IntName2 THEN
SET NameConstatnt = 0;
ELSEIF  IntName1 > IntName2 THEN
SET NameConstatnt = 1;
ELSEIF IntName1 < IntName2 THEN
SET NameConstatnt = -1;
END IF;

IF (NameConstatnt > 0 ) THEN
SET temp = Environment.Variables.Names[j-1];
SET Environment.Variables.Names[j-1] = Environment.Variables.Names[j];
SET Environment.Variables.Names[j] = temp;
END IF;
END WHILE;

END WHILE;

END;


END MODULE;





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;