ゼロからの Aras Innovator 第7回 〜 システムとの対話:AMLとプログラム開発 〜

Arasフレームワークの主な構成要素をご紹介しているシリーズは、今回で最後となります。 Aras Innovator上に追加機能を付加する際の基礎中の基礎となる「AML」についてご紹介し、実際のプログラム開発との関係について簡単に説明します。

 


AMLとは

AMLは「Adaptive Markup Language」(ないし「Aras Markup Language」)の略で、Aras独自のXMLスキーマ(文法のようなもの)です。 アイテムの検索や新規登録、特殊なビジネスロジックなど、Innovatorサーバに対する諸々の命令(コマンド)は、このAMLで指示されます。サーバから返ってくるのも、同じくAMLです。

 

AMLは以下のような形式で記述します。

  • 【例1】 パーツアイテムの検索:
<AML>                                                 <!-- AMLの開始タグ -->
  <Item type="Part" action="get">                     <!-- "Part"のアイテムを取得("get")、検索条件は以下2つのAND -->
    <item_number condition="like">P01*</item_number>  <!-- 検索条件1: item_numberプロパティを「P01*」で曖昧検索("like") -->
    <state>Released</state>                           <!-- 検索条件2: stateプロパティを「Released」で完全一致検索 -->
  </Item>                                             <!-- "Part"アイテム取得の終了タグ -->
</AML>                                                <!-- AMLの終了タグ -->
  • 【例2】 パーツアイテムの新規登録:
<AML>                                       <!-- AMLの開始タグ -->
  <Item type="Part" action="add">           <!-- "Part"のアイテムを新規登録("add")、プロパティは以下 -->
    <item_number>P0100-12345</item_number>  <!-- パーツ番号: P0100-12345 -->
    <name>部品xxxx</name>                   <!-- 名称      : 部品xxxx -->
    <...>...</...>
  </Item>                                   <!-- "Part"アイテム新規登録の終了タグ -->
</AML>                                      <!-- AMLの終了タグ -->
  • 【例3】 パーツアイテムに独自ビジネスロジック「xyz」を適用:
<AML>                                              <!-- AMLの開始タグ -->
  <Item type="Part" id="AB...789" action="xyz" />  <!-- ID「AB...789」(32桁のAras内部ID)のパーツに"xyz"を適用 -->
</AML>                                             <!-- AMLの終了タグ -->

すごくシンプルですよね? リレーションシップを指定した検索や登録なども可能なため(例えば、「P0100-98765」を子部品に持つ親パーツの検索など)、上記より若干複雑にはなりますが、構造としてはすごくシンプルですので、習得も容易かと思います。 詳しくは「Programmer's Guide」をご参照ください。

なお、AMLはSOAPメッセージとしてHTTPで送受信されます。


AML生成や読み込みを隠蔽する「メソッド」アイテム

AMLを生成してサーバに投げたり、投げられたAMLをサーバ側で受け取って処理したりする内容(プログラム)を記述する場所として「メソッド」アイテムが用意されています。「メソッド」アイテムでは、AMLを直接記述しないで済む簡便な方法が用意されています。

 

「メソッド」アイテムも、「パーツ」アイテムや「ドキュメント」アイテムなどと何ら変わらない「アイテム」ですので、記述したプログラムなどはデータベースの中で管理されます。実行時には、DB内の「メソッド」が実行場所(クライアントサイドないしサーバサイド)に読み込まれて実行されます。クライアントサイドで実行される「メソッド」もサーバ側のデータベースに保管されているという点にご注意ください。

「メソッド」の記述言語としては、サーバサイドで実行されるものには「C#」と「VB.NET」が、クライアントサイドで実行されるものには「JavaScript」が使用できます。また、上図の通り、Aras Innovatorには「メソッド」記述用のコードエディタが内蔵されています。

「メソッド」アイテムは世代管理対象ですので、基本的には外部のソースコード管理システムを使用する必要もありません。


「メソッド」の実行方法

「メソッド」は様々な形で様々な場所から呼び出されます。ここではその概略を提示するに留めます。プログラムの記述方法も含めて、より深く知りたい方は「Programmer's Guide」を是非ご覧ください。

 

ポイントは、

  • 様々なイベントに「メソッド」を仕掛けられるため、例えば「部品構成が変更されたら上位パーツにコスト積み上げ計算を自動反映させる」といったカスタマイズを柔軟かつ簡単に行える。
  • サーバ処理は一律AMLで呼び出せるので、HTTP通信が可能でさえあれば、Aras標準のUIに縛られることなく、独自のUIを追加可能(例えばiPhone用のアプリを作ることも可能ですし、Excelを画面代わりに使うことも可能です)。同様に他システム連携も容易。

という点です。

漠然とした内容で恐縮ですが、「フレームワーク構成要素の紹介」としてはここまでにしたいと思います。 ※ 次回からは、Aras Innovatorを使った簡易システムの構築を通して、これまでご紹介してきた内容を再確認していきたいと思います。 それでは、また次回。


※(補足) 「メソッド」コードの管理について: 上で「メソッド」エディタの存在について述べましたが、Visual StudioをAras Innovatorと連携させ、Visual Studio上でプログラムの作成やテストを行っているプロジェクトも存在します。企業やプロジェクトの方針によっては、そのような利用が必須になる場合もあるかと思います。 ちなみに筆者は、Emacsでプログラムを記述 → EmacsでAMLを自動生成して「メソッド」登録/更新、という方法をよく使っています。決して本流とは言えませんが、テキストエディタとも連携できるというのは、AMLのおかげです。


(アラスジャパン 宮内一也)