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 derRuleSetBehaviour-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:
mappingfunktionen_allg_rulesetsmitwhileloops.jpg