目次


Maximo シリーズ

Part 2 - Maximo フレームワーク概説

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Maximo シリーズ

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Maximo シリーズ

このシリーズの続きに乞うご期待。

はじめに

Maximo は J2EE (Java 2 Enterprise Edition) をベースとした Web アプリケーションフレームワークです。ユーザーは、フレームワークが持つアプリケーション開発の機能を利用して、各製品に組み込まれたアプリケーションのフィールドを変更したり、独自のアプリケーションを開発したりすることができます。これにより、Maximo がフレームワークとして提供するデータ管理の機能やプロセス管理の機能、ユーザーインターフェイスをユーザーの要件に応じた業務アプリケーションの中で利用することができます。

Maximo 上でアプリケーションを開発するためには、フレームワークに対する理解が欠かせません。フレームワークの各コンポーネントの役割を理解し、フレームワークのどこで何が行われているのかを理解することで、要件を実現するために何をしなければならないのかを判断できるようになります。

Maximo フレームワークの概観

Maximo のフレームワークは MVC (Model-View-Controller) モデルを強く意識したアーキテクチャから成り立っています。

図 1. Maximo のフレームワーク

Maximo のフレームワークでは、Model、View、Controller の各部分のコンポーネントが以下のような役割を担っています。

  • Model ― データをリレーショナルデータベースに格納し、格納されたデータから対応する Java オブジェクトを作成します。
  • View ― 各アプリケーションの画面定義と、データベースから読み込んだデータを合わせてユーザーに表示する HTML を生成します。
  • Control ― ユーザーが選択したボタンや、リンクなどに対応する「イベント」を受け取り、必要な操作をモデルに対して行った後、次の画面へ遷移します。

フレームワークの上で動く MBO (Maximo Business Object)、プレゼンテーション XML、Bean クラスの各コンポーネントをあわせたものが Maximo の「アプリケーション」です。Maximo Asset Management, Tivoli Service Request Manager などの各製品には、それぞれ「資産」、「作業指示書」、「担当者」といった各要件に応じたアプリケーションが含まれています。次節以降では Maximo のデータ管理、ユーザーインターフェイス管理のそれぞれの側面からフレームワークが持つ機能についてより詳しく説明していきます。

Maximo のデータ管理 - データ・ディクショナリーと MBO -

Maximo では、資産、作業指示書、担当者といった、アプリケーションで扱われる全てのデータが RDB に格納されています。データベースに格納されているレコードを UI から操作し、変更/管理していくのが Maximo 上で動くアプリケーションの基本的な動作です。この「資産」や「担当者」といった、アプリケーションから操作されるデータの定義のことを MBO (Maximo Business Object) といいます。

アプリケーションに新たなフィールドを追加したり、フィールドのデータ型を変更したりできるようにするため、Maximo では MBO の定義そのものも RDB に格納されています。MBO を管理し、データを他のアプリケーションから使用するための仕組みはデータ・ディクショナリーと呼ばれ、「データベースの構成」アプリケーションからユーザーが操作することができます。

本節では、MBO がデータ・ディクショナリーのどのような仕組みの上で定義されているのかについてひとつひとつ説明していきます。データ管理の仕組みに関する理解し、それらを利用してクエリーを書くことで Maximo の製品機能も効率よく利用することができます。

テーブルと属性の定義

MBO を格納するための RDB のテーブル定義は、主に MAXOBJECT と MAXATTRIBUTE という二つのテーブルに格納されています。MAXOBJECT にはテーブルそのものの定義、MAXATTRIBUTE にはそれぞれのテーブルにある属性の定義が格納されています。

図 2. MBO のテーブル定義

例えば、資産の MBO であれば、「資産 (ASSET)」というテーブルの定義が MAXOBJECT に、「ASSETNUM (資産番号)」、「STATUS (資産のステータス)」といった属性の定義が MAXATTRIBUTE に格納されています。テーブルと属性の定義は、「データベースの構成」アプリケーションで確認、編集することができます。詳しい使用法はマニュアルを参照してください。

