Maximo シリーズ: Part 3 - Maximo Query

Maximoが持つクエリー・検索機能について紹介します

Maximo Base Service(以下Maximo)*1はMaximo Asset Managementだけでなく、2008年5月にリリースされたIBM Tivoliブランド IBM Service Management (以下ISM) 製品群の基礎となるフレームワークです。

Maximoがフレームワークとして提供する機能の一つに、Maximo上で作成されたさまざまなビジネス・オブジェクトを、クエリーを用いて自由に検索する機能があります。Maximo Asset Management等の資産管理製品やISM製品群では製品が利用される場面は大きく異なりますが、このクエリー機能はどの場合でも共通して使用されます。クエリーは検索だけでなくその他の様々な機能でも使用され、ユーザーが業務を効率的に進めていく上で必須の機能です。

赤松 猛, Tivoli 開発 / ソフトウェア開発研究所, IBM

赤松 猛(あかまつ たけし) 日本アイ・ビー・エム株式会社 ソフトウェア開発研究所 Tivoli開発 Tivoli AC & 先進技術推進
2003年4月入社。Maximo Enterprise Asset Managementを担当するセールスエンジニアとしてソフトウェア開発研究所からTivoli事業部へ出向し、Maximo関連のビジネスの立ち上げに従事した後、 WW Tivoli SWAT Teamの一員としてMaximo関連製品をはじめとしてISM製品群を担当している。IBMではこの他に、Tivoli Application Dependency Discovery Manager(TADDM)の国際化、Discovery Library Adapter(DLA)開発、Tivoli製品全般の国際化検証テスト・マルチバイト文字環境での統合テストを担当してきた。趣味はスキーで、SAJ公認正指導員の資格を持ち、シーズン中はIBM SKI部にて強化指定選手および講師として活動している。また、最近はウィンドサーフィンを始め毎週末海に通っている。



西村 康孝, Tivoli 開発 / ソフトウェア開発研究所, IBM

西村 康孝(にしむら やすたか)
日本アイ・ビー・エム、ソフトウェア開発研究所に所属。2006年,日本IBM入社。以来,ソフトウェア開発研究所にてシステム管理製品のソリューション開発に従事。現在はTivoli第一開発にてサービス・マネジメント製品とアセット・マネジメント製品の品質検証を担当。



青山 希, Tivoli 開発 / ソフトウェア開発研究所, IBM

青山 希(あおやま のぞむ) 日本アイ・ビー・エムのソフトウェア開発研究所に勤務。
オートノミック・コンピューティング関連のソリューション開発、Tivoli製品の品質検証などに従事。現在は、ワールドワイドの開発拠点と協業で、Maximo関連製品の品質検証を行っている。2006年から慶應義塾大学総合政策学部にて非常勤講師としてコンピューター・シミュレーションに関する講義を担当している。



2009年 1月 30日

はじめに

MaximoはMaximo Asset Management/Tivoli Asset Management for IT/Tivoli Service Request Manager/その他各種ISM製品の基本となるフレームワークです。このフレームワークに組み込まれ、様々な業務アプリケーションから使用される機能の1つにクエリー機能があります。

ユーザーは自由にクエリーを作成することができます。一度作成したクエリーを保存し、クエリーを切り替えることによりユーザーは自分の見たい情報をすぐに得ることが可能になります。図1は一覧画面での詳細検索画面と検索結果の例です。

図1. 一覧画面

また、クエリーは検索機能に用いられるだけでなく、Maximoの様々な場面で使用されます。今後紹介するKPI(Key Performance Indicator : 主要業績評価指標)やスタートセンターの結果セット、クロスオーバードメイン・データベースの関連やビュー・セキュリティー等で使用される条件式、ワークフローなどといったようにいろいろな用途で使用されます。ここでは検索機能に主眼をおいてクエリーを紹介しますが、使用できる機能はどこでも同じです。検索を通してMaximoのクエリーを学ぶことで、その他の場面でのクエリーの使用に役立ててください。


検索機能

Maximoシリーズ Part1 – Maximo Basicで紹介したようにテーブルの各項目はそれぞれフィルター機能を持たすことが可能です。テーブルに配置されている殆どの項目はフィルター機能を備えています。検索したい項目を使用してデータを自由に絞り込むことができます。このフィルター機能は、一覧画面のテーブルだけでなく、Maximoのテーブルの共通機能です。アプリケーションの他の画面やセクション、ダイアログ等テーブルが表示されている場所では共通に使用することができます。

