
Step 1- Create an integration flow with required flow steps.
def Message compareUniqueIdFromPayloads(Message message)
{
//Body
def body = message.getBody(java.lang.String) as String;
def payload2 = new XmlParser().parse(message.getBody(java.io.Reader));
def properties = message.getProperties();
def system1Payload = message.getProperties().get("System1Payload")
def payload1 = new XmlParser().parseText(system1Payload)
def payload1Node = "";
def payload2Node = "";
def nodeMatching = "false";
for(int i=0;i<payload1.Category.size();i++)
{
payload1Node = payload1.Category[i].CategoryCode.text();
nodeMatching = "false";
for(int j=0;j<payload2.row.size();j++)
{
payload2Node = payload2.row[j].WHCode.text();
if(payload1Node == payload2Node)
{
nodeMatching = "true";
}
else
{
nodeMatching = "false";
}
}
if(nodeMatching == "true")
{
//Add new node "RecordType" with "ExistingRecord" in the payload1
def newNode = "<RecordType>" + "ExistingRecord" + "</RecordType>";
def newNodeValue = new XmlSlurper().parseText(newNode);
payload1.Category[i].appendNode("RecordType", [:], "ExistingRecord");
}
else
{
//Add new node "RecordType" with "NewRecord" in the payload1
def newNode = "<RecordType>" + "NewRecord" + "</RecordType>";
def newNodeValue = new XmlSlurper().parseText(newNode);
payload1.Category[i].appendNode("RecordType", [:], "NewRecord");
}
}
//Final message body creation
def result = (String)XmlUtil.serialize(payload1)
result = result.replaceAll("\n *?\n", "\n").trim()
message.setBody(result)
return message;
}
def Message compareRemainingFields(Message message)
{
//Body
def body = message.getBody(java.lang.String) as String;
def payload1 = new XmlSlurper().parseText(body);
def properties = message.getProperties();
def system2Payload = properties.get("System2Payload");
def payload2 = new XmlSlurper().parseText(system2Payload);
def categoryCode = "";
def categoryName = "";
def categoryCurrency = "";
def whCode = "";
def whName = "";
def whCurrency = "";
def nodeMatching = "false";
def createNewRecord = "false";
def recordtype = "";
//Loop through payload1
for(int i=0; i<payload1.Category.size();i++)
{
categoryCode = payload1.Category[i].CategoryCode.text();
categoryName = payload1.Category[i].CategoryName.text();
categoryCurrency = payload1.Category[i].CategoryCurrency.text();
recordtype = payload1.Category[i].RecordType.text();
nodeMatching = "false";
if(recordtype == "ExistingRecord")
{
//Loop through payload2
for(int j=0; j<payload2.row.size();j++)
{
whCode = payload2.row[j].WHCode.text();
//Compare unique id field between 2 payloads
if(whCode==categoryCode)
{
whName = payload2.row[j].WHName.text();
whCurrency = payload2.row[j].WHCurrency.text();
if((categoryName == whName) && (categoryCurrency == whCurrency))
{
//Add new node "RecordAction" with "IgnoreRecord" in the payload1
def newNode = "<RecordAction>" + "IgnoreRecord" + "</RecordAction>";
def newNodeValue = new XmlSlurper().parseText(newNode);
payload1.Category[i].appendNode(newNodeValue);
}
else
{
//Add new node "RecordAction" with "UpdateRecord" in the payload1
def newNode = "<RecordAction>" + "UpdateRecord" + "</RecordAction>";
def newNodeValue = new XmlSlurper().parseText(newNode);
payload1.Category[i].appendNode(newNodeValue);
}
break;
}
}
}
else
{
//Add new node "RecordAction" with "CreateRecord" in the payload1
def newNode = "<RecordAction>" + "CreateRecord" + "</RecordAction>";
def newNodeValue = new XmlSlurper().parseText(newNode);
payload1.Category[i].appendNode(newNodeValue);
}
}
//Final message body creation
def result = (String)XmlUtil.serialize(payload1)
result = result.replaceAll("\n *?\n", "\n").trim()
message.setBody(result)
return message;
}
def Message removeUnwantedNodes(Message message)
{
def body = message.getBody(java.lang.String) as String;
def properties = message.getProperties();
def pfile = new XmlParser().parseText(body);
//Loop through nodes to identify unwanted record and delete it from final payload
pfile.Category.each{categoryNode ->
if(categoryNode.RecordAction.text() == "IgnoreRecord")
{
pfile.remove(categoryNode);
}
}
//Final message body creation
message.setBody(XmlUtil.serialize(pfile));
return message;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
9 | |
7 | |
6 | |
6 | |
6 | |
4 | |
4 | |
4 | |
4 |