úterý 9. února 2010

AX6: modely

Na konci minulého roku zveřejnil Michael Freurgaard Pontoppidan (mfp) několik příspěvků o nové funkci, chystané do Dynamics AX 6, zvané Modely (Models). Protože tyto modely významně ovlivní způsob nasazování AX aplikací, rozhodl jsem se sepsat stručné shrnutí v češtině. A protože nemám připravovanou verzi AX k dispozici, vypůjčil jsem si obrázky s Michaelovým svolením přímo z jeho blogu. Vezměte prosím na vědomí, že verze 6 je stále ve vývoji, a také že některé podstatné informace nebyly publikovány. Na definitivní podobu si prostě musíme ješte počkat. Co je to ten model? Model je určité seskupení aplikačních objektů uvnitř vrstvy a v jedné vrstvě jich může existovat libovolné množství. Model usnadňuje organizaci objektů a je ho možné exportovat, instalovat, odinstalovat atd. Protože AX verze 6 již nebude obsahovat AOD soubory, budou modely hlavním prostředkem distribuce zdrojového kódu. Práce s modely v prostředí AX velmi připomíná práci s vrstvami; mimo AX zajištuje vetšinu funkcí samostatná aplikace AxUtil. Model je implementován jako řízené sestavení (managed assembly). Vytvoření modelu Model je možné vytvořit pomocí příkazu:
AxUtil create /model:"My Model" /Layer:USR
Všimněte si, že model je vytvářen v konkrétní vrstvě. Bylo by také možné určit databázi, vůči které se příkaz provede. Výběr modelu Obdobně jako vrstvu lze učit také výchozí model. Model ale může být změněn, narozdíl od vrstvy, i za běhu aplikace. Zvolit lze samozřejmě jen model patřící do aktuální vrstvy. Aktivní model je zobrazen ve stavovém panelu (a je ho odtud možné i změnit). Vývoj v modelu Modifikace objektů v AOT jsou automaticky přiřazeny k právě aktivnímu modelu. V jakém modelu je modifikace umístěna lze zobrazit přímo v AOT (pro každý element je zobrazen pouze model z nejvyšší vrstvy): V kontextovém menu přibyde také možnost přesunout element do jiného modelu. Export Modely je možné exportovat do souboru, což umožnuje přenést jen část vrstvy, aniž by bylo nutné sáhnout po exportu do .xpo. Díky modelům lze také lépe členit vyvíjenou aplikaci nebo dokonce vyvíjet několik (dostatečně izolovaných) rešení v jednom AX prostředí. Export se provádí opět pomocí AxUtil:
AxUtil export /model:"My Model" /file:MyModel.axmodel
Velkou výhodou exportovaného modelu je manifest. Manifest je obsažen přímo v souboru s modelem a obsahuje informace jako je jméno modelu, jeho verze, zdrojová vrstva a podobně. Manifest lze zobrazit:
AxUtil list /model:"My Model"
a případně změnit:
AxUtil edit /model:"MyModel" /manifest:Version="2.0.0.0",Publisher="MFP",Description="My first model"
Exportovaný model lze také opatřit elektronickým podpisem. Podpis pak může využít například zákazník k ověření, zda nebyl soubor během přenosu mofikován. Import Modely uložené do souboru je pochopitelně možné importovat do AX:
AxUtil import /file:MyModel.axmodel
Do jedné vrstvy lze importovat více modelů, například řešení od dvou různých dodavatelů, což je dnes vcelku nepříjemný úkol (a noční můra při upgradech). Při takovém importu se mohou vyskytnout dva hlavní problémy:
  • Elementy mají stejné ID – MFP bez dalších podrobností tvrdí, že by tento problém měl být v AX 6 eliminován. Zatím je známo jen to, že rozsah ID bude řádově zvětšen.
  • Elementy mají stejný název (typicky: obě řešení mění nějaký standardní objekt) – tomu samozřejmě nelze zabránit (ačkoli často lze zásahy do standardního kódu minimalizovat vhodným návrhem aplikace). Vývojáři AX 6 chtějí snížit množství těchto konfliktů jemnějším členěním některých typů objektů (dnes je například „jednotkou modifikace“ celý objekt typu Menu a pokud dvě řešení přidají menu item do stejného menu, dojde ke konfliktu).
Importu lze říct, jak se má zachovat v případě, že narazí na konflikt. K dispozici jsou tyto tři možnosti:
  • Import modelu je zrušen.
  • Původní objekty jsou přepsány. Protože by následné odinstalování tohoto modelu mohlo zanechat aplikaci v nekonzistentím stavu, budou spolu s tímto modelem odinstalovány i modely, jejichž objekty byly importem přepsány.
  • Model je naimportován a konfliktní objekty jsou umístěny do nového modelu ve vyšší vrstvě (např. BUS→BUP), kde je možné konflikty vyřešit.
Mazání modelu K odebrání modelu opět poslouží AxUtil:
AxUtil delete /model:"My Model"
Závěr Mfp uvádí o něco více podrobností, takže v případě zájmu navštivte jeho blog. Nicméně dokud není AX 6 hotova, stejně není nic definivní. Až bude zveřejněna, určitě se na modely a jejich implementaci podívám podrobněji.

Žádné komentáře:

Okomentovat