MAXATTRIBUTE には様々なパラメーターが指定されています。これらを使用することで、アプリケーション上で使用される際に使用できる値に制限をする、初期値を決める、データベースの保管方法を指定する、といったことが可能になります。指定できる主なパラメーターには以下のようなものがあります。

  • タイトル ― 属性の名前です。
  • 長さ ― フィールドの最大長です。データベースカラムの長さにも反映されます。
  • タイプ ― フィールドに指定できる値の種類です。英数字 (実際には日本語も扱えます)、数字、真偽値などが選択できます。データベースカラムの型にも反映されます。
  • デフォルト値 ― MBO を作成した際にデフォルトで設定される値です。
  • 必要? ― 必須のフィールドかどうかを指定します。

また、各 MBO には、モデルを操作するためのビジネスロジックを記述する「MBO クラス」と呼ばれる Java クラスが指定されています。ビジネスロジックを変更したり、新たに追加したりするためには Java プログラムを記述する必要があります。MBO クラスの書き方については今後紹介していく予定です。

Maximo は、このテーブル定義の情報に従って、MBO を格納する他のテーブルの属性定義や、テーブルの定義を動的に変更する機能を持っています。これにより、ユーザーは製品に組み込まれている「担当者」、「資産」、「インシデント」、といった MBO に新たなフィールドを追加したり、フィールドの型を変更したりすることができます。

関係

MBO には、他の MBO と関連を持たせたいような場合があります。「資産」がある「ロケーション」、「インシデント」を割り当てたれた「担当者」などはその典型的な例です。これらは、MBO 間の「関係」として定義され、MAXRELATIONSHIP テーブルに格納されます。

MAXRELATIONSHIP には、どの MBO からどの MBO に対して関係が定義されているかと、関係先の MBO を参照するための条件式 (主にキーとなる属性) が定義されています。これらの情報を利用して、アプリケーション上では、関係先の MBO の属性を画面上に表示したり、関係先の MBO を操作したりすることができます。

図 3. 関係の定義

関係も属性の定義と同じく、「データベースの構成」アプリケーションで定義することができます。詳しい使用法はマニュアルを参照してください。

既存オブジェクトの拡張

ユーザーの要件によっては、既存の MBO を変更するのではなく、既存の MBO に似た別の MBO を作りたいような場合があります。このような場合には、他の MBO を拡張して新たな MBO を定義します。新しく定義された MBO は、拡張元である親の MBO が持つ属性や関係を継承しています。拡張して作られた新たな MBO は、RDB 上では元のテーブルを使用する新たなビューとして格納することもできます。

拡張も、「データベースの構成」アプリケーションから設定することができます。詳しい使用法はマニュアルを参照してください。

ドメイン

ドメインは、ある属性に対して選択可能な値のリストです。Maximo では、ステータスの種類などがこれにあたります。MBO に属性を追加する際、その属性がステータスや、種類のような多肢選択式の値を持つものであれば、対応する既存のドメインや、新たに追加したドメイン指定する必要があります。ドメインには以下のような種類があります。

  • 英数字ドメイン ― 文字列の値のリストを持つドメインです。“英数字”と名前がついていますが、実際には日本語の値も扱うことができます。
  • シノニムドメイン ― 英数字ドメインと同じく文字列の値のリストを持つドメインです。ドメインの値が外部値 (表示される値) と、内部値 (表示されない値) に分かれて格納されています。既存のドメインでは MBO のステータスコードなどがこれにあたり、最も多く使用されているドメインです。
  • 数字ドメイン ― 数値のリストを値として持つドメインです。
  • 数値範囲内のドメイン ― 数値のリストではなく、範囲を持つドメインです。範囲内の値を選択することができます。
  • テーブルドメイン ― 他のテーブルの指定した属性に含まれる値をリストして、選択肢にすることができるドメインです。
  • クロスオーバードメイン ― テーブルドメインの機能に加えて、指定されたフィールド以外の別のフィールドも同時に更新するための機能を持つドメインです。

ドメインは、「ドメイン」アプリケーションから追加することができます。必要ならば既存のドメインに新たな値を追加することも可能です。

Maximo のユーザーインターフェイス管理

Maximo では、各アプリケーションの画面定義も XML 形式でデータベースに格納されています。ユーザーは「アプリケーション・デザイナー」アプリケーションで、新しい画面定義を作ったり、既存アプリケーションのレイアウトを変更したりすることができます。

