Před chvílí jsem narazil na zajímavý problém. Měli jsme XML feed, který v elementu <id>
obsahoval hodnoty. Některé byly duplicitní. Tedy stejnou hodnotu id
obsahovalo více položek zboží. Cílový systém ovšem vyžadoval hodnoty id
unikátní. Bylo přitom jedno, zda se hodnoty budou od vstupních lišit.
Řešení pomocí Blending Bull
Použili jsme počítadlo. Nastavení pravidla vypadalo takhle:
Pravidlo Blending Bull :
- Typ: Najít a nahradit
- Nalézt v datovém zdroji text:
<id>([^<]*)</id>
- Nahradit za text:
<id>\g<1>-%BB_COUNTER%</id>
Výstup z Blending Bull bude tento:
<id>staré_id-1</id>
, <id>staré_id-2</id>
… kde staré_id
je vstupní hodnota ID a za pomlčku vloží číslo od jedničky výše. Číslo je jedna, poud je položka duplicitní, roste. Tento postup předpokládá, že shopitems mají ve feedu stejné pořadí. Pokud by se pořadí položek se stejným ID prohodila, prohodí se i jejich id
. V našem případě to snad vadit nebude, protože jde o malý podíl shopitems. Jak se budou data v cílovém systému chovat přesně teprve uvidíme. Nicméně naimportovat půjdou.
Uvedený zdroj je příkladem. Vy si upravte hodnoty dle svého.