Open棟梁Project - マイクロソフト系技術情報 Wiki -[[戻る>Dynamicsのカスタマイズ]] * 目次 [#w2dce1f0] #contents *概要 [#yc9d2729] Dynamics AX開発がどんな感じか見てみました。 *要約 [#zd5ee541] -AXはリッチクライアント -[[どれも課題は大体同じ>カスタマイズ]] *基本項目 [#w45fa453] 以下、基本的な項目の情報 **AOT開発環境 [#r885bb77] AOTは、VB6のようなRAD開発環境。 -業務のDBMSアプリに特化しているため、項目移送のコードは実装不要。 -画面とDBの項目の対応付けで処理できる(よくあるパターン)。 **X++ [#j7f00222] C#ベースらしい。 -従って、その範囲で、殆どのことは出来る模様。 -アクセス解決演算子が「:」なのでC++っぽくも視える。 -X++ プログラム言語の概要~ http://www.infoq.com/jp/news/2011/08/X-Plus-Plus **相互運用 [#m09fb4fd] ***DLL、COMの呼出し [#t140d1ed] DLL、COMのライブラリの呼出も可能。 -これにはAOTのSystem Documentation以下にある組込ライブラリを使用する。 -また、利用頻度の高いDLL、COMのラッパー・ライブラリが用意されている。 --DLL ---WinAPI.BringWindowToTop.etc~ https://msdn.microsoft.com/en-us/library/winapi.aspx --COM ---SysExcelXXXX~ https://msdn.microsoft.com/en-us/library/gg959078.aspx ***.NETの呼出し [#bfdae46b] そのまま.NETの呼出を実装できる。 -独自開発のアセンプリも参照設定(Reference)でサーバ側に取り込む。 -.NET Interop from X++ [AX 2012]~ https://msdn.microsoft.com/ja-jp/library/cc598160.aspx ***.NETからの呼出 [#g76ab4c6] .NET言語からの呼び出しのみ可能。 X++のライブラリが出来るということはないので、~ 以下のようにしてX++のコードを呼び出す必要がある。 +.NET ProjectをAOTに追加し、 +AOTのオブジェクトを.NET ProjectのソリューションエクスプローラーにD&Dする。 +すると、Service Reference 的なプロキシクラスが自動生成される。 +このライブラリを経由してAXのClass・Tableにアクセスする仕様。 --[[Dynamics CRM>CRMのカスタマイズ]]のエンティティ・アクセス方法に似ている。 詳しくは下記参照。 -Proxy Classes for .NET Interop to X++~ https://msdn.microsoft.com/ja-jp/library/gg879799.aspx -Integration with X++ Objects from Visual Studio~ https://msdn.microsoft.com/ja-jp/library/gg889166.aspx .NET Business Connectorを使用してアクセスすることもできる模様。 -.NET Business Connector Overview~ https://msdn.microsoft.com/ja-jp/library/aa659581.aspx **バージョン管理ツール [#x2a8c032] VCS、TFS、VSSなどを選択できるが、大規模開発向けではなさそう。 **情報量 [#z440b241] サポート・サービスのトレーニング教材などが利用できる。 -MSDNなどは整理されてきている。~ --Microsoft Dynamics AX~ https://msdn.microsoft.com/en-us/library/hh881894.aspx -ブログなどの情報源はまだ少ない。 --Microsoft Dynamics AX PBC~ http://www.pbc.co.jp/product/ax.html --Dynamics AX 情報サイト » チュートリアル~ http://ax.next-ware.co.jp/?page_id=10 **カスタマイズ [#w3f133ab] -カスタマイズが案外面倒である。 -これは、下位レイヤのコードの動きを理解する必要があるため。~ (詳しくは下記の「[[レイヤー>#j101218e]]」を参照) -一般的に、Fit率が70%以下になると難しくなると言われている。 *詳細項目 [#d4921417] 以下、その他の詳細な項目の情報 **処理方式 [#d6a93bcf] -3層C/S型のリッチクライアント --AXは、Webではなく、リッチクライアントで動作する。 --AXのクライアントは、ADに属す必要がある。 --AXクライアントのインストール~ AXのインストーラのインストール・オプションでクライアントだけ選択する。 -クライアント側の機能 --業務画面 --開発ツール(AOT) --Webサービス接続(VS、Office) --VS連携は、VS Toolが必要 ---VSの.NETのProjectをAOTに追加しAOTのオブジェクトにアクセス。 ---SSRSからAXのデータソースに繋げてのReportの開発。 **レイヤー [#j101218e] オブジェクトを管理している。 -青(EndUserが開発したもの) -緑(Partnerが開発したもの) -ピンク(MSが開発したもの) オブジェクト指向の継承ではない。~ ソースコードがコピーされる仕様。~ 従って下位レイヤのコードの変更はマージが必要。~ **AOTのツリー [#d0d10301] ***データディクショナリ [#dc871b25] 以下を定義する。 -テーブル、ヴュー --必須入力→必須入力チェックとなるもよう。 --チェック処理もテーブルのメソッドに実装する。~ この場合、CRUD操作の既定のメソッドをオーバーライドする。 ***データ型 [#u91c82ee] -プリミティブ型 -BaseEnums(基本列挙方) -拡張データ型(ドメイン的な) ***マップ [#naf88511] 売り買い:数量 * 単価 = 金額~ 一つ実装すれば、色々な所で使える。 ***Class <-- Form <-- MenuItem [#ad88259b] -Class --X++のビジネスロジック -Form --画面(datasource、method、designを定義)~ 画面とデータを紐付けるだけ(項目移送は書かない)。 --画面の項目はデザイナでコントロールに下に~ フィールドを置くとその様に画面に出る。 --コントロールのイベントはメソッドのオーバーライドで実装する。 -MenuItem~ 画面を起動するリンクのようなもの。 ***LabelFiles [#b3545e76] 国際化対応のリソースファイル(.NETとほぼ同じ仕様) ***Job [#x6ffdd82] -多分、Jobを実装する領域。 -X++の動作確認(デバッグ実行)にも利用できる。 ***Project [#i2e11df7] モジュールをProjectにまとめて、インポート・エクスポートが可能 e.g.: -共通 → partnerレイヤにインポート。 -国毎 → enduserレイヤにインポート。