ESワークプレイスを使ってみよう

http://sdn.sap.com:TITLE=SDNhttps://www.sdn.sap.com/irj/sdn/esworkplace:TITLE=ESワークプレイスがかなり充実してきた。SAP ERP6.0のEhP*11〜3で加えられたES*2が、シナリオや用途別に分類されて、いろいろな視点で検索できるようになっている。また、ESのWSDL定義やそのESのテストドライブ(試用)もできるようになっている。
ただ、社内の人間がいうのもなんだが、システムもドキュメントも英語ばかりで、ちょっと敷居が高い。今回は、ESワークプレイスとその使い方を簡単に記してみたい。
なお、この記事の内容は、本日2008/8/31現在のものであり、ESワークプレイスの見た目やコンテンツはこれまでも頻繁に更新されてきたので、その旨ご了解いただきたい。

ESワークプレイスとは

https://www.sdn.sap.com/irj/sdn/esworkplace:TITLE=ESワークプレイスは、正式にはEnterprise Services Workplaceといい、SAPがビジネススイート製品の一部として提供している最新のES定義が収められている。使えるESがSAPにあるのか、それはどういうサービスインタフェースを持つのか、WSDLのurlと内容は?など、あるビジネスシナリオをSOAで構成したい、といった場合に、「使えるES」をチェックするのに有効だ。

早速ESワークプレイスにアクセス

直接のリンク先はhttps://www.sdn.sap.com/irj/sdn/esworkplace:TITLE=ここ。もしリンク先が切れていたら、http://sdn.sap.com:TITLE=SDNSDNコミュニティから、Enterprise SOA > Explore Enterprise Servicesをたどってみる。

この図の右上に見える
Browse the ES Workplace to explore all enterprise services shipped by SAP today
がESワークプレイスへの入り口だ。またその使い方を記した英語のドキュメントが、中段下に見える。The ES Workplace Handbook だ。本記事も、このハンドブックを下敷きにしている。興味のあるかたは参照のこと。
なお、ESワークプレイスはMicrosoftIEでの利用を前提としている。自分で試したところFirefoxでも使えなくはないが、一部見た目や細かい機能での不都合がみられる。IEで使うのがよいと思う。
ESワークプレイスの画面が開いただろうか。

Tips1 左側のツリーを消すときには、この赤い楕円で囲ってある三角をクリックする。


ESワークプレイスの整理は、インデクスによる整理とソリューションマップによる整理とがある。



さらに、インデクスには、アルファベット順と、サービスをいくつかテーマに沿ってグループ化したエンタープライズサービスバンドルがある。後者の例として、たとえば顧客のマスタやその顧客を中心とした伝票類を一切合財サービスで使えるようにしよう、という視点で多数のESをグループ化したものがある。Customer Fact Sheet
ソリューションマップによる整理には、SAP ERPのような業種を問わず一般的に使われるサービスマップと、特定業種で使われる業種別サービスマップとが用意されている。
例として、SAP ERPのサービスマップを取り上げてみよう。

赤い楕円で囲ったところが、Sales Order Management。受注伝票に関連するサービスが収められている。右側のオレンジ色の円は、この領域にESがすでにリリースされていることを示している。*3

ESの整理は、以下の4レベルで行われている。

  • メインプロセス (例:Sales Order Management)
    • ビジネスプロセス (例:Sales Order Processing)
      • サービスインタフェース (例:Manage Sales Order In)
        • サービスオペレーション (例:Read Sales Order)

このサービスオペレーションというレベルが、ESの最小粒度となり、一つ一つにWSDLが割り当てられるようになっている。

このサービスオペレーションの定義はA query to and response from Sales Order Processing to provide order data.すなわち、Sales Orfer Processingというビジネスプロセスで生成された受注データに対するクエリと応答。少々回りくどい書き方ではあるが、SOAで扱うビジネスオブジェクトのひとつ、"Sales Order(受注)"を読み出すサービスオペレーションということだ。
このサービスオペレーションは、ユーザ向けには判りやすい名称Read Sales Orderだが、ERPでは、SalesOrderByIDQueryResponse_Inという内部名で登録されていることがわかる。
そして、このサービスの利用は、外部から(inbound)同期的に(synchronous)行われる。同一セッション内でクエリ結果を受け取ることができるということだ。
WSDLのところには3つのリンクが用意されている。

  1. インプットメッセージ/アウトプットメッセージ/フォルトメッセージそれぞれのフィールド仕様の確認画面
  2. ESRに格納されているWSDL
  3. バックエンドポイントであるERPに実装されているWSDL

WSDL定義を読む

前述の1.フィールド仕様の確認画面を開くと、次のようなそっけない画面が出てくるが、

赤楕円部分をそれぞれクリックすると、各フィールド項目の定義を見ることができる。