図2にてテーブルでの項目毎の絞り込みの様子が確認できます。

図2. 項目による絞り込み

クリックして大きなイメージを見る

図2. 項目による絞り込み

フィルター機能が使用できるのはテーブルに表示されている項目に限定されます。テーブルをテーラリング*2にて作成する場合は項目の選択を配慮しておくことが必要です。テーブルに表示されていない項目は表示できないだけでなく、テーブル単体としてはフィルター条件に加えることもできません。

テーブルでは、フィルターによる絞り込みだけでなく、フィルターに使用されている各項目をクリックすることにより昇順・降順のソートを行うことができます。


クエリー機能

Maximo上のアプリケーションはほとんど一覧画面を持っています。一覧画面はテーブルが配置されており、このテーブルは前述の通りフィルターやソートの機能を持っています。一覧画面では、テーブルの機能であるフィルターの結果をクエリーとして保存することが可能です。保存されたクエリーは再度呼び出すことができます。図3は一覧画面でのクエリーの様子です。

図3. クエリー

クリックして大きなイメージを見る

図3. クエリー

クエリーはSQLのWhere文節として保存されていますので、ここを編集してさらに高度な検索を実行させることもできます。

図4. クエリーの編集

保存されたクエリーは各アプリケーションで使用できるだけでなく、スタートセンターの結果セットで使用できます。スタートセンターでの結果セット・クエリーの使用に関しては、このシリーズにて今後紹介していきます。


クエリーの作成

一覧画面のテーブルは、Maximoのアプリケーションに存在する他のテーブルと一見同じですが、大きく異なる点があります。それが詳細検索やクエリーの保存です。

一覧画面ではフィルター以外の項目で検索を行う場合は、詳細検索ダイアログを使用することができます。詳細検索ダイアログでは、一覧画面で表示されていない項目を使用して検索を行うことができます。こちらも一覧画面やテーブルと同様でテーラリングを使用して作成・変更する場合は、どの項目を使用するか十分な設計が必要です。図5 は資産アプリケーション標準の詳細検索画面です。

図5. 詳細検索

クエリーの確認

フィルターや詳細検索機能を使用する事により、ユーザーはデータを大きな自由度を持って絞り込むことができます。絞り込みに使用した条件は、SQL分のWhere節として確認することができます。

図6. 詳細検索

このWhere節では、クエリーがどのようにMaximo上で表現されているのか確認することができます。

図6のWhere節を見ると、絞り込みの条件は通常は部分一致となり、’=’をつけると完全一致での検索になることがわかります。この他、’%’を前後につけることにより前方一致や後方一致で検索できます。例えば、”%AAA”とすればAAAの後方一致検索になります。”BBB%”とすれば、これはBBBの前方一致検索になります。つまり、’%’がn文字のワイルドカードとして機能します。’%’の他に、’*’もn文字のワイルドカードとして機能します。

”A%B”とすることにより、’A’で始まり’B’でおわる文字列の検索が行えます。また、単一文字のワイルドカードは、’_’または’?’です。

”NULL”を使用する場合は、”~NULL~”としNULL以外を表現するときは、”!= ~NULL~”とします。

保存されるWhere節では、上記の指定は部分一致・前方一致・後方一致は”like”を使って実現されていることが確認できます。”~NULL~”や”!= ~NULL~”はWhere節ではそれぞれ”is null”や”is not null”として表現されます。

コンマ’,’を使用することで複数の値を1つのフィールドに入力することができます。この場合、コンマは’or’演算子として機能します。

図7. 各種の検索方法とWhere文節での表現

クリックして大きなイメージを見る

図7. 各種の検索方法とWhere文節での表現

クエリーの保存・編集

絞り込みに使用した条件はクエリーとして名前を付けて保存することが可能です。クエリーとして保存することにより、毎回条件を設定せずにリストから呼び出すことができます。

クエリーは、クエリーの保存ボタンにて保存ができます。保存する際にはクエリーをパブリックを選択して公開する設定とデフォルトとするかを選択できます。公開とした場合は、作成したユーザー以外も同じクエリーが使用できます。また、デフォルトとした場合は、一覧画面を開いた際に選択したクエリーが自動で実行されます。

図8. クエリーの保存

クリックして大きなイメージを見る

図8. クエリーの保存

