Biztalk navigation
Generellt | Orkestrering | Mappning | XSLT | Scheman | Pipelines | Annat - Bindings, Adapters..

Tips & Tricks
Sätt ett min-occurs 0 element utan värde (alltså så det elementet inte skapas)
Logical String functoid med tom sträng som parameter

Sätt en global variabel i en Script Functoid
public System.Collections.Generic.List duplicateList = new System.Collections.Generic.List();
public bool IsDuplicate(string personnummer, string sekretessValue)
{
        ....
}

Sätt ett värde till flera outputs utan att den räknar om varje gång (t.ex. kör Script Functoid funktion för varje nod)
public string GeneratedValue = null;

public string Indentifier()
{
    if (GeneratedValue == null)
    {
        // Calculate GeneratedValue
    }
    return GeneratedValue;
}

XPath
Hämta texten från ett element
/ExternalRef/text()


Ta bort NS0 prefix
I detta fallet så löste jag det när jag mappade om ett meddelande, alltså samma schema på båda sidor i Biztalk.
Custom mappning
    1. Replace " XML för att lättare se upplägget
6. Gör en Pretty Print på innehållet i båda filerna (Ctrl + Alt + Shift + B)
7. I början av filerna finns ett element som heter **SrcTree**
Jag kommer kalla den första BTM-filen för **Before-fil** och den andra filen för **After-fil**
Idén här är att göra så att **Before-filen** blir den slutgiltiga som du sedan ska använda
1. Kopiera och ersätt värde av **SrcTree** från **After-filen** till **Before-filen**
2. Nästa del är lite lurigare, nu behövs början av Xpaths i filen ersättas med hur dem ser ut efter att input-schemat har uppdaterats.
3. Mitt schema börjar med följande Xpath:
**/*[local-name()='<Schema>']/*[local-name()='Root']**
1. Detta ska ersättas på alla ställen med följande värde:
**/*[local-name()='<Schema>']/*[local-name()='Root']/*[local-name()='InputMessagePart_0']/*[local-name()='Root']**
Det viktiga här är att det blir på LinkFrom attributen i filen, alltså så Xpath för utgående schema inte också ersätts.
Script Functoid
Generellt kodexempel
public string ChangeDecimalSeparator(string inputDate)
{
      return inputDate.Replace(",",".");
}
Ta bort whitespace från sträng
return Regex.Replace(input, @"\\s+", "");

En funktion behöver bara definieras en gång i en Script Functoid för att sedan kunna användas i en annan

Inline XSLT Call Template exempel
<xsl:template name="MyXsltConcatTemplate">
    <xsl:param name="param1"/>
    <xsl:param name="param2"/>
    <xsl:element name="field">
        <xsl:value-of select="$param1"/>
        <xsl:value-of select="$param2"/>
    </xsl:element>
</xsl:template>

Inline XSLT
<Record field="value">
</Record>