このSalesOrderByIDQueryResponse_InのInputMessageは実に簡潔で、SalesOrderIDをひとつ入れて、SalesOrderByIDQuery_syncというメッセージ名のXMLを仕立ててやればよいことがわかる。OutputMessageは該当する受注伝票データがログとともに返されることもわかる。
右のFaultMessageは、サービス呼び出しが失敗した場合のエラーメッセージだ。
3.バックエンドポイントであるERPに実装されているWSDLは、実際にサービスを呼び出すためのWSDLのリンク先urlが書いてある(例:http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_customeridqr/version3?sap-client=800&wsdl=1.1&mode=sap_wsdl)。後ほどESのテストドライブを行うときに、このurlが必要になる。記憶に留めておこう。

*1:Enhancement Packages

*2:Enterprise Services

*3:こうしてみると、Treasury、Product Development、Professional-Service Delivery、Global Trade Servicesなどがまだ全くESとしてリリースされていないことがわかる。

ESのテストドライブを実行してみよう

ESワークプレイスでは、ESの定義を検索、読むだけでなく、実際のERPでそのサービスオペレーションの挙動を確認することができる。
大きな流れとしては、

  1. ES Test Driveのアカウントを取得する
  2. ESナビゲータというESのテストツール(ドライバ)を起動
  3. ESナビゲータに、バックエンドポイントのWSDLのurlを入れる
  4. ESを呼び出す

ようなものになる。

1.ES Test Driveのアカウントを取得する

SAPのカスタマやパートナで、S-numberをお持ちであれば、こちらのリンク先からすぐアカウントを取得できる。
必要項目を埋めて送信すると、通常数分で返信メールがあり、ERP/SRM/PI*1のユーザアカウントを取得できる。

2.ESナビゲータを起動

ここが今回のキモ!のひとつ。ESナビゲータのリンク先を探してESワークプレイスを歩き回っているうちに、必ず迷子になる。
ズバリ、このリンク先からESナビゲータを一発起動しよう。

このナビゲータの一番上にあるガイドは、何をする画面が今表示されているのかを示している。最初は[Select Service]。WSDL URL*の右の枠に、エンドポイントのurlをコピー&ペーストしよう。
Read Customer なら
http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_customeridqr/version3?sap-client=800&wsdl=1.1&mode=sap_wsdl
Read Sales Order なら
http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_salesorder002qr?sap-client=800&wsdl=1.1&mode=sap_wsdl
そして[Go]ボタンをクリック。すると、バックエンドのESをコールする際の初期認証を求められる。

そこで、先に取得したIDとパスワードを投入。すると、サービスオペレーションの内部名称が表示されるので、左(図では赤枠)のボタンを押す。
左(図では赤枠)のボタンを押す。
すると、InputMessageの入力画面が自動生成され、次のように表示される。

Read Customerの場合は、得意先番号を入力することになるのだが、こればかりは内部のERPに登録済みの実データを知らなければならない。
とりあえず、ERP(サーバ名HU2)に登録済みの顧客番号 1000 を #simpleContentに入力して、左下の[Execute]ボタンを押してみよう。*2
すると

この画面左側が、実際のInputMessage。右側がその結果、OutputMessageだ。
Input/OutputそれぞれメッセージをXMLでダウンロードすることもできる。
Read Sales Orderならば、手順は同じで、受注伝票番号 5000 を #simpleContentに入力して実行してみよう。

すると、Bill Fischerからの発注で、出荷先および請求先が Karsson High Tech Markt で登録されている受注伝票であることが判る。

*1:PIとは、少し前までXIと呼んでいた製品。EAIからESBの色合いが濃くなったことと同期して、SAP NetWeaver Process Integration、略称PIという製品名に変わった。ちなみに、現在XIという名称は、BusinessObjectsの主要製品名に使われている。以前のNetWeaver XIとは別製品である。

*2:ちなみに、左側のConfigurationの欄では、Synch呼び出しのタイムアウトを設定できる。デフォルトでは60秒となっている。

ESテストドライブ用のアプリケーションデータをいくつか抜粋

HU2のERPサーバにどのようなアプリケーションデータ(マスタや伝票類)が登録されているか、そしてそのデータはどうやって呼び出したらいいか。いくつか抜粋しておく。

サービス名 サービスオペレーションの内部名称 URL アプリケーションデータ
Read Customer CustomerERPByIDQueryResponse_In http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_customeridqr/version3?sap-client=800&wsdl=1.1&mode=sap_wsdl カスタマ番号 1000
Read Sales Order SalesOrderByIDQueryResponse_In http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_salesorder002qr?sap-client=800&wsdl=1.1&mode=sap_wsdl 受注伝票番号 5000
Read Project ProjectERPByIDQueryResponse_In http://erp.esworkplace.sap.com/sap/bc/srt/xip/sap/ecc_projbyidqr?sap-client=800&wsdl=1.1&mode=sap_wsdl (1)プロジェクト番号 1 (2)プロジェクト番号 I/2300

上記のURLをESナビゲータに投入してESの単体テストを行うことができるのだ。