保存したクエリーは、クエリーの管理で編集や削除が行えます。フィルターや詳細検索ダイアログでは設定できない条件はクエリーの編集にて追加することができます。クエリーとして保存されている条件はすべてSQL文のWhere節として保存されています。編集ではこのWhere節の内容を自在に追加・変更することができます。

図9. クエリーの管理

高度なクエリーの作成

Where文節に関数やMaximoのキーワードを使用して、フィルターや詳細検索では設定できない動的な内容を指定することができます。現在のログイン・ユーザーや現在日時を指定することによって、共通のクエリーをユーザー毎に使用可能にすることや、日時を使用して動的に範囲を絞り扱くことができます。

フィルターや詳細検索では使用できない関数を使用して作業指示書からサイトがBEDFORDでかつ作業タイプがPMで前後一ヶ月の自分の作業指示書を選択するクエリーを作成してみます。

最初に、サイトと作業タイプを詳細検索で指定します。作成したクエリーを保存します。

図10. クエリーの作成

ここで作成したクエリーを呼び出し、Where節を編集します。今回条件の内、フィルターや詳細検索で表現できない部分は” 前後一ヶ月の自分の作業指示書”という条件です。ここではこれをSQLで表現していきます。

自分というのはMaximoのクエリーでは、”:&personid&”で表現できます。また、現在の日付はSQLの関数が使用可能で、”CURRENT DATE”(DB2の場合、その他の多くのDB ServerではCURRENT_DATE)で表現されます。

よって、” 前後一ヶ月の自分の作業指示書”という条件は、” reportedby = : &personid& and date(targstartdate) >= (CURRENT DATE - 1 MONTH) and date(targstartdate) <= (CURRENT DATE + 1 MONTH)”となります。このWhere節では、作業指示書の項目に”reportedby”と”targstartdate”を使用する条件の対象として使用しました。”reportedby”は報告者、”targstartdate”は開始目標で、それぞれ作業指示書テーブルのカラムです。編集した結果は以下の通りです。

図11. 編集した検索条件
図12. クエリーの結果

ここまでで分かるように高度なクエリーの作成にはMaximoのデータ構造の理解が必要不可欠です。

Maximoのデータ構造は、シリーズPart 1で紹介したように一般に公開されており、さらにMaximoユーザーであればMaximoから参照可能です。図13の様に項目を選択して、Alt+F1にて項目の説明がポップアップで表示されます。また、データベースの構成アプリケーションはそれ自体がデータベースの構造・テーブル間の関連を表現しています。

図13. フィールドヘルプ
図13. フィールドヘルプ

クエリーで使用できる機能

今回作成したクエリーでは、:&personid&というMaximoの置換変数機能を使用しましたが、置換変数は:&personid&以外にもあります。Table 1はMaximoで使用できる置換変数の一覧です。

Table 1 置換変数
構文表現する値説明
:yestrueデータベースに保管されている場合、論理的に true、1
:nofalseデータベースに保管されている場合、論理的に false、0
:&date&現在の日付
:&datetime&現在の日時
:&username&ログイン・ユーザー例えば、ユーザーが Smith としてサインインしている場合、:ownerid=:&user& は :ownerid='SMITH'に変換されます。
:&personid&ログインの個人ID例えば、ユーザーが Smith としてサインインしている場合、:reportedby=:&personid& は:reportedby='SMITH' に変換されます。
:&appname&アプリケーション名例えば、作業指示書管理アプリケーションで、':&appname& = WOTRACK'は、'WOTRACK = WOTRACK' のように変換されます。この変数は、アプリケーションの異なるコピーに対して異なる動作を設定する場合に便利です。
:&mboname&現行ビジネス・オブジェクトの名前例えば、作業指示書オブジェクト内で、'object = :&mboname&'は、'object = WORKORDER' のように変換されます。
:&ownername&オーナー・ビジネス・オブジェクトの名前例えば、作業指示書管理アプリケーションで、:&owner&.jobplan.priority>&owner&.priorityは、workorder.jobplan.priority>workorder.priority のように変換されます。

置換変数の他にバインド変数という機能があります。バインド変数を使用して、ビジネス・オブジェクトに関連付けられたリレーションを使用して値を得ることが可能です。Table 2はバインド変数で使用可能な一覧です。

