![]() ![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第5章
SAPサービスは、SAPサーバへの着信RFCコールで起動できる一種のComposerサービスです。本質的に、SAPサービスはBAPI宛先となり、サービスのアクションロジックは、その宛先のBAPIロジックとなります。Composer SAPサービスは、他のBAPI (SAPコンポーネントを介して)呼び出すこともあり、呼び出さないこともあります。サービスは、実行中にJDBCまたは3270コンポーネントの呼び出し、LDAPクエリの実行、CICSトランザクションの参加、またはその他のComposer Connect製品が関連する他の種類の接続の使用などを行うことがあります。その後再び、データを簡単に取り込み、何らかの方法で変換して、XMLを送り出します。
この章では、SAPサービスの機能、サービスの作成方法、およびその使用方法について説明します。先に進む前に、SAP接続の作成(を参照)とSAPアクションの使用法(を参照)を説明した節の内容に精通しておく必要があります。また、Composerのアクションモデルプログラミングの概念(別冊の『Composerユーザガイド』を参照)にも精通しておく必要があります。
Composerのナビゲーションツリー(またはエクスプローラツリー)には、サービスと呼ばれるカテゴリがあります。Composer Enterprise Editionの場合、このカテゴリにはJMSサービス、Webサービス、およびSAPサービスという3つのタイプのサービスが一覧表示されています(SAPサービスは、で説明してあるように、SAP Connectおよび該当するすべてのJCOライブラリをインストールしている場合のみ表示されます)。これらのサービスタイプのいずれかに該当するサービスxObject(Composerで作成される展開可能サービスのインスタンス)を作成できます。
Composerで作成するサービスは通常、「コンポーネント」を実行します。ここで列挙したタイプのサービスのいずれも、任意のタイプのコンポーネントをいくつでも呼び出せます。たとえば、SAPサービスはXMLマップ、JDBC、およびSAPコンポーネントの呼び出しをラップできます。サービスとコンポーネントの違いは、サービスxObjectはトリガできるということです。プロジェクトが(通常はEAR形式)サーバに展開されると、プロジェクトのコンポーネントを起動できるのはComposerサービスだけであるのに対して、プロジェクト内のサービスはさまざまな種類のトリガオブジェクト(最も一般的なのはHTTPサーブレット)から起動できます。Composerの3つの主要なサービスタイプは、起動方法が異なります。JMSサービスは、JMSメッセージのキューまたはトピック上のメッセージを受信するとトリガされます。Webサービスをトリガする方法は多数あります。たとえば、HTTP要求の受信、メールサーバでの電子メールの受信、Javaオブジェクトによる直接呼び出しなどです。
SAPサービスは、SAPゲートウェイサーバに登録されているイベントリスナです。RFC (リモート関数コール)がSAPゲートウェイサーバ上で実行されると、その結果がリスナ(この場合はComposer SAPサービス)に転送されます。その後リスナは、リスナを登録するために確立された同じ接続を使用して、ゲートウェイサーバ上のその他のリモート関数を呼び出すことができます。
Webサービスなどとは反対に、使用するSAPコンポーネントをSAPサービスでラップするべきかどうかという問題は、使用するサービスが参加するメッセージ交換パターンの種類に基づいて判断する必要があります。使用するサービスはRFCに応答しますか?または独自で関数コールを開始しますか?次の4つの標準的なWebサービスメッセージ交換タイプについて考えてください。
メッセージがRFCを介して送信されている場合は、最初の2つのタイプの交換パターン(一方向と要求 - 応答)をSAPサービスに実装できます。残りの2つのタイプの交換パターンでは、エンドポイント(お使いのアプリケーション)がRFCを呼び出すことによってメッセージの送信を開始します。これらの交換パターンは、任意のサービス内にパッケージ化されるSAPコンポーネントで処理できます。
一般的なルールは次のとおりです。お使いのアプリケーションが、SAPゲートウェイサーバを介して転送されるRFCを使用するその他のSAPアプリケーションまたは関数によって消費される場合、お使いのアプリケーションは、SAPサービスとして展開されることになります。お使いのアプリケーションが、非SAPゲートウェイプロセスによって呼び出される場合(つまり、SAPゲートウェイサーバに登録する必要がない場合)は、お使いのSAP対応アプリケーションをWebサービスまたはJMSサービスとして展開します。
SAPサービスは、ログ、マップ、決定などのComposerの中核となる任意のアクションタイプを活用できるアクションモデルを持っているという点で、その他の実行可能なxObject (XMLマップコンポーネント、JDBCコンポーネントなど)と似ています。理論上は、SAPサービスのアクションモデル内すべてのビジネスロジックを実行できます(JDBCまたはLDAPなどのその他の接続は不要であるという前提において)。ただし、最良の実践を行うには、ビジネスロジックをすべて個別のコンポーネントに配置して、サービスを使用してコンポーネントを呼び出す必要があります。サービスレベルで採用する必要のあるロジックは、障害トラッピングやログ記録などです。
初めてSAPサービスを作成すると、アクションモデルの中にアクション(SAPサービススイッチと呼ばれます)が存在します。このアクションが任意のSAPサービス内に存在するのは1度のみで、SAPコンポーネント内では発生しません。したがって、メニューコマンドでは利用できません。Composerは、ユーザがSAPサービスを作成するたびに、このアクションを作成します。このアクションの目的は、RFC関数名を個別にアクションロジックに関連付けられるようにすることです。このアクションについては、この章の後の節で再度説明します。
次の手順は、ComposerでSAPサービスを作成する方法を示します。
お使いのサービスとSAPホストまたはゲートウェイサーバとの間の接続を定義するために、「SAPサーバ接続リソース」を作成します(まだ作成していない場合)。
注記: SAPサーバ接続リソースは、通常のSAP接続リソースとは異なります。詳細については、「SAPコンポーネントエディタをお使いになる前に」の「SAPサーバ接続リソースを作成する」の説明を参照してください。
Composerのエクスプローラツリーで、[SAPサービス]カテゴリを右クリックして、[新規作成]を選択します。または、次の図に示されているように、[ファイル]>[新規作成]>[xObject]の順に選択して、[SAPサービス]を選択します。
このダイアログボックスで、お使いのサービスの入力および出力の設計で使用するXMLテンプレートのサンプルドキュメントを指定します。
このダイアログボックスで、サービスに使用する一時ドキュメントを指定します(これらは、必要に応じて後で追加できます。操作方法が分からない場合は、[新規作成]をクリックします)。
このダイアログボックスで、このSAPサービスで使用する、目的のSAPサービス接続が選択されていることを確認します(コントロールのリストの先頭にある[接続]プルダウンメニューコントロールを使用します)。オプションとして、アクティブな接続があることを確認するために、[テスト]ボタンをクリックします。
[完了]をクリックします。ダイアログボックスが閉じられ、新しいアクションモデルが表示されます。SAPサービススイッチアクションが1つその中に入っています。
前に説明したとおり、新しいSAPサービスコンポーネントが作成されるたびに、ComposerではSAPサービススイッチと呼ばれる単一のアクションを含む新しいアクションモデルが作成されます。このアクションを使用すると、アクションモデルが処理できるRFCターゲットとして指定する、関数名を指定できます。SAPサービススイッチは、この点で通常のスイッチアクションに似ています。サービスで要求を受信すると、要求者が検索している関数名に基づいて、SAPサービススイッチアクションが適切な「case」ステートメントで実行されます。
次の例は、このアクションの動作を示しています。
SAPサービスのアクションモデルで、SAPサービススイッチアクションラインを検索して、ダブルクリックします。次のダイアログボックスが表示されます。
サーバに登録されている関数名を検索するには、[検索する関数]テキスト領域に検索文字列を(オプションのワイルドカードと一緒に)入力します。次に、[検索]ボタンを使用して、検索を開始します。検索結果は、[見つかった関数]リストに表示されます。
上の図の例では、検索語句は「BAPI*」です(「BAPI」で開始するすべての関数の名前を返すことを意味します)。この説明に一致する関数名が多数見つかりました。サービスで処理される関数はごくわずかです(1つのみの可能性もあります)。この手順により、処理する名前が実際にサーバ上に登録されていることが確認できます。
サービスで処理する関数名を指定するには、左側の[見つかった関数]選択リストを使用します。[見つかった関数]で選択した名前を「右」のリストに移動するには、プラス記号アイコンを使用します。右のリストから名前を削除するには、マイナス記号アイコンを使用します(選択した名前の順序を入れ替えるには、上下の矢印を使用します)。右側のリストにある名前は、お使いのSAPサービススイッチアクションで、「case」ブロックの基礎となります。
注記: オプションとして、サービスで処理されることが分かっている関数名を右側のリストに手動で入力できます。[マッピング]リストの右端にあるフライアウトメニューを使用して、マップされた値をECMAScriptでプログラム的に、またはLDAPルックアップで決定するボタンを表示させることもできます。
このダイアログボックスには、[SAPサービス要求]と[SAPサービス応答]という2つのタブがあります。これらのタブの使用方法は、アクションの章の[SAP要求]タブをクリックします。から始まる節で説明してあるように、SAP関数アクションのダイアログボックスにある[SAP要求]タブおよび[SAP応答]タブと同じです。詳細については、該当する説明を参照してください。
ダイアログボックスをすべて閉じます。アクションモデルに、「FUNCTION:」で始まる新しいラインとピッカーで以前に指定した関数名が表示されています。これで、必要に応じて各関数ブロックで、その関数名に対するコールを処理するために、個別にアクションを作成できるようになりました。
任意の「FUNCTION:」ライン(スイッチのどちらのケースでも)をシングルクリックすると、NEP (ネイティブ環境ペイン)が更新されて、SAPサービス要求とSAPサービス応答のドキュメントの構造が(それぞれのタブに)表示されます。ここでも、これらのタブの使い方は、SAPアクションで作業する際のNEPでの[SAP要求]タブおよび[SAP応答]タブの使い方と同じです。詳細については、[SAP要求]タブへのXMLドキュメントの一部のマップの説明を参照してください。
Composer展開UIを使用してSAPサービスをNovell exteNd Composer Enterprise Editionに展開するには、『Composerユーザガイド』の展開の章の説明に従って、簡単に展開xObjectを作成して、SAPサービスインスタンスをエクスプローラツリーのインスタンスペインから、[展開オブジェクト]エクスプローラツリーの[SAPサービス]カテゴリノードにドラッグします。
展開プロセスを開始するには、[ファイル]>[プロジェクトの展開](または<Ctrl>+<F5>)を使用します。
SAPサービスは、単に指定した宛先をターゲットとした着信RFC要求をリッスンしているに過ぎないため、SAPサービスを「ホストモード」でテストする唯一の方法は、SAPゲートウェイサーバとのライブ接続を確立してから、リモートエンティティでサービスに対するRFC要求を作成することです。RFC要求が作成されると、設計時にSAPサービスをホストモードでテストできます(次に、デバッグモードでサービスを処理できます)。この操作を実行できるのは、ライブ接続を確立しており、サービスを適切な関数名で「呼び出せる」何らかのプロセス(テスト目的で作成されたSAPコンポーネントなど)が存在する場合です。この操作自体は複雑でないものの、テスト用のアクティブなSAPシステム、RFC宛先の作成と設定用のSAPツールの使用が必要であり、BAPIの経験が求められます。これらの技術はこのガイドで説明する内容の範囲を超えているため、さらなる情報やヘルプが必要である場合は、Novell exteNdのWebサイトを参照したり、Novellの担当者に問い合わせたりすることができます。
注記: SAPサービスアクションモデルでアニメーションモードに切り替えようとすると、[中止]ボタン以外のアニメーションツールバーボタンはすべて無効になります。その後、何の処理も実行されません。 次のような状況になっています。[アニメーションの開始]ボタンをクリックすると、実際にサービスの実行が開始されます。ただし、サービスには対象となる着信RFCが必要であるため、接続を「リッスン」していても、初期のアクション(SAPサービススイッチアクション)では「ハング」しているように見えるのです。要求がまったく受信されない場合、サービスは永遠に(または[アニメーションの停止]ボタンをクリックするまで)「リッスン」し続けます。要求が受信されるとアニメーションは続行します。この場合、ツールバーボタンを使用してデバッグモードで、個々のアクションにステップインしたりステップオーバーしたりできます。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...