ここでいう Maximo の「画面定義」とは、「リンク先 (Go To)」メニューに現れるメニューの一項目のことです。各アプリケーションは、どの MBO を主に管理するのかそれぞれ決まっています。ひとつの MBO に対して複数のアプリケーションを定義することも可能です。

ユーザーがアプリケーションを開くと、アプリケーションに対応する画面定義が JSP に変換されて画面に表示されます。ここではユーザーインターフェイスを構成する各要素についてそれぞれ説明していきます。

アプリケーション定義

アプリケーションの定義は MAXAPPS テーブルに保管されています。このテーブルに保管されているのは、アプリケーションの名前や対応する MBO の定義、メニューの定義などです。

プレゼンテーション XML ファイル

プレゼンテーション XML ファイルは、各アプリケーションの画面定義を表す XML ファイルです。実際には MAXPRESENTATION というテーブルに格納されています。

プレゼンテーション XML ファイルには、様々な「コントロール」と呼ばれる UI コンポーネントを組み合わせて画面構成が記述されています。Maximo のフレームワークは、画面定義に従ってコントロールを組み合わせることで、ユーザーが使用する画面を表示しています。

図 4. プレゼンテーション XML による画面の定義

プレゼンテーション XML で使用可能なコントロールには以下のようなものがあります。ここで挙げた以外にも一般的な Web アプリケーションで使用される様々なコントロールが選択可能です。

  • タブ
  • セクション
  • テーブル
  • テキストフィールド
  • ボタン

プレゼンテーション XML の中で配置された各コントロールには、それぞれどのようなイベントを発行するかを定義することができます。Maximo のフレームワークは、発行されたイベントに応じて、後述する Bean クラスのメソッドを呼び出し、結果として DB に格納されたデータが変更されることになります。

アプリケーションの定義やプレゼンテーション XML はアプリケーション・デザイナーから編集することができます。使い方についての詳細はマニュアルを参照してください。このシリーズでも今後紹介していく予定です。

Bean クラス

Bean クラスは、画面からボタンやアクションが選択されたされた際に発行されるイベントに対して、どのような操作を実行するかを記述した Java クラスです。ここから MBO クラスの操作を呼び出すことで、MBO が変更され、結果がデータベースに保管されることになります。

Maximo のイベントには、テキストフィールドの入力や、リンクの選択などの汎用的なイベントと、アクション・メニューや、ボタンから発行されるアプリケーション固有のイベントの大きく分けて二種類のイベントがあります。通常 Bean クラスにはアプリケーション固有のイベントについての処理を記述します。Bean クラスの書き方については今後紹介していく予定です。

Maximo アプリケーション開発の概要

前節までで、Maximo のフレームワークの上で、各アプリケーションがどのような仕組みの上に構成されているのかを説明してきました。この仕組みを理解することで、Maximo のアプリケーションの中で「どの部分」が拡張可能な部分なのかが理解できたはずです。しかし、実際にユーザーの要件に沿ったアプリケーションを構築する際には、多くのアプリケーションを拡張したり新規開発をしたりすることが必ずしも望ましいわけではありません。新規アプリケーションの開発には多くの工数がかかるため、できるだけ既存のアプリケーションを利用し、必要最低限の工数で必要な要件を満たす方法を考える必要があります。

Maximo の拡張には大きく分けて「テーラリング」と「カスタマイズ」の 2 種類の方法があります。図 5 のように、テーラリングは、工数が低くすみますが自由度は低く、カスタマイズは自由度が高く様々な要件に対応できますが、その分工数もかかります。テーラリング/カスタマイズのどちらを行うべきかの判断を行うためには、それぞれの機能をより深く知る必要があります。それぞれの詳細は今後紹介していく予定ですが、ここではそれぞれの概要を説明することにします。

図 5. アプリケーション開発

テーラリング

Maximo をベースとする各製品には、「資産」、「インシデント」といったユーザーが実際に使用するためのアプリケーション以外に、Maximo の動作を要件にあわせて変更するためのアプリケーションが含まれています。これらを使用してユーザーの要件を実現することを「テーラリング」と呼びます。