Table 2 バインド変数
構文表現する値
:<relationshipname>.<attrname>現行ビジネス・オブジェクトにリレーション<relationshipname>により結びつけられたビジネス・オブジェクトの属性値:location.description
:&owner&.<attrname>オーナー・ビジネス・オブジェクトの属性値作業標準を作業指示書に適用すると、システムは作業標準の優先度を下位階層の作業指示書にコピーします。条件は、以下のように設定できます。
:&owner&.jobplan.priority>:&owner&.priority
この例では、作業標準が上位階層の作業指示書より高い優先度を持っている場合、システムはこの情報をコピーします。
:&owner&.<relationship_name>.<attrname>オーナー・ビジネス・オブジェクトにリレーション<relationshipname>により結びつけられたビジネス・オブジェクトの属性値:&owner&.<attrname> の例を参照
:$old_<attrname>属性のデータベースからの初期値例えば、フィールドの値を 1 から 2 , 3 , 4 と変更した場合、古い値は 1 です。

クエリー内で現在のビジネス・オブジェクトの属性を参照できます。コロン’:’を使用して変数を定義します。例えば、次のようなSQLを使用することができます。

exists (select 1 from workorder where wonum=:wonum)

最初の wonum は、workorder オブジェクトに対する wonum 属性です。実行時には、Maximoは :wonum を現在のビジネス・オブジェクトの wonum 属性の値で置き換えます。

ここで紹介した機能を使用すると、今回作成したクエリーはSQLの日付関数を使用しなくても:&date&を使用することができるかもしれないと気付くでしょう。しかし、今回指定した条件は前後1ヶ月という条件であるため、クエリー内で計算処理が必要になります。:&date&を使用した処理も可能でしょうが、今回はSQLの機能を使用しました。

このようにMaximoのクエリーは、条件の作成に対して自由度が高くなっています。ユーザーはより使用しやすい機能を選択することで要求に応えることができます。


検索結果のダウンロード

一覧画面だけでなくいろいろな場面で使用されるテーブルですが、このテーブルはダウンロード機能を持っています。ダウンロード機能を使用することにより絞り込んだデータをそのまま使用可能状態で得ることが可能です。画面キャプチャー等の再利用不可能な形ではなく、データとして得ることができるので、その後に処理を自由に加えることができます。

それぞれのテーブルの右上にある「ダウンロード」がその機能です。ここをクリックすると現在の内容をExcel形式で保存、または開くことができます。内容はCSVではなくHTML形式となっています。(図15)

図14. 検索結果のダウンロード
図14. 検索結果のダウンロード

Maximoは自身でレポートやKPIとして簡単な分析機能を提供していますが、それ以上の分析を行いたい場合はダウンロードしたデータを使用して、ユーザー側で編集して分析することが可能です。表計算ソフトで直接開くことが可能ですので、簡単にデータの加工・編集・分析することができます。図15はダウンロードされたデータの内容です。図15の通り、内容はHTMLとして表現されているのでWebブラウザーで表示させることも可能です。(図16)

図15. ダウンロードされたデータ
図15. ダウンロードされたデータ

クリックして大きなイメージを見る

図15. ダウンロードされたデータ

図15. ダウンロードされたデータ
図16. HTMLとして表示
図16. HTMLとして表示

まとめ

Maximoのクエリー機能について紹介しました。本稿で紹介した機能を使い、ユーザーは自由にMaximoに保存されているデータを検索し表示させることができます。テーラリングを用いることで表示させる内容もユーザーの要求に適合させることが可能です。

表示させた内容は、ダウンロード機能を使用してExcel形式で取り出すことができ、簡単な分析は別途表計算アプリケーションを使用して行うことができます。

また、今後紹介するBIRT*3レポートを使用することで、Maximoから簡単な分析結果を表示させることも可能です。

また、クエリー機能は検索だけでなくMaximoのいろいろな場面で使用されます。今回紹介した機能は単純な検索の一部ではありません。クエリー使用方法の習得はMaximoというシステムを操っていく上で必須の要素です。


注釈

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

*2 テーラリングはMaximoに対する変更・拡張を指しています。Maximoのアプリケーションデザイナーやデータベースの構成等標準機能を用いた変更をテーラリングと呼びます。これに対してMaximoに無い機能をJava等を用いて拡張していくことをカスタマイズと呼びます。

*3 BIRTとはBusiness Intelligence and Reporting Toolの略です。BIRTはEclipse Projectの1つでレポート・帳票開発プラットフォームです。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Tivoli (service management)
ArticleID=362825
ArticleTitle=Maximo シリーズ: Part 3 - Maximo Query
publish-date=01302009