====== WhileLoop für RuleSets ====== Für Mapping-RuleSets ist eine neue Funktionalität durch die Eigenschaft //RuleSetBehaviour// verfügbar:\\ Der Wert der steht standardmäßig auf //AutoSelect//.\\ \\ Dadurch verhält sich die Funktion analog eines logischen Ausdrucks, d.h. der //Ausdruck im RuleSet-Selection-Feld// wird ausgewertet, ergibt dieser //'true'//, werden die Rules innerhalb des RuleSets ausgeführt.\\ Die Eigenschaft //RuleSetBehaviour// lässt sich jedoch auf //WhileLoop// umstellen. Dies hat zur Folge, dass die Selektion dieses RuleSets immer wieder aufs neue ausgeführt wird, bis der im //Selection-Feld// enthaltene Ausdruck //'false'// ergibt.\\ Somit hat die RuleSet ein Schleifen-Charakter, analog (for i=0; i<5; i++) . === Beispiel: === Die WhileLoop-Einstellung der //RuleSetBehaviour-Eigenschaft// wird für folgende Aufgabestellung benötigt:\\ In einer //EDIFACT-DESADV-Nachricht// sollen für die //RF-IT// zusätzlich eigene //SerienNummern// übertragen werden.\\ UNA:+.?' UNB+UNOC:3+4035811991014:14+4035811991021:14+080315:1421+17' UNH+18+DESADV:D:96A:UN:EAN005' BGM+351+2013+9' DTM+137:20080215:102' DTM+11:20080214:102' RFF+VN:1001' NAD+SU+4035811991014::9' NAD+BY+4035811991021::9' NAD+UC+4035811991021::9' NAD+DP+4035811991021::9' CPS+1' PAC+1' PCI+33E' LIN+1++4035811000037:EN' QTY+12:13:PCE' PCI+34E' GIN+EU+4035811000037' GIN+BN+103+104+105+106+107' GIN+BN+108+109+110+111+112' GIN+BN+113+114+115' LIN+2++4035811000044:EN' QTY+12:18:PCE' PCI+34E' GIN+EU+4035811000044' GIN+BN+203+204+205+206+207' GIN+BN+208+209+210+211+212' GIN+BN+213+214+215+216+217' GIN+BN+218+219+220' CNT+2:2' CNT+1:31' UNT+31+18' UNZ+1+17' Die **GIN** Segmente enthalten ganze Bereiche an zusätzlichen Seriennummern.\\ Diese müssen durch einen zweistufigen Transformationsprozess //(2 Mappings, EDIFACT.DESADV--> Retail.Middleware.DespatchAdvice --> RF-IT-Inhouse-DespatchAdvice)// in Positionen mit jeweils einem Artikel //(1 x TargetPosition per Stück)// für das RF-IT Inhouse-Target-Objekt zerlegt werden, damit diese durch die RF-IT weiter verarbeitet werden können.\\ Das Entflechten des Seriennummern-Bereichs in einzelne Seriennummern übernimmt das erste Mapping, das die EDIFACT-DESADV in eine MiddleWare-eBiss.Retail.DespatchAdvice mappt.\\ Die Zerlegung in Positionen mit genau einem Stück übernimmt das zweite Mapping, welches die Daten der //eBiss.Retail.DespatchAdvice-MiddleWare// in das //RF-IT-Inhouse-Format// mappt.\\ Der RF-IT-Inhouse-Source-Input (2. Mapping Source-Objekt, eBiss.Retail.DespatchAdvice-MiddleWare)\\ Daher muss das //RF-IT-Inhouse-DespatchAdvice-Mapping// die //WhileLoop-Einstellung// der//RuleSetBehaviour-Eigenschaft// für die RuleSet //'s_qty_cnt//'aufweisen. So lange die Variable //$cnt// < als die Anzahl (@Quantity-Feld) ist, wird im //Target-Objekt// des //RF-IT-Inhouse-DespatchAdvice-Mappings eine neue Position mit der //Menge 1// erzeugt. Ist das Ergebnis dieser Abfrage //'false'//, wird diese Schleife nicht mehr durchlaufen, es wird keine Position im Target-Objekt erzeugt. Das bedeutet also, dass die //Target-Positions// per Stück //getriggert// werden. Das Mapping hierfür sieht folgendermaßen aus:\\ {{images:mappingfunktionen_allg_RulesetsMitWhileLoops.jpg}}