テーラリングには、「組織」、「サイト」、「ユーザー」といった基本的なビジネス・オブジェクトの作成から、レポート、KPI グラフなどのレポーティング機能のカスタマイズ、ワークフローなどのプロセス管理のカスタマイズ、さらに本稿で説明したようなデータ管理、UI 管理の機能を使用したアプリケーションのカスタマイズなどが含まれます。これらを利用することでユーザーの要件に応じた様々な機能を実現することができます。

  • レポート ― 「資産」、「インシデント」といったさまざまなアプリケーションに作成されたビジネス・オブジェクトの一覧やサマリーを PDF や HTML で表示する機能です。ユーザーの要件に応じてレポートする項目を変更したり、新たなレポートを作成することができます。
  • スタートセンター・テンプレート ― スタートセンターに表示する画面の定義です。これを作成することで Maximo 上に作成された様々なビジネス・オブジェクトの状況を担当者の役割ごとに把握することができるようになります。資産やインシデントなどの状況や、担当者に割り当てられているワークフロー、経営指標の状況を表示するためのグラフなどをスタートセンターに配置することができます。
  • KPI グラフ ― 経営指標や、システムの状況などをグラフで表示するためのオブジェクトです。作成した KPI グラフはスタートセンターに表示することができます。
  • セキュリティ・グループ ― 担当者ごとにアプリケーションそのものやアプリケーションで実行できる操作に制限を加えるためのビジネス・オブジェクトです。これを使用することで利用者ごとに機能や UI を変更することができます。
  • ワークフロー ― ビジネス・プロセスにあわせて、レコードの更新、作業指示書の作成、通知、分岐、担当者の割り当て (スタートセンターへの表示) などを行うためのオブジェクトです。ワークフローを作成することで、Maximo の上で、担当者の承認、担当者の変更、必要な担当者への通知、というような実際の業務で行われているような処理を実現することができます。
  • データベース定義 & ユーザーインターフェイス ― 本稿で説明した Maximo フレームワークの機能を利用することで、データベースの属性定義や画面の定義を変更することができます。これにより、既存のアプリケーションのデータ定義や画面のレイアウトを変更してユーザーの特殊な要件に対応することができます。

カスタマイズ

Maximo のアプリケーションはそのほとんどが Java と XML から構成されています。ワークフローやテーラリングでは実現できない高度なビジネスロジックを実装する場合、Java でクラスを作成し対応する必要があります。この機能を Maximo ではカスタマイズと呼びます。

データベースの構成では新規にテーブルを作成した場合、はじめに CustomMbo というクラスが割り当てられます。これは何も特別なメソッド (機能) を持たない MBO で、MBO の一般的な機能のみを使用することができます。MBO に固有の操作を実装したい場合やフィールドの検証を行いたい場合は Java クラスを作成することで実現できます。

またアプリケーションごとに Java クラスを定義し機能を追加できる場合があります。例えばワークフロー上で入力値の自動変換などを行いたい場合、カスタム・アクションを Java で実装することにより実現できます。Java クラスの実装をサポートしている主なアプリケーションは以下があります。

  • データベースの構成 ― MBO クラスの設定、フィールドの検証、サービスクラスを設定することができます。
  • アクション ― Java クラスを実行できるアクションを定義できます。
  • クーロンタスク・セットアップ ― 標準で実装されていないクーロンタスクを作成する場合 Java カスタマイズが必要になります。

まとめ

本稿では、Maximo のフレームワークが持つデータ管理/UI 管理の仕組みについて紹介しました。これらの知識は Maximo 上のアプリケーションを変更したり、新規アプリケーションを開発するためには必須のものです。

次回以降では、これらの仕組みを使って実際にアプリケーションを開発する手順をより具体的に紹介していきます。

注釈

*1 Maximo Base Service とは Maximo 関連製品の共通部分を指しています。製品、ガイド、マニュアル等にはこれ以外に Tivoli Process Automation Engine、Tivoli Process Automation Platform となっている所もあります。2008 年 10 月以降、IBM では、この Maximo 関連製品が持つ共通機能としてのフレームワークを指して Tivoli Process Automation Engine と呼んでいます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, セキュリティ
ArticleID=361246
ArticleTitle=Maximo シリーズ: Part 2 - Maximo フレームワーク概説
publish-date=01092009