Open棟梁Project - マイクロソフト系技術情報 Wiki * 目次 [#w2dce1f0] #contents *概要 [#yc9d2729] Dynamics AX開発がどんな感じか見てみました。 *要約 [#zd5ee541] AXはリッチクライアントで 他システム開発に使用することもできるが、 基本はAXカスタマイズの範囲で使用する。 -AXのクライアント・ライセンスが必要になる。~ ライセンスは人という考え方と、端末という考え方がある。 -AX担当もSAP担当とほぼ同じくカスタマイズの面倒は見ないので、~ partner側がテンプレートを拡充する場合を除き、enduser以上に詳しくなれない。 **AOT開発環境 [#r885bb77] -AOTは、VB6のようなRAD開発環境。 --業務のDBMSアプリに特化しているため、項目移送のコードは実装不要。 --画面とDBの項目の対応付けで処理できる(よくあるパターン)。 **X++ [#j7f00222] C++/CLIのUOC可能な範囲を絞ったサブセットのようなもの。 その範囲で、殆どのことは出来る模様。 **相互運用(他言語の呼出し) [#m09fb4fd] 従って、X++からの.NETやCOM、DLLのライブラリの呼出は可能。 ***COM、DLL [#t140d1ed] -これにはsystem documentation以下にある組込ライブラリを使用する。 -また、利用頻度の高いCOM、DLLののラッパーライブラリが用意されている。 --WinAPI.BringWindowToTop.etc~ https://msdn.microsoft.com/en-us/library/winapi.aspx --SysExcelXXXX~ https://msdn.microsoft.com/en-us/library/gg959078.aspx ***.NET [#bfdae46b] -C++/CLIのようにそのまま書ける。 -独自開発のアセンプリも参照設定(Reference)でサーバ側に取り込む。 **相互運用(他言語からの呼出) [#g76ab4c6] .NET言語から呼び出しのみ可能。 X++のライブラリが出来るということはないので .NETのProjectをAOTに追加し、AOTのオブジェクトを.NETのProjectにD&D。 すると、WebServicesReference的なクラスライブラリが自動生成される。 このライブラリを経由してAXのClass・Tableにアクセスする仕様。 ***バージョン管理ツール [#x2a8c032] VCS、TFS、VSSなどを選択できるが、大規模開発向けではなさそう。 ***情報量 [#z440b241] -MSDNなどは整理されてきている。 -ブログなどの情報源はまだ少ない。 **カスタマイズ [#w3f133ab] カスタマイズが案外面倒である。 下位レイヤのコードの動きを理解する必要があるため。 (詳しくは下記のレイヤーを参照) *詳細 [#d4921417] 以下、その他の詳細情報 **AXはリッチクライアントで動作する。 [#d6a93bcf] クライアントはADに属す必要がある。 AXのインストーラのインストールオプションでクライアントだけ選択する。 クライアントの機能は以下。 ・Webサービスに接続(VS、Office) ・VS連携は、VSTool(クライアント側と連携) ・SSRSからAXのデータソースに繋げる。 ・レイヤー オブジェクトを管理している。 ・青(EndUser) ・緑(Partner) ・ピンク(MS) オブジェクト指向の継承ではない。 ソースコードがコピーされる。 従って下位レイヤのコードの変更はマージが必要。 ・AOT ・データディクショナリ 以下を定義する。 ・テーブル、ヴュー ・必須入力→必須入力チェックとなるもよう。 ・チェック処理もテーブルのメソッドに実装する。 この場合、既定のメソッドをオーバーライドする。 ・データ型 ・プリミティブ型 ・BaseEnums(基本列挙方) ・拡張データ型(ドメイン的な) ・マップ 売り買い:数量?単価=金額 一つ実装すれば、色々な所で使える。 ・Class <-- Form <-- MenuItem ・Class X++のビジネスロジック ・Form 画面(datasource、method、designを定義) ・画面とデータを紐付けるだけ(項目移送は書かない)。 ・画面の項目はデザイナでコントロールに下に フィールドを置くとその様に画面に出る。 ・コントロールのイベントは メソッドのオーバーライドで実装する。 ・MenuItem 画面を起動するリンクのようなもの。 ・LabelFiles 国際化対応の リソースファイル(.NETとほぼ同じ仕様) ・Job X++の動作確認に利用できる。 ・Project(インポート・エクスポートが可能) ・モジュールを束ねて、インポート・エクスポート。 ・e.g.: ・共通 → partnerレイヤに。 ・国毎 → enduserレイヤに。