- 追加された行はこの色です。
- 削除された行はこの色です。
Open棟梁Project - マイクロソフト系技術情報 Wiki
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>Dynamicsのカスタマイズ]]
* 目次 [#w2dce1f0]
#contents
*概要 [#yc9d2729]
Dynamics AX開発がどんな感じか見てみました。
*要約 [#zd5ee541]
AXはリッチクライアントで
他システム開発に使用することもできるが、
基本はAXカスタマイズの範囲で使用する。
-AXはリッチクライアント
-AXのクライアント・ライセンスが必要になる。~
ライセンスは人という考え方と、端末という考え方がある。
-[[どれも課題は大体同じ>Dynamicsのカスタマイズ]]
-AX担当もSAP担当とほぼ同じくカスタマイズの面倒は見ないので、~
partner側がテンプレートを拡充する場合を除き、enduser以上に詳しくなれない。
*基本項目 [#w45fa453]
以下、基本的な項目の情報
**AOT開発環境 [#r885bb77]
-AOTは、VB6のようなRAD開発環境。
--業務のDBMSアプリに特化しているため、項目移送のコードは実装不要。
--画面とDBの項目の対応付けで処理できる(よくあるパターン)。
AOTは、VB6のようなRAD開発環境。
-業務のDBMSアプリに特化しているため、項目移送のコードは実装不要。
-画面とDBの項目の対応付けで処理できる(よくあるパターン)。
**X++ [#j7f00222]
C++/CLIのUOC可能な範囲を絞ったサブセットのようなもの。
C#ベースらしい。~
Javaにも似ているため習得しやすい。
その範囲で、殆どのことは出来る模様。
-従って、その範囲で、殆どのことは出来る模様。
-アクセス解決演算子が「:」なのでC++っぽくも視える。
**相互運用(他言語の呼出し) [#m09fb4fd]
従って、X++からの.NETやCOM、DLLのライブラリの呼出は可能。
参考
-X++ プログラム言語の概要~
http://www.infoq.com/jp/news/2011/08/X-Plus-Plus
-オフコンを引きずるERPにはさよならを、技術者が注目する次世代ERPとは - TechTargetジャパン ERP~
http://techtarget.itmedia.co.jp/tt/news/1106/16/news02.html
***COM、DLL [#t140d1ed]
-これにはsystem documentation以下にある組込ライブラリを使用する。
-また、利用頻度の高いCOM、DLLののラッパーライブラリが用意されている。
--WinAPI.BringWindowToTop.etc~
**相互運用 [#m09fb4fd]
***DLL、COMの呼出し [#t140d1ed]
DLL、COMのライブラリの呼出も可能。
-これにはAOTのSystem Documentation以下にある組込ライブラリを使用する。
-また、利用頻度の高いDLL、COMのラッパー・ライブラリが用意されている。
--DLL
---WinAPI.BringWindowToTop.etc~
https://msdn.microsoft.com/en-us/library/winapi.aspx
--SysExcelXXXX~
--COM
---SysExcelXXXX~
https://msdn.microsoft.com/en-us/library/gg959078.aspx
***.NET [#bfdae46b]
-C++/CLIのようにそのまま書ける。
***.NETの呼出し [#bfdae46b]
そのまま.NETの呼出を実装できる。
-独自開発のアセンプリも参照設定(Reference)でサーバ側に取り込む。
**相互運用(他言語からの呼出) [#g76ab4c6]
.NET言語から呼び出しのみ可能。
-.NET Interop from X++ [AX 2012]~
https://msdn.microsoft.com/ja-jp/library/cc598160.aspx
X++のライブラリが出来るということはないので
.NETのProjectをAOTに追加し、AOTのオブジェクトを.NETのProjectにD&D。
すると、WebServicesReference的なクラスライブラリが自動生成される。
このライブラリを経由してAXのClass・Tableにアクセスする仕様。
***.NETからの呼出 [#g76ab4c6]
.NET言語からの呼び出しのみ可能。
***バージョン管理ツール [#x2a8c032]
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などは整理されてきている。
**情報量 [#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]
以下、その他の詳細情報
*詳細項目 [#d4921417]
以下、その他の詳細な項目の情報
**AXはリッチクライアントで動作する。 [#d6a93bcf]
クライアントはADに属す必要がある。
AXのインストーラのインストールオプションでクライアントだけ選択する。
**処理方式 [#d6a93bcf]
-3層C/S型のリッチクライアント
--AXは、Webではなく、リッチクライアントで動作する。
--AXのクライアントは、ADに属す必要がある。
--AXクライアントのインストール~
AXのインストーラのインストール・オプションでクライアントだけ選択する。
クライアントの機能は以下。
・Webサービスに接続(VS、Office)
・VS連携は、VSTool(クライアント側と連携)
・SSRSからAXのデータソースに繋げる。
-クライアント側の機能
--業務画面
--開発ツール(AOT)
--Webサービス接続(VS、Office)
--VS連携は、VS Toolが必要
---VSの.NETのProjectをAOTに追加しAOTのオブジェクトにアクセス。
---SSRSからAXのデータソースに繋げてのReportの開発。
・レイヤー
オブジェクトを管理している。
・青(EndUser)
・緑(Partner)
・ピンク(MS)
オブジェクト指向の継承ではない。
ソースコードがコピーされる。
従って下位レイヤのコードの変更はマージが必要。
**レイヤー [#j101218e]
オブジェクトを管理している。
-青(EndUserが開発したもの)
-緑(Partnerが開発したもの)
-ピンク(MSが開発したもの)
・AOT
オブジェクト指向の継承ではない。~
ソースコードがコピーされる仕様。~
従って下位レイヤのコードの変更はマージが必要。~
・データディクショナリ
以下を定義する。
・テーブル、ヴュー
・必須入力→必須入力チェックとなるもよう。
・チェック処理もテーブルのメソッドに実装する。
この場合、既定のメソッドをオーバーライドする。
・データ型
・プリミティブ型
・BaseEnums(基本列挙方)
・拡張データ型(ドメイン的な)
**AOTのツリー [#d0d10301]
・マップ
売り買い:数量?単価=金額
一つ実装すれば、色々な所で使える。
***データディクショナリ [#dc871b25]
以下を定義する。
・Class <-- Form <-- MenuItem
-テーブル、ヴュー
--必須入力→必須入力チェックとなるもよう。
--チェック処理もテーブルのメソッドに実装する。~
・Class
X++のビジネスロジック
この場合、CRUD操作の既定のメソッドをオーバーライドする。
・Form
画面(datasource、method、designを定義)
・画面とデータを紐付けるだけ(項目移送は書かない)。
***データ型 [#u91c82ee]
-プリミティブ型
-BaseEnums(基本列挙方)
-拡張データ型(ドメイン的な)
・画面の項目はデザイナでコントロールに下に
フィールドを置くとその様に画面に出る。
・コントロールのイベントは
メソッドのオーバーライドで実装する。
***マップ [#naf88511]
売り買い:数量 * 単価 = 金額~
一つ実装すれば、色々な所で使える。
・MenuItem
画面を起動するリンクのようなもの。
***Class <-- Form <-- MenuItem [#ad88259b]
-Class
--X++のビジネスロジック
・LabelFiles
国際化対応の
リソースファイル(.NETとほぼ同じ仕様)
-Form
--画面(datasource、method、designを定義)~
画面とデータを紐付けるだけ(項目移送は書かない)。
--画面の項目はデザイナでコントロールに下に~
フィールドを置くとその様に画面に出る。
--コントロールのイベントはメソッドのオーバーライドで実装する。
・Job
X++の動作確認に利用できる。
-MenuItem~
画面を起動するリンクのようなもの。
・Project(インポート・エクスポートが可能)
・モジュールを束ねて、インポート・エクスポート。
・e.g.:
・共通 → partnerレイヤに。
・国毎 → enduserレイヤに。
***LabelFiles [#b3545e76]
国際化対応のリソースファイル(.NETとほぼ同じ仕様)
***Job [#x6ffdd82]
-多分、Jobを実装する領域。
-X++の動作確認(デバッグ実行)にも利用できる。
***Project [#i2e11df7]
モジュールをProjectにまとめて、インポート・エクスポートが可能
e.g.:
-共通 → partnerレイヤにインポート。
-国毎 → enduserレイヤにインポート。