Připojení pracovní položky při check-inu (AX2012)

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.)

Check-in - záložka Work itemsV 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.