Workflow 2013 – Čtení termínů spravovaných metadat
- Posted by Ondřej Soukup
- On 27.1.2016
- 0
Nedávno jsem se setkal s potřebou čtení hodnot (názvy termínů) sloupců spravovaných metadat v rámci možností workflow 2013. Překvapilo mě, kolik článků k této problematice najdete na internetu – od nápadů využití kalkulovaných polí až po oznámení o neřešitelnosti problému.
Pokud pominu fakt, že v rámci workflow 2013 máme akci volání webové služby, tak i ne-programátor si s tímto problémem umí poradit za pomocí běžných akcí.
Nejprve je nutné pochopit, proč by vůbec čtení těchto hodnot měl být problém. Názvy jednotlivých termínů totiž neobsahují pouze samotný název, ale skládají se z názvu a jedinečného identifikátoru sady termínu, kde jsou uloženy.
Např.: LETITIA|a24e0286-430c-469f-9c74-379c06863577
Název termínu: LETITIA
ID sady termínu: a24e0286-430c-469f-9c74-379c06863577
Pokud tedy chceme pracovat pouze se samotným názvem termínu, je nutné z načtené hodnoty odstranit jedinečný identifikátor včetně oddělovače |.
Jak jsem slíbil, jde to, ale nepůjde o úplně banální operaci. Je nutné si uvědomit následující fakta:
- Nikdy neznáme přesný počet znaků samotného názvu termínu.
- Z konce řetězce hodnot nelze odebírat konkrétní počet znaků tak, aby nám zůstal požadovaný začátek.
- Název a jedinečný identifikátor je vždy oddělený znakem |.
A právě oddělovací znak | je odpovědí na náš problém. Pokud dokážeme projít od začátku jeden znak po druhém a ověřit, zda to není právě náš oddělovač, jsme schopni říct, kolik průběhů nám to trvalo, tedy kolik přesně znaků měl samotný název.
Jak na to?
V rámci workflow 2013 použijeme následující akce:
- Smyčka s Podmínkou (Loop with Condition)
- Extrahovat podřetězec ze začátku řetězce (Extract Substring from Start of String)
- Extrahovat podřetězec z konce řetězce (Extract Substring from End of String)
- Provést výpočet (Do Calculation)
- Nastavit proměnnou pracovního postupu (Set Workflow Variable)
- Zaznamenat do seznamu historie (Log to History List)
a proměnné:
- Počet znaků (Číslo)
- Plný název termínu (Řetězec)
- Zkrácený název termínu (Řetězec)
- Aktuální znak (Řetězec)
Samotný pracovní postup bude vypadat následovně:
- Pomocí akce „Nastavit proměnnou pracovního postupu“ uložíme hodnotu názvu termínu do proměnné „Plný název termínu„
- Založíme smyčku pomocí akce „Smyčka s Podmínkou“ a nastavíme podmínku, která zajistí opakování smyčky, dokud proměnná „Aktuální znak“ nebude obsahovat znak |.
- Ve smyčce založíme následující akce:
- Pomocí akce „Provést výpočet“ přičteme k proměnné „Počet znaků“ hodnotu 1. (Hodnota proměnné „Počet znaků“ se tedy bude navyšovat každým opakováním smyčky o 1)
- Pomocí akce „Extrahovat podřetězec ze začátku řetězce„, kde počtem znaků bude proměnná „Počet znaků„, provedeme zkopírování definovaného počtu znaků do proměnné „Zkrácený název termínu„
- Následně z této proměnné „Zkrácený název termínu“ pomocí akce „Extrahovat podřetězec z konce řetězce“ provedeme zkopírování jednoho znaku do proměnné „Aktuální znak„.
(Jakmile bude proměnná obsahovat hodnotu |, bude smyčka ukončena a proměnná „Počet znaků“ bude obsahovat počet znaků názvů termínu s oddělovačem)
- Po dokončení smyčky pomocí akce „Provést výpočet“ odečteme od proměnné „Počet znaků“ hodnotu 1.
(Aktuální počet znaku obsahuje i oddělovač – toho se chceme zbavit) - A ještě jednou provedeme akci „Extrahovat podřetězec ze začátku řetězce„, kde počtem znaků bude již upravená proměnná „Počet znaků“
(Proměnná „Zkrácený název termínu“ nyní obsahuje pouze samotný název termínu) - Pro ověření funkčnosti, pomocí akce „Zaznamenat do seznamu historie„, provedeme zápis do seznamu historie, kde si zobrazíme jak proměnnou „Plný název termínu„, tak proměnnou „Zkrácený název termínu„
Pokud máme vše správně, do historie pracovního postupu by se nám měl zapsat jak původní název termínu, tak jeho požadovaná zkrácená verze.
Souhlasím, jde o dosti krkolomný postup, ale podstatné je vědět, že to lze.
0 comments on Workflow 2013 – Čtení termínů spravovaných metadat