28.01.2009, 04:10 | #1 |
Участник
|
jinx: Microsoft Dynamics AX AIF - Dokumente, Services aber keine Operationen?
Das Application Integration Framework von Dynamics AX basiert auf Dokumenten (AxdKlassen).
Eigene Dokumente lassen sich reicht einfach per Hand oder mit Hilfe des Dokumenten-Wizardserstellen. In der Version 2009 von Dynamics AX erstellt dieser Wizard auch gleichzeitig den benötigentenService (WCF-Webservice) und andere benötigte Elemente wie (Serviceklassen und Macros). Welche Schritte hierfür benötigt werden ist zum Beispiel im MicrosoftDynamics AX Developer Center beschrieben. Ein kleines Problem entsteht, wenn das neue Dokument, genauer gesagt die Elementeoder Objekte des Dokuments, in einem Layer (zum Beispiel CUS-Layer) entwickelt wirdund später, aus welchen Gründen auch immer, alle Objekte des Dokuments (Query, AxClass, Axd Class) in einen anderen Layer (zum Beispiel VAR-Layer)verschoben werden. Nach der "Verschiebung" des neuen Dokuments in einen anderen Entwicklungslayer werdendurch die AIF-Konfigurationsmasken (siehe Maske Dienstleistungen) allerdings keineOperationen (Insert, Update, Delete, FindKey, etc.) mehr angezeigt. Auch an anderen Stellen, wie zum Beispiel der Endpunktkonfiguration, sind die entsprechendenOperationen nicht mehr auswählbar oder vorhanden. Der Grund hierfür liegt in der ClassId der Serviceklasse des neuen Dokuments. Dieser,wie auch jedem anderen Objekt, wird beim Import in einen anderen Layer eine neue IDzugewiesen, wenn nicht explizit angegeben wurde, dass der Export und Import mit ID'serfolgen soll. So kann es sein, dass die Klasse mit der ID 40001 nach dem Import ineinen anderen Layer die ID 300001 zugeordnet ist. Da wärend der Konfiguration des AIF's der AOT nach Dokumenten/Services durchsuchtwird und für jedes Dokument bzw. jeden Service ein Datensatz in der Tabelle "AifService"sowie ein bis mehrere Datensätze in der Tabelle "AifAction" erzeugt wird, welche alleeine Referenz auf die ClassId der Serviceklasse enthalten, kommt es jetzt zu dem genanntenProblem. Der Id 40001 ist nun keine Klasse oder noch schlimmer eine andere Klasse zugewiesen.Auch eine "Aktualisierung" dieser Datensätze über die Aktualisierungsfunktion, welcheauf der Maske Dienstleistungen bereit gestellt wird, führt nicht zum gewünschten Erfolg. Genau in dieser Funktion scheint sich ein kleiner Fehler eingeschlichen zu haben.Dort wird zwar eine Aktulisierung der ClassId für die Datensätze der Tabelle "AifService",aber nicht für die Datensätze der Tabelle "AifAction", durchgeführt. Um diese Verhalten zu reproduzieren, muss folgendes gemacht werden:
Entweder manuelles Löschen alle zu diesem Dokument/Service gehörigen Datensätzeder Tabelle "AifAction" oder aber man ergänzt die Methode "registerOperations" derKlasse "AifServiceGenerationManager" um ein wenig X++ Code (bei Zeile 43) welchernicht nur den Namen der Operation aktualisiert sondern auch die ClassId. Da dieser Code sehr einfach ist verzichte ich an dieser Stelle auf ein Beispiel. Leider tritt dieses Problem auch mit Dynamics AX 2009 Service Pack 1 auf. Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu) More... |
|
|
|