Ich habe eine Karte, die zwei Eingangsnachrichten nimmt, wie folgt aus:Problem mit BizTalk Multi-Input-Karte
<ns0:Root>
<InputMessagePart_0>
<root>
<Indicator>1</Indicator>
<NewValue>AAA</NewValue>
</root>
<InputMessagePart_0>
<InputMessagePart_1>
<root>
<Value>BBB</Value>
</root>
<InputMessagePart_1>
</ns0:Root>
(Viele der Knoten sind der Übersichtlichkeit halber nicht dargestellt) Die ouput Nachricht wie folgt aussieht:
<Root>
<Value>AAA</Value>
</Root>
(Es ist identisch mit InputMessagePart_1)
Wenn der Indikator 1 ist, lege ich Wert mit NewValue ersetzt werden soll. Wenn es 0 ist, möchte ich, dass Value gleich bleibt. Ich benutzte ein Skripterstellungsfunktoid mit Code wie folgt:
public string Get_Value(string indicator, string value, string newValue)
{
if(indicator == "1")
{
return newValue;
}
else
{
return value;
}
}
Ich laufe Probleme aufgrund der Tatsache, dass Wert möglicherweise nicht tatsächlich in der ursprünglichen InputMessagePart_1 auftreten - wenn dies nicht der Fall, ich will es schaffen. Mit dem obigen Skript, obwohl Indikator 1 ist, erhalte ich keine Rückgabezeichenfolge, wenn Wert nicht existiert.
Irgendwelche Vorschläge?
Aktualisiert: Ich habe einige weitere Tests durchgeführt, indem ich die if/then-Logik entfernt habe und nur eine hartcodierte Zeichenfolge aus dem Funktoid zurückgegeben habe, und ich bekomme die gleichen Ergebnisse ... es scheint, dass nur die leere Eingabe das Ganze tötet Funktionalität des Funktoids ...
Entweder das nicht funktioniert, oder ich nicht folgen, was Sie sagen ...Ich führte den Value-Knoten (aus InputMessagePart_1) in das Funktoid "Logische Existenz" und führte die Ausgabe in ein Funktoid "Wertemapping" aus. Der zweite Eingang der VM ist der Value-Knoten. Die Ausgabe der VM geht in das if/then Scripting-Funktoid (da ich noch schauen muss, ob Indicator 1 oder 0 ist), aber das Ergebnis ist das gleiche - wenn der Value-Knoten nicht existiert, kann ich nicht erstellen es und füllen Sie es mit NewValue wenn Indikator = 1. –
Nein, Indikator wird immer in der Spitze der beiden Schemas vorhanden sein - Wert ist optional im unteren Schema, aber ich werde versuchen, wie Sie vorgeschlagen ... –
Ich habe das versucht und während es auf einem vereinfachten Testschema funktioniert, schlägt es fehl, wenn ich es auf das reale Ding anwende, wahrscheinlich, weil ich es mit einem Schleifen-HIPAA-Schema zu tun habe. Ich war bereit, einen Screenshot zu posten, aber der Ruf ist nicht hoch genug ... Sobald ich das unterste Wert-Mapping mit dem Ziel verbunden habe, verliere ich es ... lösche die Verbindung und es funktioniert gut. Aber ich denke, dass ich zumindest in eine bessere Richtung gehe. –