středa 17. března 2010

Intelligent Data Management Framework

Na PartnerSource se objevila pre-release verze velmi zajímavé aplikace. Intelligent Data Management Framework for Microsoft Dynamics AX (IDMF) slouží ke správě databáze Dynamics AX, zejména archivaci a odstraňování historických záznamů, samozřejmě při zachování konzistence databáze. Taková funkcionalita byla zákazníky dlouhodobě (a oprávněně) žádána, protože z hlediska výkonu je vhodné udržovat co nejmenší transakční databázi. IDMF podporuje AX ve verzích 3 - 5 a SQL Server 2005/2008 (pravděpodobně kvůli Integration Services). Před archivací/vyčištěním dat je nutné definovat, které tabulky spolu souvisí a mají být zpracovány společně (to je úloha kritická pro zachování konzistence databáze). IDMF dohledává tyto informace pomocí křížových referencí a díky tomu stačí zadat „kořenovou“ tabulku a související tabulky jsou přidány automaticky (manuální změny jsou možné). Na základě tohoto stromu (Purge Object/Archive Object v originální terminologii) je pak prováděna vlastní archivace/vyčištění dat. Dalším krokem je definice filtru dat - například plně zaúčtované záznamy za loňský rok. Takto definovanou operaci je možné spustit jednorázově, nebo přímo v IDMF nastavit opakované spouštění. Z dalších schopností IDMF bych zmínil:
  • Předpřipravené objekty - není tedy nutné (a ani doporučené) začínat od nuly.
  • Analýza DB - informace o velikosti databáze, fragmentaci indexů atd., ale i např. počtu ukončených skladových objednávek. Lze také sledovat změny v čase.
  • Restore - archivované záznamy je v případě potřeby možné vrátit zpět do produkční databáze.
Sice jsem neměl zatím možnost IDMF vyzkoušet prakticky, ale vypadá rozhodně velmi užitečně. Pokud vás také zaujal, doporučuji prostudovat Installation Guide a Administration Guide.

čtvrtek 4. března 2010

PowerShell - informace o AX aplikaci

Snažíte se psát skripty pro manipulaci s AX a nechce se vám udržovat informace o jménech aplikací, cestách k adresářům a podobně? Mně se tedy nechce a tak jsem si řekl, že bych mohl všechno zjistit automatizovaně jen na základě .axc souboru. Výstup mého skriptu vypadá následovně:
AppLocalPath       : C:\Program Files\Microsoft Dynamics AX\50\Application\Appl\JmenoAplikace
AosName            : JmenoAOS
AosNumber          : 03
AosServiceInstance : System.ServiceProcess.ServiceController
AosPort            : 2714
AosComputerName    : JmenoPocitaceSAos.domena
AppUncPath         : \\JmenoPocitaceSAos\C$\Program Files\(...)\Appl\JmenoAplikace
Základní informace o AOS zjistím se zadaného .axc souboru, instanci služby pomocí Get-Service a cestu k aplikačnímu adresáři z registrů počítače, kde je nainstalované AOS. Z toho také plyne, že je třeba mít nakonfigurovaný PowerShell remoting. Podrobnosti zde nebudu rozepisovat, zájemci si pročtou kód a nezájemci ušetří čas :-). Skript stahujte zde.

pondělí 1. března 2010

SysQueryRangeUtil

Třída SysQueryRangeUtil obsahuje několik užitečných metod, pomocí kterých lze vytvářet hodnoty filtrů (nad Query objekty). Jsou to například metody currentEmployeeId() nebo dayRange(). Ve všech případech jde o statické metody vracející řetezec a řada z nich má nepovinné parametry (pro určení rozsahů apod.). Tyto metody lze použít při vytváření Query v X++ kódu, třeba takto:
queryBuildRange.value(SysQueryRangeUtil::day());
To by nebylo nic zajímavého, vtip je v tom, že je lze použít i při filtrování dotazu pomocí dialogu (na formuláři, v RunBase třídách a podobně): a také v Queries v AOT: Jediná finta je v tom, že jejich volání musí být uzavřeno do závorek. Do třídy SysQueryRangeUtil lze také přidat další metody - ať už kvůli dodatečné funkcionalitě (např. weekRange()), nebo pro přidání aliasů metod (např. me() jako alias currentUserId()).

Hotfix Impact Analysis

Microsoft zveřejnil nový nástroj pro Dynamics AX, který pomáhá identifikovat, jaké mohou být dopady změněných objektů. Hlavní částí je formulář Impact Analysis (viz obrázek), který v horní části zobrazuje zvolené objekty a v dolní části křížové reference pro označený objekt. Formulář lze spustit z kontextového menu (Add-Ins > Impact analysis) pro jeden nebo více AOT objektů, pro jeden nebo více projektů, nebo z instalátoru hotfixu. Podívejme se na funkce, které lze z tohoto formuláře vyvolat:
  • Compare - porovná různé vrstvy objektu. Narozdíl od "normálního" porovnání zobrazí dva panely vedle sebe (takže lze zároveň zobrazit např. porovnání SYP×Old SYP a SYP×VAR), naopak nejsou přístupné volby jako zobrazení čísel řádků).
  • Load - zde se nachází funkce pro přidání objektů do analýzy - lze vybrat objekt z AOT nebo z projektu (a přetáhnout myší), přidat celé .xpo nebo dříve uložený stav.
  • Remove - odebere označený objekt z analýzy
  • Save - uloží seznam objektů (vybraných pro analýzu) do XML. Tento soubor lze pak nahrát funkcí Load > Load Impact Analysis State.
  • Export - umožňuje exportovat seznam objektů nebo křížových referencí do XML.
Tlačítka v dolní části zpřístupňují standardní funkce pro křížové reference. Jak jsem již zmínil, analýzu dopadu je možné spustit přímo z instalátoru hotfixu: V následujícím kroku instalátoru je zobrazena stručná informace o zasažených objektech a je možné pomocí tlačítka přejít do výše popsaného formuláře v AX. Po analýze dopadu je možné pokračovat v instalaci hotfixu. Nástroj Impact Analysis je k dispozici jako samostatný hotfix (tak jsem ho získal já) a od dnešního dne by měl údajně být součástí veškerých nových hotfixů. Další informace: KB974255 (Impact Analysis feature for Dynamics AX 2009)