2009-03-24 7 views
0

Ich bin auf einem mäßig komplexen Flat-File-Schema arbeiten, und ich habe eine Kurve Ball auf mich geworfen hat. Hier ist, was die Eingabe wie folgt aussieht:Biztalk Mapping Problem, Idee bitte

BCT121, C, 7.35,6.5,0.39,7216 "SMITH, TRACEY", 13456321, CLASS Schneider SHOPPE, CLASS Schneider shoppe, VAN, BC, 20090109,20090112,20090127, V 0.46, BCT121, C, 14.7,13.01,0.78,7216, "SMITH, TRACEY", 13456321, KLASSE KLEIDERHANDEL, KLASSE KLEIDERHANDEL, VAN, BC, 20090110,20090112,20090127, V, 0,91, BCT121, C , 60.27,53.34,3.2,5812 "SMITH, TRACEY", 13456321, ME-N-Eds Pizzerien, ME-N-Eds Pizzerien, VAN, BC, 20090110,20090112,20090127, V, 3,73, BCT121, C, 201.56,179.96,0,5200 "SMITH Tracey", 13.456.321, THE HOME DEPOT # 7145, THE HOME DEPOT # 7145, VAN, BC, 20090110,20090112,20090127, V, 21,6, REF. #^1^

Ok, also die Ausgabe, die der Kunde will, ist Folgendes:

1 Kopfzeile namens PRQT für jede Person/Kartennummer und eine Zeile für jede der oben genannten Transaktionen .. so für Tracy, hätten wir 1 PRQT Linie und 4 PRLN Linien, die die Transaktionsdetails sind. ., so würde es so etwas wie folgt aussehen:

PRQT, SMIT6321, 13456321, Details, Details usw.

PRLN, SMIT6321,7.35, 6.5, etc. etc.

PRLN, SMIT6321, 14,7 , 13.01, etc, etc.

PRLN, etc. etc.

PRLN, etc. etc.

ok, so mein Hauptproblem ist, wie nur ein prqt Datensatz für den Header einfügen? Ich schaue auf logische Funktoide, um zu sehen, ob es einen gibt, der nachsehen kann, ob ein existierender Wert für das Ausgabeschema erstellt wurde. Mein Primärschlüssel ist der SMIT6321 (Nachname + die letzten vier Ziffern der Kartennummer). Also im Grunde, wenn ich Codierung dies in C# würde ich eine Reihe von zuvor eingefügten PRQT Schlüsseln erstellen und während meiner Schleife, würde ich ein auf dieser nachschauen ausführen, wenn ich über kam, um zu sehen, ob ich schon einen Datensatz erstellt. Wenn ich bereits erstellt hätte, würde ich überspringen, also habe ich keinen doppelten PRQT-Datensatz erstellt. Beachten Sie, dass Datensätze chronologisch im Quelldokument erstellt werden, sodass die oben genannten Datensätze wahrscheinlich durcheinander und nicht wie das obige Beispiel sequenziell sind.

Kann mir jemand in die richtige Richtung zeigen? Welche Funktoide soll ich verwenden? Kann BizTalk Mapper so etwas handhaben? Ich bin mir sicher, dass es ... Ich muss es nur herausfinden.

Dank,

Eric

Antwort

1

Eric,

ich tun die Karte in benutzerdefinierten XSLT aussehen würde. Der Mapper (obwohl er selbst mächtig ist) wird dir nicht 100% von dem geben, was du willst, ohne durch Reifen zu gehen. Durch die Verwendung von benutzerdefiniertem XSLT können Sie vollständige Sortierungen für Felder durchführen und das Dokument ordnungsgemäß durchsuchen, um die gewünschte Ausgabe zu erhalten. Um solche Probleme in Zukunft zu lösen, gibt es ein neues Buch mit dem Titel BizTalk 2009 Pro Mapping von APress, das auf Probleme wie Ihres eingeht.

-Bryan

+0

danke für die Antwort. Ich verwendete XSLT, und obwohl es anfänglich ein wenig schwierig war, es herauszufinden, endete es ziemlich geradlinig. Am Ende habe ich einen Filter verwendet und dann (for-each) durch alle meine Datensätze geloopt, um die gewünschte Ausgabe zu erhalten. Danke noch einmal. –