ID popisků v Dynamics AX 2012

Dynamics AX řeší lokalizaci textů tak, že v kódu a metadatech používá ID popisku (label ID, např. @SYS1234) a skutečný text se pak dohledává na základě jazyka uživatele. .NET vývojáři si asi hned vzpomenou na lokalizační zdroje a satelitní sestavení a skutečně jde o velmi podobný princip.

V Dynamics AX 2012 se okolo popisků odehrálo pár změn, zejména z důvodu přesunu applikačních souborů do databáze (model store). Popisky jsou nyní umístěné v AOT (uzel Label Files), respektive v tabulce ModelElementLabel v databázi.
Nové soubory popisků se stále vytváří pomocí Label file Wizard, ale existující se importují a exportují v AOT, ne jako dříve přímou manipulací s .ald soubory v aplikačním adresáři.

Toto samo o sobě je pro hodně lidí matoucí změna a k ještě radikálnějším změnám došlo v případě popisků uložených do systému pro správu verzí.

Správa verzí

Pokud vytvoříte nový popisek, řekněme pro v souboru popisků ABC, ID nového labelu je @ABCx (např. @ABC42). Přesně tak to fungovalo i v předchozích verzích.

Pokud je ale aktivní správa verzí, je to jinak.

Při zapnuté správě verzí se nejprve vytvoří dočasné ID popisku. To vypadá nějak jako @$AA1 (myslím, že se ke každému uživatelsky definovanému souboru popisků vytváří jeden dočasný, s ID sekvenčně od AA přes AB, AC atd.).

Toto dočasné ID se nahradí “normálním” ID (tzn. ID odpovídající jménu souboru popisků) až při vložení do správy verzí. ID popisku se nahradí i v kódu a metadatech, ale pouze pokud jsou tyto objekty vloženy do správy verzí společně se souborem popisků.

K čemu jsou ta dočasná ID dobrá? Pokud má každý vývojář vlastní prostředí Dynamics AX (jak je doporučeno), je třeba nějak zajistit, že na různých místech nevznikají popisky se stejným ID. Dříve k tomu sloužil Team Server, který jednotlivá ID přiděloval centrálně. Současné řešení se při vývoji obejde bez jakékoli centrální komponenty; každé prostředí si ID popisků přiděluje po svém. Teprve při vkládání do správy verzí se přiřadí trvalá ID, což je sériová operace bez rizika ID konfliktů.

Správa verzí v editoru popisků

Příkazy správy verzí jsou přístupné z editoru popisků (Label editor). Fungují obdobně jako pro ostatní objekty (popisky jsou ve správě verzí jako staré dobré .ald soubory), jen si dejte pozor, zda je zvolen správný soubor popisků (pole Label file ID).

Potenciální problémy

A co když nevložím kód a popisky do správy verzí najednou?

Ukažme si to na příkladu:

Vytvořím dva popisky a kód, který je používá. Všimněte si, že jde o dočasná ID uvozená @$:

Vložím kód do správy verzí, ale zapomenu na soubor popisků:

Do správy verzí byl uložen kód beze změny, tedy používající dočasná ID:

Takový kód samozřejmě nebude fungovat správně v jiné instanci AX. Pokud ale kód vložím do správy verzí znovu, tentokrát i se souborem popisků:

dojde ke korektnímu nahrazení dočasných ID popisků. V infologu také dostanete zprávu, které objekty se takto změnily:

Jiný případ nastane, pokud vložíte do správy verzí popisky, ale opomenete nějaký kód. Veškerý kód, který není součástí check-inu, se pochopitelně nezmění a bude nadále používat dočasná ID. Naštěstí není problém dohledat správný trvalý popisek, protože text dočasného popisku se změní tak, že tuto informaci obsahuje:

Opravu je ale nutné provést ručně.

Ať už jsme k cíli dospěli tak či onak, můžeme nyní kód spustit se správnými popisky:

Veselé Vánoce 🙂