Vypadá to, že modely v Dynamics AX 2012 nepodporují přesuny mezi vrstvami. Kód nebývá přesouván do jiné vrstvy každý den, ale není to zas tak výjimečná situace. Máme pořád naše staré nástroje jako export a import souborů .xpo, ale modely tento proces jen komplikují, místo aby ho zjednodušovaly (protože is musíte poradit s vlastnostmi modelu jako jsou jméno nebo verze).
Ukáži zde jednoduché řešení, ačkoli není vhodné pro všechny týmy a všechny situace. Pokud znáte lepší způsob, dejte mi prosím vědět.
Předpokládejme, že máte v USR vrstvě model nazvaný “Move”, který obsahuje nějaké objekty, a rádi byste to celé přesunuli do vrstvy ISV. Dá se toho dosáhnout následujícím postupem:
- Přidejte model do řízení verzí v TFS
Musíte vytvořit podadresář v repozitáři, pak kliknout na Version Control > Add model to version control v development workspace (vývojářská plocha?) a nastavit ID modelu a podadresář repozitáře. - Odinstalujte model
Můžete použít tento Powershellový příkaz:Uninstall-AXModel -Model Move
(Move je jméno modelu) - Restartujte AOS
Následující přílaz restartuje všechny lokální AOS:Restart-Service aos*
- Změňte vrstvu v manifestu modelu
Běžte do Source Control Exploreru ve Visual Studiu, ujistěte se, že používáte stejný workspace jako Dynamics AX, a nalezněte adresář s modelem “Move”. Pak Otevřte Model.xml, najděte element layer a změňte hodnotu z Usr na Isv.
Nemusíte tuto změnu vkládat do správy verzí, pokud nejde o trvalou změnu. (To dává smysl pokud jen instalujete model do jiné vrstvy v jiné aplikaci, ale nepřesouváte ho.) - Sesynchronizujte AX s TFS
Spusťe AX development workspace a z menu Version Control zvolte Synchronize. Zaškrtněte Force a vyberte složku pro synchronizaci:
A to je vše – model a jeho definice, stejně jako všechny jeho objekty, jsou ve vrstvě ISV.
Máme-li být zcela přesní, model jsme nepřesunuli. Model jsem smazali a když AX nastartovala, načetla (námi změněný) soubor manifestu, na jeho základě vytvořila nový model a synchronizace přidala všechny objekty do tohoto nového modelu.