Dynamics AX 2009 podporuje Team Foundation Server pro ukládání zdrojového kódu, ale nenabízí sama o sobě žádnou možnost, jak vytvořit vazbu mezi vytvářenou změnovou sadou (changesetem) a nějakou pracovní položkou. Protože je taková vazba extrémně užitečná a vytvářet ji ručně je zbytečně pracné a náchylné k chybám, vytvořil jsem pro AX2009 řešení v podobě AX TFS WorkItems. Ale jak je na tom Dynamics AX 2012?
Microsoft díkybohu určité řešení v AX2012 naimplementoval – sice minimalistické, ale vcelku funkční.
Dialog Check in má nyní záložku Work items, kde je možné vybrat pracovní položky, ke kterým bude změnová sada připojena. Je také možné zvolit akci v poli Check-in action – například prohlásit úkol za vyřešený, čímž se odpovídající Task v TFS uvede do stavu Uzavřeno. (Konkrétní chování záleží na definici procesu v TFS.)
V dialogu jsou automaticky zobrazeny pracovní položky přiřazené aktuálnímu uživateli (v rámci týmového projektu nastaveného ve Version control parameters). Dodatečné položky lze přidat zadáním Work Item ID to pole nad gridem a stisknutím Add work item.
Pak už stačí jen zaškrtnout Include u jedné nebo více položek, případně změnit Check-in action, a potvrdit tlačítkem OK.
Předpokládám, že většině týmů nebude výchozí seznam zobrazených položek zcela vyhovovat. Zejména proto, že se zobrazují i uzavřené položky, ale také třeba nechcete vidět všechny typy položek nebo chcete dotaz omezit na položky v aktuální iteraci.
Taková modifikace je naštěstí velmi snadná. Seznam pracovních položek je získán pomocí Work Item Query Language (WIQL) dotazu, který je uložen v makru v ClassDeclaration třídy SysVersionControlWorkItemProviderTFS. Vypadá takto:
SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.AssignedTo] = @me ORDER BY [System.Id]
Po přidání podmínek omezující výsledek jen na aktivní úkoly bude dotaz vypadat následovně:
SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.AssignedTo] = @me AND [System.WorkItemType] = 'Task' AND [System.State] = 'Active' ORDER BY [System.Id]
Pokud potřebujete zobrazit více polí (třeba typ pracovní položky nebo status), nelze to vyřešit tak snadno. Check-in dialog totiž používá dočasnou tabulku (SysVersionControlTmpWorkItems), takže dostupná pole jsou pevně dána. Je samozřejmě možné do tabulky další pole přidat a zajistit jejich plnění, ale už to není tak prostý úkol jako změna fitrování.
Plány s AX TFS WorkItems
AX TFS WorkItems má několik vlastností, které standardní řešení v AX2012 postrádá – zejména možnost spouštět WIQL dotazy uložené v TFS a schopnost zobrazit proměnný počet polí (dle definice dotazu). Nicméně to nepovažuji za nějakou nezbytně nutnou funkcionalitu, takže alespoň v tuto chvíli neuvažuji o implementaci těchto vlastností v Dynamics AX 2012.