
<root>
<activities>
<assetType>COURSE</assetType>
<engagementMetricQualifier>TOTAL</engagementMetricQualifier>
<engagementType>COMPLETIONS</engagementType>
<engagementValue>1</engagementValue>
<firstEngagedAt>1627639372554</firstEngagedAt>
<lastEngagedAt>1627641467848</lastEngagedAt>
<contentProviderName>LinkedIn</contentProviderName>
<contentUrn>urn:li:XXXXXXX5</contentUrn>
<name>Learning Design Thinking</name>
<email>FATxxxxxxx.om</email>
</activities>
<activities>
<assetType>COURSE</assetType>
<engagementMetricQualifier>TOTAL</engagementMetricQualifier>
<engagementType>COMPLETIONS</engagementType>
<engagementValue>1</engagementValue>
<firstEngagedAt>1627888342882</firstEngagedAt>
<lastEngagedAt>1627898079120</lastEngagedAt>
<contentProviderName>LinkedIn</contentProviderName>
<contentUrn>urn:lixxxxxxxxxxx9</contentUrn>
<name>Scrum: The Basics</name>
<email>Axxxxxxxxxxxx.COM</email>
</activities>
</root>
<User>
<User>
<userId>Mxxxx9</userId>
<email>Fxxxxxxxxxx.COM</email>
</User>
<User>
<userId>Mxxxxxx6</userId>
<email>Axxxxxxxxxxxxxxxx.COM</email>
</User>
</User>
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.XmlUtil;
import groovy.util.*;
def Message processData(Message message) {
def body = message.getBody(java.lang.String);
def xml = new XmlParser().parseText(body)
def ns = new groovy.xml.Namespace('http://sap.com/xi/XI/SplitAndMerge')
//for fast search let map PERNR value to a node that contains it
def pernrMap=xml[ns.Message2][0].User[0].children().collectEntries{ [it.email.text(), it] }
//itearte msg1 -> find entry in pernrMap -> add node
xml[ns.Message1][0].root[0].activities.each{activities->
def emp = activities.email[0]
def pernr = pernrMap[emp.text()]
if(pernr) activities.appendNode('userId', pernr.userId.text() )
}
message.setBody(XmlUtil.serialize(xml));
return message
}
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:multimap="http://sap.com/xi/XI/SplitAndMerge"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:key name = "email-search" match = "//User" use = "email"/>
<xsl:template match="/">
<xsl:variable name="User">
<xsl:for-each select="//User/User">
<emails>
<email><xsl:copy-of select="email"/></email>
</emails>
</xsl:for-each>
</xsl:variable>
<root>
<xsl:for-each select="multimap:Messages/multimap:Message1/root/activities">
<activities>
<assetType>
<xsl:value-of select="assetType"/>
</assetType>
<email>
<xsl:value-of select="email"/>
</email>
<xsl:if test="email = exsl:node-set($User)/emails/email">
<xsl:for-each select = "key('email-search', email)">
<userId><xsl:value-of select = "userId"/></userId>
</xsl:for-each>
</xsl:if>
</activities>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
20 | |
18 | |
11 | |
9 | |
7 | |
7 | |
5 | |
5 | |
5 | |
5 |