この章では、Oracle Enterprise Scheduler Webサービスを使用して、Oracle Enterprise Schedulerランタイム機能のサブセットにアクセスする方法について説明します。
この章では、次の項目について説明します。
Oracle Enterprise Schedulerでは、エンタープライズ・レベルのスケジューリング用の豊富な機能セットを提供します。機能には、次の操作のサポートが含まれます。
Oracle Enterprise Schedulerメタデータの作成および管理
Oracle Enterprise Schedulerジョブ・リクエストの発行および管理
Oracle Enterprise Schedulerの構成および管理
クライアント・アプリケーションは、Oracle Enterprise Scheduler Webサービス(ESSWebservice)を使用して、Oracle Enterprise Schedulerランタイム機能のサブセットにアクセスできます。ESSWebserviceは、主に、BPELプロセスからOracle Enterprise Schedulerを呼び出すなど、SOA統合をサポートするために提供されています。ただし、Webサービスを使用してOracle Enterprise Schedulerと相互作用する必要があるすべてのクライアントでは、ESSWebserviceを使用できます。ESSWebserviceでは、リクエスト発行およびリクエスト管理用のジョブ・スケジューリングおよび管理機能を公開しています。
ESSWebserviceは、Oracle Enterprise Schedulerランタイム・フレームワークにおけるJava EEアプリケーションであるOracle Enterprise Schedulerアプリケーション内でデプロイされます。このため、ESSWebserviceは、Oracle Enterprise Schedulerがインストールおよびデプロイされているすべてのノードで使用できます。
ESSWebserviceは同期Webサービスであり、たとえば、呼び出された操作はすべて同期操作となります。内部的に、Oracle Enterprise Schedulerでのジョブ実行モデルは非同期であるため、API自体は非同期である必要はありません。ただし、Oracle Enterprise Scheduler Webサービスは、ジョブ完了イベントを(コアAPIレイヤーでのOracle Enterprise Scheduler EventListener規定の実装と同様の方法で)非同期で取得する機能も提供します。
ESSWebservice WSDLでは、ESSWebserviceの完全な機能を記述します。表11-1に、ESSWebserviceで使用可能な操作の要約を示します。
表11-1 ESSWebserviceで使用可能な操作の要約
操作 | 通信タイプ | 説明 |
---|---|---|
|
同期 |
後処理アクションをジョブ・セット・リクエスト内のステップに追加します。このメソッドは、リクエストの発行前にコールされます。このメソッドでは、同時処理においてadd_printer、add_notification、add_layoutによって以前サポートされていたアクションのサポートを提供します。これらのレガシー・ルーチンへのパラメータは、addPPActionへの引数として、元のルーチンで宣言されていた順序で渡されます。詳細は、第11.8項「追加のESSWebService操作の使用」を参照してください。 |
|
同期 |
リクエスト内の複数のアクションをパッケージ化できる点を除き、 |
|
同期 |
終了状態にないリクエストの処理を取り消します。 |
|
同期 |
終了状態にあるリクエストを削除対象としてマークします。リクエストがほとんどのメソッドでアクセスできなくなりますが、データは物理的に削除されません。 親リクエストの場合、この操作はすべての子にカスケードされます。 |
|
非同期 |
リクエストの完了時に非同期ステータス更新に登録します。個別の非同期レスポンスでの一方向操作です。 |
|
同期 |
指定したリクエストのランタイム詳細を取得します。 |
|
同期 |
指定したリクエストの現在の状態を取得します。 |
|
同期 |
|
|
同期 |
リクエストの |
|
同期 |
非同期Javaジョブのステータスを設定します。 |
|
同期 |
リクエストのNLS環境オプションを設定します。 |
|
同期 |
以前の同時処理スタイルでの引数を、ジョブ・セット・リクエスト内のステップ用のOracle Enterprise Schedulerプロパティにマーシャリングします。この操作は、リクエストの発行前に呼び出されます。詳細は、第11.8項「追加のESSWebService操作の使用」を参照してください。 |
|
同期 |
以前の同時処理スタイルでの引数をOracle Enterprise Schedulerプロパティにマーシャリングします。この操作は、リクエストの発行前に呼び出されます。各引数のキーはARGUMENT_PREFIX#であり、#は引数の元の値です。たとえば、ARGUMENT_PREFIX1="firstArg"およびARGUMENT_PREFIX2="secondArg"です。詳細は、第11.8項「追加のESSWebService操作の使用」を参照してください。 |
|
同期 |
新しい再帰ジョブ・リクエスト(スケジュールが設定されたリクエスト)を発行します。詳細は、第11.8項「追加のESSWebService操作の使用」を参照してください。 |
|
同期 |
新しいジョブ・リクエストを発行します。詳細は、第11.4項「BPELプロセスでOracle Enterprise Scheduler ESSWebserviceを使用するユースケース」を参照してください。 |
Oracle Enterprise Schedulerは、ジョブ・リクエスト(Javaタイプのジョブ・リクエストなど)をそのジョブを発行したアプリケーションのコンテキストで実行します。開発目的の場合は、通常、Oracle Enterprise Schedulerがターゲット・アプリケーションのコンテキストでジョブを実行できる任意のノード上にローカルに、Oracle Enterprise Schedulerとクライアント・アプリケーションを共存させます。目的が本番である場合は、一般的に、クライアント・アプリケーションとOracle Enterprise Schedulerは異なるサーバーに常駐します。
Oracle Enterprise Schedulerを使用するJava EEアプリケーションには、すべてのOracle Enterprise Schedulerアーティファクトが含まれており、この中には次のものがあります。
ジョブ・タイプ、ジョブ定義、スケジュール、およびジョブ・セットなどのその他の必須メタデータを含むメタデータ
ジョブ実装クラス(Javaジョブ用)
必要なOracle Enterprise Schedulerエンドポイント記述(ejb-jar.xmlでのMDB記述)
ESSWebserviceを使用してOracle Enterprise Schedulerと相互作用するクライアントでは、Oracle Enterprise Schedulerが適切なターゲット・アプリケーションのコンテキストでジョブを実行できるようなJava EEアプリケーションを提供する必要があります。このようなすべてのWebサービス・クライアントでは、対応するJava EEホスティング・アプリケーションの名前を認識し、必要に応じて(どのような場合に必要になるかはWSDLで定義されます)、Webサービス・コールを使用して、その名前をOracle Enterprise Schedulerに渡す必要があります。
ホスティング・アプリケーションの開発の詳細は、第5章「Oracle Enterprise Schedulerサンプル・アプリケーションのユースケース(非推奨)」を参照してください。このようなアプリケーションは、標準のOracle Enterprise Schedulerクライアント・アプリケーションですが、ジョブ・リクエスト発行と他のOracle Enterprise Schedulerとの相互作用は、これらのコールがESSWebserviceを介して生成されるため、スキップされる場合があります。
ESSWebservice Webサービスを使用してOracle Enterprise Scheduler機能にアクセスする場合、対応するホスティングJava EEアプリケーションがOracle Enterprise Schedulerで使用できる必要があります。クライアントが、Oracle Enterprise Scheduler Webサービスを使用してOracle Enterprise Schedulerとリモートで相互作用できる場合も、関連付けられているJava EEアプリケーションはOracle Enterprise Schedulerと同じ場所に配置されている必要があります。これにより、Oracle Enterprise Schedulerは正しいアプリケーション・コンテキストでジョブ・リクエストを実行できます。このため、ESSWebserviceクライアントでは、必要なすべてのOracle Enterprise Schedulerアーティファクトが含まれた、対応するJava EEアプリケーションを依然として開発、パッケージ化およびデプロイする必要があります。Oracle Enterprise Schedulerアプリケーションの開発の詳細は、第5章「Oracle Enterprise Schedulerサンプル・アプリケーションのユースケース(非推奨)」を参照してください。
SOAクライアントの場合、BPELプロセッサなどすべてのSOAコンポーネントは、SOAコンポジットとしてデプロイされます。SOAコンポジットはJava EEアプリケーションではありません。このコンポジットは、(SOAインフラ内の)SOAファブリック・ランタイム・フレームワークを使用して実行されます。
SOAコンポーネントの場合、コンポジットとOracle Enterprise Schedulerとの間のプロキシとして機能する個別のJava EEホスティング・アプリケーションを作成します。このホスティング・アプリケーションは、デプロイされたコンポジットごとに1つのOracle Enterprise Schedulerアプリケーションという1対1のアソシエーションで作成したり、複数のコンポジットによって単一のJava EEホスティング・アプリケーションが共有されるようにできます。Java EEホスティング・アプリケーションには、必要なすべてのOracle Enterprise Schedulerアーティファクトが含まれています。
ESSWebservice WSDLで示されているように、クライアントは、ジョブ完了に関して非同期に通知される必要がある場合、getCompletionStatus()
操作を呼び出すことができます。ジョブ完了時に、Oracle Enterprise Schedulerは、ESSWebserviceが着信コール内のコール元アドレスを取得するws-addressingに続いてコールバック操作onJobCompletion()
を呼び出します。クライアントは、このコールバックを今後いつでも受信できる必要があります。このようなコールバックは、ジョブの完了に必要な時間に完全に依存します。これは、ジョブ完了時に(Oracle Enterprise Scheduler EventListener規約を実装する)クライアントのリスナーを呼び出すためのOracle Enterprise Scheduler機能に似ています。
getCompletionStatus()
を使用する場合、クライアントには、特定の必須WebサービスAddressingヘッダー(特に、wsa:MessageID
ヘッダーとwsa:ReplyTo
ヘッダー)が含まれている必要があります。これにより、Oracle Enterprise Schedulerランタイムは、ジョブ完了ステータスが適切なReplyTo
アドレスに送信されたことを非同期で通知できます。BPELプロセスでgetCompletionStatus()
を使用すると、SOAランタイムは必須ヘッダーを自動的に追加します。クライアント側でWebサービス・プロキシを使用している場合にgetCompletionStatus()
をプログラムで使用するには、これらのAddressingヘッダーをWebサービス・クライアントで設定する必要があります。
ESSWebserviceは、次のOracle Enterprise Scheduler機能をサポートしていません。
非定型リクエストの発行: ESSWebserviceでは、非定型のジョブ・リクエストの発行がサポートされていません(非定型リクエストの発行を使用するには、EJB APIを使用します)。このため、ESSWebserviceを使用して発行されるすべてのジョブに、対応する定義(関連プロキシ・アプリケーションでメタデータ・オブジェクトとして作成されたジョブ・タイプ、ジョブ定義、スケジュール定義など)が存在する必要があります。Webサービス操作は、そのようなメタデータ・オブジェクトを、WSDLで指定されたそれらのオブジェクトの識別子引数を使用して参照できるようになります。
問合せAPI: ESSWebserviceでは問合せAPIを公開しません。Webサービス・クライアントでは、Oracle Enterprise Schedulerリクエストに関する問合せ情報を取得する必要はありません。ESSWebservice Webサービス・クライアントは、問合せAPIを使用する必要がある汎用の監視および管理機能は提供していません。
Oracle Enterprise Scheduler機能は、JAX-WS注釈付きインタフェース(SEI)を使用するWebサービスとして公開されます。この(SEI) Webサービスの実装によって、共通のOracle Enterprise Scheduler実装レイヤーが呼び出されます。ESSWebserviceは、最大限の互換性を得るためにドキュメント/リテラル/ラップ・モードで公開されます。
ESSWebserviceで使用される一部のデータ型は、Webサービスで直接使用することには適していません。このようなデータ型は、対応するXML表現に簡単に変換できません。このため、Oracle Enterprise Scheduler Webサービス・レイヤーでは、ESSWebserviceで公開され、WSDLで表示されるこれらのデータ型に適用するラッパー・クラスを定義します。そうでない場合は、一般的に、Webサービス・レイヤーでは、可能な場合には既存のデータ型を再利用します。
Oracle Enterprise Schedulerがインストールされ、実行されている場合、次のタイプのURLにあるWebサービス・ページからWSDL定義ファイルを取得できます。
http://host:port/ess/esswebservice?WSDL
次に例を示します。
http://system1:7001/ess/esswebservice?WSDL
ブラウザからESSWebservice URLに直接アクセスすることによってWebサービス操作を起動することはサポートされていません。
次の項では、BPELプロセスからESSWebServiceを使用する方法を示しています。BPELプロセスでは、ESSWebServiceを使用してジョブ・リクエストを発行できます。このユースケースでは、BPELおよびSOAユーザーがOracle Enterprise Schedulerを使用する場合の1つのパスを示しています。経験豊富なSOAユーザーおよび設計者は、Webサービスを使用するOracle Enterprise Schedulerで作業する方法として、他に案がある場合があります。BPELプロセスでOracle Enterprise Schedulerジョブ・リクエストを発行するには、必要なOracle Enterprise Schedulerアーティファクトを提供するアプリケーションをデプロイする必要があります。このユースケースでは、第5章「Oracle Enterprise Schedulerサンプル・アプリケーションのユースケース(非推奨)」で説明しているEssDemoApp
をデプロイできます。
Oracle JDeveloperを使用して、アプリケーションおよびそのアプリケーション内のプロジェクト(アプリケーション用のコードとサポート・ファイルが含まれている)を作成します。ESSWebServiceサンプル・アプリケーションを作成するには、次を実行します:
Oracle JDeveloperでアプリケーションおよびSOAプロジェクトを作成します。
Oracle JDeveloperでSOAプロジェクトを構成します。
Oracle Enterprise Schedulerを使用するには、最初に、Oracle JDeveloperでアプリケーションおよびSOAプロジェクトを作成します。
EssWebApplicationを作成する手順は、次のとおりです。
「新規...」アイコンをクリックします。
ナビゲータの「新規ギャラリ」で、「一般」を展開し、「アプリケーション」を選択します。
「アイテム」領域で、「SOAアプリケーション」を選択します。
「OK」をクリックします。
「アプリケーションの名前付け」ウィンドウを使用して、新しいアプリケーションの名前と場所を入力し、アプリケーション・テンプレートを指定します。
「アプリケーション名」フィールドで、アプリケーション名を入力します。このサンプル・アプリケーションでは、EssWebApplication
と入力します。
「ディレクトリ」フィールドで、デフォルトを使用します。
アプリケーション・パッケージ接頭辞を入力するか、またはデフォルトである接頭辞なしを受け入れます。
接頭辞に続いてピリオドが、アプリケーションの初期プロジェクト内に作成されたオブジェクトに付加されます。
「次へ」をクリックします。
「プロジェクトの名前付け」ダイアログで、SOAプロジェクトのオプションを選択します。
「プロジェクト名」フィールドで、プロジェクト名を入力するか、またはデフォルトのProject1
を受け入れます。
「プロジェクト・テクノロジ」タブで、「選択済」シャトルに「SOA」と表示されます。
「終了」をクリックします。これにより、SOAプロジェクトが含まれたEssWebApplicationが作成されます。
SOAコンポジット・アプリケーションでESSWebservice参照を追加して、WebサービスでSOAコンポジット・アプリケーションのパートナ・リンクを使用できるようにする必要があります。
ESSWebServiceパートナ・リンクをSOAコンポジット・アプリケーションに追加する必要があります。
Oracle Enterprise Scheduler Webサービスをパートナ・リンクとして追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、ESSWebApplicationを開き、「Project1」を展開し、「SOAコンテンツ」を展開します。
アプリケーション・ナビゲータで「composite.xml」を選択します。
右クリックしてドロップダウン・リストから「開く」を選択します。図11-1に示すように、コンポジットが表示されます。
「コンポーネント・パレット」の「SOA」ドロップダウン・リストから、「サービス・アダプタ」領域の「Webサービス」を選択します。
Webサービス・アイコンをcomposite.xmlの「外部参照」レーンにドラッグ・アンド・ドロップします。図11-2に示すように、「Webサービスの作成」ウィンドウが表示されます。
「名前」フィールドで、サービス名を入力するか、またはデフォルト名を受け入れます。
「タイプ」フィールドで、ドロップダウン・リストから「参照」を選択します。
「WSDL URL」テキスト・フィールドで、次のようにWSDL URLの値を手動で入力します。
http://host
:port
/ess/esswebservice?WSDL
「SOAリソース・ルックアップ」ダイアログで、「OK」をクリックします。
「Webサービスの作成」ダイアログの「ポート・タイプ」フィールドで、ドロップダウン・リストから「ESSWebService」を選択します。
「Webサービスの作成」ダイアログの「コールバック・ポート・タイプ」で、ドロップダウン・リストから「ESSWebServiceCallback」を選択します。
「WSDLとその依存アーティファクトをプロジェクトにコピー。」チェック・ボックスを選択します。これにより、Oracle Enterprise Scheduler抽象WSDLファイルとESSTypes.xsd
ファイルのローカル・コピーがSOAコンポジット・プロジェクトに移動されます。
注意: WSDLファイルのローカル・コピーを保持すると、リモートWSDLファイルが更新されたときに、同期の問題が発生する場合があります。このため、リモートWSDLファイルのローカル・コピーの作成はお薦めしません。ただし、オフライン設計などの特定のシナリオでは、このような処理が役立つ場合があります。 |
「OK」をクリックします。これで、図11-3に示すように、composite.xmlファイルの「外部参照」レーンに新しいWebサービスが表示されます。
次に、BPELプロセスを追加してESSWebService操作を呼び出す必要があります。
ESSWebServiceを使用するには、BPELプロセスを追加する必要があります。
ESSWebServiceを使用するためのBPELプロセスを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「composite.xml」を選択します。
「コンポーネント・パレット」の「SOA」ドロップダウン・リストから、「サービス・コンポーネント」領域の「BPELプロセス」を選択します。
BPELプロセスを「コンポーネント」スイムレーンにドラッグ・アンド・ドロップします。図11-4に示すように、「BPELプロセスの作成」ダイアログが表示されます。
「OK」をクリックします。これにより、図11-5に示すようにBPELプロセスがcomposite.xmlに追加されます。
composite.xmlで、図11-6に示すように、「BPELProcess1」を選択してから、右矢印を選択してドラッグし、Service1への参照を作成します。
図11-6 composite.xmlでのOracle Enterprise Scheduler Webサービスへの参照の追加
「すべて保存」アイコンをクリックして、プロジェクト・ファイルを保存します。
プロジェクトの下のxsdフォルダ内の対応するXSDファイルを開いて、BPELプロセスのスキーマを変更する必要があります。この手順は、サンプル・アプリケーションのデモのための簡略化された手順です。独自のアプリケーションでは、ESSWebservice操作に必要なスキーマ・タイプを使用します。これにより、BPELプロセスのクライアント(この例では簡略化されたテスト・ケース)は、必要なすべての入力を提供できます(クライアントはBPELプロセス・スキーマに基づいているため必須です)。この手順により、入力をWebサービスにマッピングまたは割り当てることができます。この手順は、サンプル・アプリケーションを正しく生成するためにのみ必要です。実際のシナリオでは、BPELプロセス設計者が、入力スキーマの定義または提供や、Webサービス入力へのマッピングを担当します。
注意: 説明している手順では、操作するBPELプロセス、およびBPELプロセスに使用する特定のネーミングに応じて、手動による変更が必要です。ESSWebService操作に必要なタイプはESSWebService WSDLファイルで見つけることができます。これらのタイプをスキーマに個別に追加することもできます。 |
BPELプロセス・スキーマを更新する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」フォルダを展開し、「xsd」フォルダを展開します。
「xsd」フォルダ内のBPELProcess1.xsdファイルをダブルクリックします。
「ソース」タブを選択します。
EssWebServiceタイプをコピーして、例11-1で示されているコンテンツがスキーマに含まれるようにします。
Oracle Enterprise Scheduler Webサービスが公開しているESSTypes.xsd
ファイルおよびその他のWSDLアーティファクトがコンポジットにインポートされ、esswebservice_XSD_<
XSDファイル名
>.xsd
という名前に変更されます。
注意: 例11-1に示すスキーマには、アプリケーションおよびプロジェクト名が含まれています。この例のアプリケーション名またはプロジェクト名を変更した場合は、使用する名前を反映するようにスキーマの |
BPELProcess1.xsd
ファイルで、第11.6項「ESSWebService参照の作成」で作成され、コンポジットにインポートされたアーティファクトを参照します。ディレクトリ・パスは、BPELProcess1.xsd
ファイルに対して相対的である必要があります。例11-1に、Webサービス・アーティファクトへの参照が含まれたコンポジット・スキーマ・ファイルを示します。
例11-1 BPEL XSDスキーマ
<?xml version="1.0" encoding="UTF-8"?>
<schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
xmlns:ns1="http://xmlns.oracle.com/scheduler/types"
targetNamespace="http://xmlns.oracle.com/
EssWebApplication/Project1/BPELProcess1"
xmlns:tns="http://xmlns.oracle.com/
EssWebApplication/Project1/BPELProcess1"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xmlns.oracle.com/scheduler/types"
schemaLocation="../esswebservice_XSD_ESSTypes.xsd
" />
<element name="process">
<complexType>
<xs:sequence>
<xs:element name="description" type="xs:string"/>
<xs:element name="jobDefinitionId" type="ns1:metadataObjectId"/>
<xs:element name="requestedStartTime" type="xs:dateTime"/>
<xs:element name="application" type="xs:string"/>
<xs:element name="requestParameters" type="ns1:requestParameters"/>
</xs:sequence>
</complexType>
</element>
<element name="processResponse">
<complexType>
<sequence>
<element name="result" type="string"/>
<element name="requestId" type="long"/>
<element name="state" type="ns1:state"/>
</sequence>
</complexType>
</element>
</schema>
「保存」アイコンをクリックします。
BPELプロセスで、Oracle Enterprise Scheduler WebサービスsubmitRequest()
操作を実行するためのInvokeアクティビティを追加します。この手順では、値を入力変数および出力変数に割り当てることによって、Invokeアクティビティの入力および出力を選択する必要があります。
ESSWebServiceを使用して、リクエストを発行するためのInvokeアクティビティを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」を展開し、BPELファイルを選択します。たとえば、BPELProcess1.bpelを選択します。図11-7に示すように、BPELスイムレーンが表示されます。
図11-7 ESSWebService SubmitRequestのInvokeアクティビティを追加する前のBPELプロセス
「コンポーネント・パレット」から、Invokeアクティビティをドラッグ・アンド・ドロップし、callbackClientの前に配置します。
InvokeアクティビティをESSWebServiceにリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。図11-8に示すように、「Invokeの編集」ダイアログが開きます。
「Invokeの編集」ダイアログの「操作」フィールドで、「submitRequest」を選択します。
「変数」フィールドで、「入力」フィールドの横にある「追加」アイコンをクリックします。
「変数の作成」ダイアログが表示されます。デフォルト値を受け入れて、「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力」フィールドの横にある「追加」アイコンをクリックします。
「変数の作成」ダイアログが表示されます。デフォルト値を受け入れて、「OK」をクリックします。
「Service1」への新しい起動リンクが表示されます。
Invokeアクティビティを選択し、名前Invoke_1
をダブルクリックして、テキスト・エントリ・フィールドを選択します。テキスト・エントリ・フィールドで、図11-9に示すようにsubmitRequest
と入力します。
Assignアクティビティを追加し、次にBPELプロセスからの入力をsubmitRequest Invokeアクティビティに割り当てます。
注意: ほとんどの場合、BPELプロセスの入力ペイロードは、リクエスト発行Webサービスの入力ペイロードと直接一致しません。入力ペイロードからリクエスト発行への1対1マッピングがあるシナリオでのみ、CopyListの使用が役立ちます。 |
コピー操作によるAssignアクティビティのマッピングの場合、引数は、表11-2に示すように、Oracle Enterprise Scheduler submitRequestの入力パラメータに対応します。BPELスキーマがsubmitRequestメッセージ・タイプと異なる場合は、表11-2を参考に、Assignアクティビティのコピー操作を使用して手動で値を移入します。
表11-2 リクエスト発行のWebサービス引数の、BPEL Assignアクティビティに対するマッピング
引数 | 説明 |
---|---|
説明 |
「注文インポート」など、ジョブの非定型発行のコンテキストです。 |
アプリケーション |
アプリケーション名は、ホスティングOracle Enterprise Schedulerアプリケーションのデプロイメント名であるか、または論理アプリケーション名です。 |
JobDefinitionId |
|
パラメータ |
dataType: パラメータの値タイプ( name: Oracle Enterprise Schedulerジョブ定義で定義されているパラメータの名前が含まれている文字列 scope: ジョブ・セットに対してのみ使用される、パラメータの名前付きスコープが含まれた文字列 value: パラメータの値が含まれた要素 |
assignアクティビティを追加する手順は、次のとおりです。
「コンポーネント・パレット」の「BPELアクティビティ」領域から、AssignアクティビティをsubmitRequestという名前のInvokeアクティビティのすぐ前にドラッグ・アンド・ドロップします。
Assignアクティビティを選択し、名前Assign_1をダブルクリックして、新しいテキストを入力します。テキスト・エントリ・ボックスで、図11-10に示すように、Job_Inputs
と入力します。
description、JobDefinitionID、requestedStartTime、application用のコピーの追加手順
Job_Inputs
という名前の新しいAssignアクティビティをダブルクリックすると、図11-11に示すように、「コピー操作」タブが含まれた「Assign」ページが表示されます。
「追加」アイコンをクリックし、ドロップダウン・リストから「コピー操作」を選択して、コピー操作を変数に追加します。「コピー操作の作成」ダイアログが表示されます。
「コピー操作の作成」ダイアログで、展開およびナビゲートして、各入力パラメータのコピー操作(コピー操作は、description
、jobDefinitionID
、requestedStartTime
およびapplication
にのみ使用できます)を選択します。これにより、入力パラメータがInvokeアクティビティのInvoke_1_submitRequest_InputVariable
パラメータにコピーされます。図11-12に、これらのコピー操作の1つを示します。
「OK」をクリックして、description
のコピー操作を追加します。
同様に、jobDefintionID
、requestedStartTime
およびapplication
パラメータのコピー操作をさらに実行します。
requestParametersのコピー・リストを追加する手順は、次のとおりです。
Job_Inputs
という名前のAssignアクティビティをダブルクリックして、「コピー操作」タブが含まれた「Assign」ページを表示します。
「追加」アイコンをクリックして、ドロップダウン・リストから「CopyList操作...」を選択し、CopyList操作をrequestParametersに追加します。「CopyList操作の作成」ダイアログが表示されます。
「CopyList操作の作成」ダイアログで、展開およびナビゲートして、requestParameters
のコピーリスト操作を選択します。これを行うには、図11-13に示すように、parameter要素にナビゲートして選択します。
「CopyList操作の作成」ダイアログで、「OK」をクリックします。
Assignアクティビティで、「OK」をクリックします。
図11-14に、BPELの「設計」ページを示します。
図11-14 Job_Inputs AddアクティビティおよびsubmitRequest Invokeが含まれたBPEL
BPEL要素にOracle Enterprise Scheduler Webサービスと同じタイプがない場合
BPELペイロードの要素タイプが、Oracle Enterprise Scheduler Webサービスのペイロードのものと同じでなく、かつ、1つ以上のジョブ・パラメータに値を割り当てる必要がある場合には、次の方法を使用できます。
前の手順で実行したように、コピー操作を使用して、最初のパラメータ要素に移入します。
図11-15に示すように、後ろに挿入を使用して、その他のパラメータ要素を追加またはクローニングします。
XPath配列サブスクリプトを使用して、追加のパラメータ要素に移入します。
このアクションによって、パラメータ要素全体がすべてのサブ要素値とともに効率的にコピーされ、XML配列の末尾に追加されます。2つ目のジョブ・パラメータの値を移入するには、コピー操作をさらに追加して、ダイアログの右下のXPath式を変更して、適切な配列サブスクリプト[n] (nはパラメータの番号)を追加します。すべてのXML配列は、0ではなく1で始まります。
ESSWebService getCompletionStatus操作を呼び出すために、別のInvokeアクティビティを追加してService1にリンクします。
getCompletionStatus操作のInvokeアクティビティを追加する手順は、次のとおりです。
「コンポーネント・パレット」から、InvokeアクティビティをsubmitRequestとcallbackClientの間にドラッグ・アンド・ドロップします。
この新しいInvokeアクティビティで、Invoke_1という名前のテキスト入力領域を選択し、名前getStatusAsync
を入力します。
InvokeアクティビティをService1にリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。「Invokeの編集」ダイアログが表示されます。
getStatusAsyncの「Invokeの編集」ダイアログで、「操作」フィールドのドロップダウン・リストから「getCompletionStatus」を選択します。
「入力変数」フィールドで、「追加」アイコンを選択します。図11-16に示すように、「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。図11-17に示すように、「Invokeの編集」ダイアログが表示されます。
「Invokeの編集」ダイアログで、「OK」をクリックします。新しいInvokeアクティビティgetStatusAsync、およびService1へのリンクが表示されます。
新しいAssignアクティビティをsubmitRequestの後に追加してRequestIDを割り当て、それをgetStatusAsync invokeアクティビティに渡します。
assignアクティビティを追加する手順は、次のとおりです。
「コンポーネント・パレット」の「BPELアクティビティ」領域から、AssignアクティビティをsubmitRequestという名前のInvokeアクティビティの直後、かつgetStatusAsyncという名前のInvokeアクティビティの前にドラッグ・アンド・ドロップします。
Assignアクティビティを選択し、名前Assign_1をダブルクリックして、テキスト入力領域を選択します。テキスト入力領域に、RequestID
と入力します。図11-18にassignアクティビティを示します。
新しいAssignアクティビティ、RequestIDをダブルクリックして、「コピー操作」タブが含まれた「Assign」ページを表示します。
「追加」アイコンをクリックし、ドロップダウン・リストから「コピー操作...」を選択します。
「From」領域で、「Invoke_1_submitRequest_OutputVariable」を展開し、「requestID」を選択します。図11-19に示すように、これを、「To」領域からgetStatusAsync_getCompletionStatus_InputVariable
内のrequestID
にマッピングします。
「コピー操作の編集」ダイアログで、「OK」をクリックします。
「コピー操作」ダイアログで、「OK」をクリックします。
BPELの「設計」ページで、「プロセスの検証」をクリックします。図11-20に示すように、BPELが表示されます。
Receiveアクティビティを追加し、onJobCompletion ESSWEbService操作にリンクします。
Receiveアクティビティの追加手順
「コンポーネント・パレット」の「BPELアクティビティ」領域から、ReceiveアクティビティをgetStatusAsync InvokeアクティビティとcallbackClientの間の位置にドラッグ・アンド・ドロップします。
図11-21に示すように、Receive_1
という名前のReceiveアクティビティのテキスト入力領域を選択し、onJobCompletion
と入力します。
ReceiveアクティビティonJobCompletionから右矢印を「Service 1」にドラッグします。図11-22に示すように、「Receiveの編集」ダイアログが表示されます。
図11-22 onJobCompletion Receiveアクティビティの「Receiveの編集」ウィンドウ
「Receiveの編集」ダイアログの「操作」フィールドで、ドロップダウン・リストから「onJobCompletion」を選択します。
「変数」フィールドで、「追加」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Receiveの編集」ダイアログで、「OK」をクリックします。図11-23に示すように、Service1から新しいReceiveアクティビティonJobCompletionへの矢印が追加されます。
onJobCompletionからの結果出力をクライアントの出力にコピーするためのAssignアクティビティを追加します。onJobCompletionからのすべての結果をcallbackClient入力変数に割り当てます。
結果のassignアクティビティを追加する手順は、次のとおりです。
「コンポーネント・パレット」の「BPELアクティビティ」領域から、AssignアクティビティをReceiveアクティビティonJobCompletionとcallbackClientの間の位置にドラッグ・アンド・ドロップします。
Assignアクティビティを選択し、名前Assign_1をダブルクリックして、新しいテキストを入力します。図11-24に示すように、値Result
を入力します。
新しいResult Assignアクティビティをダブルクリックして、「コピー操作」タブが含まれた「Assign」ページを表示します。
「追加」アイコンをクリックし、ドロップダウン・リストから「コピー操作...」を選択します。
変数を選択するためにナビゲートし、「From」領域のonJobCompletion_onJobCompletion_InputVariable
の「resultMessage」を選択します。図11-25に示すように、「To」領域で、「outputVariable」を展開し、「client:result」を選択します。
「コピー操作の作成」ダイアログで、「OK」をクリックします。
「Assign」領域で、「OK」をクリックします。
「プロセスの検証」をクリックします。
図11-26に、最終的なBPELを示します。
図11-26 callbackClient InvokeアクティビティのあるResult Assignアクティビティ
次を含むその他のEssWebService操作を使用できます。
スケジュールが関連付けられたリクエストを発行する場合は、submitRecurringRequest
Webサービス操作を使用します。詳細は、第11.8.1項「ESSWebService submitRecurringRequest操作の呼出し方法」を参照してください。
以前の同時処理スタイルでの引数をOracle Enterprise Schedulerプロパティにマーシャリングする必要がある場合は、setSubmitArgs
操作を使用します。この操作は、リクエストの発行前に呼び出す必要があります。各引数のキーは、submit.argument#
であり、#
は引数の序数値です(submit.argument1="firstArg"
やsubmit.argument2="secondArg"
など)。詳細は、第11.8.2項「ESSWebService setSubmitArgs操作の呼出し方法」を参照してください。
後処理アクションをジョブ・セット・リクエスト内のステップに追加する場合は、addPPAction
操作を使用します。このメソッドは、リクエストの発行前にコールされます。この操作により、同時処理のadd_printer
、add_notification
およびadd_layout
で以前サポートしていたアクションがサポートされます。こうしたレガシー・ルーチンに対するパラメータは、addPPAction
への引数として、元の同時処理ルーチンで宣言された順序で渡されます。第11.8.3項「ESSWebService addPPActions操作の呼出し方法」
BPELプロセスで、Oracle Enterprise Scheduler WebサービスsubmitRecurringRequest()
操作を実行するためのInvokeアクティビティを追加します。この手順では、値を入力変数および出力変数に割り当てることによって、Invokeアクティビティの入力および出力を選択する必要があります。繰り返されるジョブ、または後の日付で実行されるジョブを発行する場合、そのジョブは、宣言して作成され、メタデータ・リポジトリに格納されるOracle Enterprise Schedulerスケジュールを使用して発行される必要があります。スケジュールが定義されると、BPELは、そのスケジュールでsubmitRecurringRequest()
操作を介してジョブを発行できます。
ESSWebServiceを使用して、リクエストを発行するためのInvokeアクティビティを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」を展開し、BPELファイルを選択します。たとえば、BPELProcess1.bpelを選択します。BPELスイムレーンが表示されます。
「コンポーネント・パレット」から、Invokeアクティビティをプロセス内にドラッグ・アンド・ドロップします。このアクティビティでは、リクエスト発行ペイロードに移入し、それをOracle Enterprise Scheduler Webサービスに対して発行します。
Invokeアクティビティを選択し、名前Invoke_1
をダブルクリックして、テキスト・エントリ・フィールドを選択します。テキスト・エントリ・フィールドで、submitRecurringRequest
と入力します。
InvokeアクティビティをESSWebServiceにリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。図11-27に示すように、「Invokeの編集」ダイアログが開きます。
「Invokeの編集」ダイアログで、「操作」フィールドの「submitRecurringRequest」を選択します。
「Invokeの編集」ダイアログで、「入力」フィールドの「追加」アイコンをクリックします。「変数の作成」ダイアログが表示され、スコープレベル変数を作成してリクエスト・ペイロードを含めることができます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力」フィールドの「追加」アイコンを選択します。「変数の作成」ダイアログが表示され、スコープレベル変数を作成してレスポンス・ペイロードを含めることができます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「OK」をクリックします。図11-28に示すように、Service1への新しい呼出しリンクが表示されます。
再帰リクエスト発行に入力を割り当てる手順は、次のとおりです。
Assignアクティビティを追加し、BPELプロセスからの入力をsubmitRecurringRequest Invokeアクティビティに割り当てます。これにより、再帰リクエスト発行パラメータを入力変数に移入できます。
注意: ほとんどの場合、BPELプロセスの入力ペイロードは、再帰リクエスト発行Webサービスの入力ペイロードと直接一致しません。入力ペイロードからリクエスト発行への1対1マッピングがあるシナリオでのみ、CopyListの使用が役立ちます。 |
コピー操作によるAssignアクティビティのマッピングの場合、引数は、表11-3に示すように、Oracle Enterprise Scheduler submitRequestの入力パラメータに対応します。BPELスキーマがsubmitRequestメッセージ・タイプと異なる場合は、表11-3を参考に、Assignアクティビティのコピー操作を使用して手動で値を移入します。
表11-3 再帰リクエスト発行のWebサービス引数の、BPEL Assignアクティビティに対するマッピング
引数 | 説明 |
---|---|
説明 |
「注文インポート」など、ジョブの非定型発行のコンテキストです。 |
アプリケーション |
アプリケーション名は、ホスティングOracle Enterprise Schedulerアプリケーションのデプロイメント名であるか、または論理アプリケーション名です。 |
JobDefinitionId |
|
パラメータ |
dataType: パラメータの値タイプ( name: Oracle Enterprise Schedulerジョブ定義で定義されているパラメータの名前が含まれている文字列 scope: ジョブ・セットに対してのみ使用される、パラメータの名前付きスコープが含まれた文字列 value: パラメータの値が含まれた要素 |
scheduleID |
|
特定のOracle Enterprise Schedulerジョブに渡す複数のパラメータを定義できます。BPELでOracle Enterprise Schedulerサービス・ペイロードにその他のパラメータを追加する場合は、最初に元のパラメータ要素の「後ろに挿入」を使用してDOMに新しいパラメータ要素を追加し、次に配列サブスクリプトを使用して、新しいパラメータに適切な値を移入する必要があります。必要に応じて繰り返します。
最初に、後ろに挿入操作を使用して、既存のパラメータ要素をコピーおよびクローニングして変数に戻します。これにより、XML配列に2つ目のパラメータ要素が作成されます。たとえば、図11-29を参照してください。
次に、最初のパラメータの値をコピーしたのと同じ方法で、新しいコピー操作を作成し、ダイアログの「To」/「From」領域でパラメータ要素を選択します。ただし、右下隅で、[2] (XML配列は0ではなく1で始まります)を含めるようにXPathパスを変更し、「OK」をクリックします。必要に応じて、各必須パラメータに対して繰り返します。
BPELプロセスで、Oracle Enterprise Scheduler WebサービスsetSubmitArgs()
操作を実行するためのInvokeアクティビティを追加します。
ESSWebServiceを使用して、リクエストに対するsetsubmitArgsを使用するためのInvokeアクティビティを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」を展開し、BPELファイルを選択します。たとえば、BPELProcess1.bpelを選択します。BPELスイムレーンが表示されます。
「コンポーネント・パレット」から、Invokeアクティビティをドラッグ・アンド・ドロップし、callbackClientの前に配置します。
InvokeアクティビティをESSWebServiceにリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。これにより、「Invokeの編集」ダイアログが開きます。
「Invokeの編集」ダイアログで、「操作」フィールドの「setSubmitArgs」を選択します。
「Invokeの編集」ダイアログで、「入力」フィールドの「追加」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力」フィールドの「追加」アイコンを選択します。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「OK」をクリックします。Service1への新しい呼出しリンクが表示されます。
Invokeアクティビティを選択し、名前Invoke_1
をダブルクリックして、テキスト・エントリ・フィールドを選択します。テキスト・エントリ・フィールドで、setSubmitArgs
と入力します。
「コンポーネント・パレット」から、Transformアクティビティをドラッグ・アンド・ドロップして、setSubmitArgsの前に配置します。このトランスフォーメーションにより、BPELフロー入力変数がsetSubmitArgs入力変数にマッピングされます。
トランスフォーメーション・アクティビティが開きます。「トランスフォーメーション」タブで、「ソース」領域の「追加」アイコンをクリックします。「ソース変数」ダイアログが表示されます。
「ソース変数」ダイアログで、「inputVariable」を選択し、「OK」をクリックします。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「ターゲット変数」フィールドでターゲットとして「setSubmitArgs_setSubmitArgs_InputVariable」を選択します。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「マッパー・ファイル」フィールドで、「追加」をクリックして、新しいマッパー・ファイルを作成します。
図11-30に示すように、マッパー・ファイルが作成されます。for-eachコンストラクトは、「コンポーネント・パレット」の「XSLTコンストラクト」領域からアイテムをドラッグして挿入できます。
このトランスフォーメーション・ツールでは、必要な内容が正確に作成されません。XSLTソースを編集する必要があります。ソースで、次のマッピングを検索します。
<xsl:for-each select="/client:BPELProcess1ProcessRequest/client:arguments"> <arguments> <xsl:value-of select="."/> </arguments> </xsl:for-each>
argumentsに修飾子としてtns:を追加してこれを置き換え、次のようなフラグメントにします。このトランスフォーメーション・ツールの「設計」タブで、有効なトランスフォーメーションではないと誤って警告される場合があることに注意してください。
<xsl:for-each select="/client:BPELProcess1ProcessRequest/client:arguments"> <tns:arguments> <xsl:value-of select="."/> </tns:arguments> </xsl:for-each>
例11-2に、完全なトランスフォーメーション・ソース・ファイルを示します。
例11-2 発行引数設定のトランスフォーメーションのトランスフォーメーション・ソース
<?xml version="1.0" encoding="UTF-8" ?> <?oracle-xsl-mapper <!-- SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY. --> <mapSources> <source type="WSDL"> <schema location="../BPELProcess1.wsdl"/> <rootElement name="BPELProcess1ProcessRequest" namespace="http://xmlns.oracle.com/EssWebApplication/ Project1/BPELProcess1"/> </source> </mapSources> <mapTargets> <target type="WSDL"> <schema location="../Service1.wsdl"/> <rootElement name="setSubmitArgs" namespace="http://xmlns.oracle.com/scheduler"/> </target> </mapTargets> <!-- GENERATED BY ORACLE XSL MAPPER 11.1.1.0.0(build 090113.2000.2412) AT [FRI FEB 06 08:27:53 PST 2009]. --> ?> <xsl:stylesheet version="1.0" xmlns:xpath20="http://www.oracle.com/XSL/Transform/java /oracle.tip.pc.services.functions.Xpath20" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/ business-process/" xmlns:client="http://xmlns.oracle.com/EssWebApplication /Project1/BPELProcess1" xmlns:oraext="http://www.oracle.com/XSL/Transform/java/ oracle.tip.pc.services.functions.ExtFunc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dvm="http://www.oracle.com/XSL/Transform/java/ oracle.tip.dvm.LookupValue" xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:med="http://schemas.oracle.com/mediator/xpath" xmlns:mhdr="http://www.oracle.com/XSL/Transform/java/oracle.tip. mediator.service.common.functions .GetRequestHeaderExtnFunction" xmlns:ids="http://xmlns.oracle.com/bpel/services/ IdentityService/xpath" xmlns:tns="http://xmlns.oracle.com/scheduler" xmlns:xdk="http://schemas.oracle.com/bpel/extension /xpath/function/xdk" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xref="http://www.oracle.com/XSL/Transform/java /oracle.tip.xref.xpath.XRefXPathFunctions" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns0="http://xmlns.oracle.com/scheduler/types" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:socket="http://www.oracle.com/XSL/Transform/ java/oracle.tip.adapter.socket.ProtocolTranslator" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" exclude-result-prefixes="xsi xsl client plnk xsd ns0 wsdl tns soap12 soap mime xpath20 bpws oraext dvm hwf med mhdr ids xdk xref ora socket ldap"> <xsl:template match="/"> <tns:setSubmitArgs> <tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client: requestParameters/ns0:parameter"> <ns0:parameter> <ns0:dataType> <xsl:value-of select="ns0:dataType"/> </ns0:dataType> <ns0:name> <xsl:value-of select="ns0:name"/> </ns0:name> <ns0:scope> <xsl:value-of select="ns0:scope"/> </ns0:scope> <ns0:value> <xsl:value-of select="ns0:value"/> </ns0:value> </ns0:parameter> </xsl:for-each> </tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client:arguments"> <tns:arguments> <xsl:value-of select="."/> </tns:arguments> </xsl:for-each> </tns:setSubmitArgs> </xsl:template> </xsl:stylesheet>
BPELプロセスで、Oracle Enterprise Scheduler WebサービスaddPPActions()
操作を実行するためのInvokeアクティビティを追加します。
ESSWebServiceを使用して、addPPActions操作のInvokeアクティビティを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」を展開し、BPELファイルを選択します。たとえば、BPELProcess1.bpelを選択します。BPELスイムレーンが表示されます。
「コンポーネント・パレット」から、Invokeアクティビティをドラッグ・アンド・ドロップし、callbackClientの前に配置します。
Invokeアクティビティを選択し、名前Invoke_1
をダブルクリックして、テキスト・エントリ・フィールドを選択します。テキスト・エントリ・フィールドで、addPPActions
と入力します。
InvokeアクティビティをESSWebServiceにリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。これにより、「Invokeの編集」ダイアログが開きます。
図11-31に示すように、「Invokeの編集」ダイアログで、「操作」フィールドの「addPPActions」を選択します。
「Invokeの編集」ダイアログで、「入力」フィールドの「追加」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力」フィールドの「追加」アイコンを選択します。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「OK」をクリックします。Service1への新しい呼出しリンクが表示されます。
「コンポーネント・パレット」で、Transformアクティビティをドラッグ・アンド・ドロップして、addPPActionsの前に配置します。このトランスフォーメーションにより、BPELフロー入力変数がaddPPActions入力変数にマッピングされます。
トランスフォーメーション・アクティビティが開きます。「トランスフォーメーション」タブで、「ソース」領域の「追加」アイコンをクリックします。「ソース変数」ダイアログが表示されます。
「ソース変数」ダイアログで、「inputVariable」を選択し、「OK」をクリックします。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「ターゲット変数」フィールドでターゲットとして「addPPActions_addPPActions_InputVariable」を選択します。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「マッパー・ファイル」フィールドで、「追加」をクリックして、新しいマッパー・ファイルを作成します。XSLトランスフォーメーション・ファイルが表示されます。
例11-3に示すように、マッピングを作成します。
addPPActionsからのrequestParametersにより、トランスフォーメーションの内容が上書きされます。残りの入力は、依然としてBPELフロー入力変数から取得されます。前の例のように、addPPActions出力変数のrequestParametersReturn/ns2:parameter
を、addPPActions入力変数のrequestParameters/ns2:parameter
に割り当てます。
例11-3 addPPActionsトランスフォーメーション
<?xml version="1.0" encoding="UTF-8" ?> <?oracle-xsl-mapper <!-- SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY. --> <mapSources> <source type="WSDL"> <schema location="../BPELProcess1.wsdl"/> <rootElement name="BPELProcess1ProcessRequest" namespace="http://xmlns.oracle.com/EssWebApplication/Project1/BPELProcess1"/> </source> </mapSources> <mapTargets> <target type="WSDL"> <schema location="../Service1.wsdl"/> <rootElement name="addPPActions" namespace="http://xmlns.oracle.com/scheduler"/> </target> </mapTargets> <!-- GENERATED BY ORACLE XSL MAPPER 11.1.1.0.0(build 090113.2000.2412) AT [FRI FEB 06 10:29:28 PST 2009]. --> ?> <xsl:stylesheet version="1.0" xmlns:xpath20="http://www.oracle.com/XSL/Transform/java/ oracle.tip.pc.services.functions.Xpath20" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:client="http://xmlns.oracle.com/EssWebApplication/Project1/BPELProcess1" xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc. services.functions.ExtFunc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue" xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:med="http://schemas.oracle.com/mediator/xpath" xmlns:mhdr="http://www.oracle.com/XSL/Transform/java/oracle.tip. mediator.service.common.functions.GetRequestHeaderExtnFunction" xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath" xmlns:tns="http://xmlns.oracle.com/scheduler" xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xref="http://www.oracle.com/XSL/Transform/java/ oracle.tip.xref.xpath.XRefXPathFunctions" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns0="http://xmlns.oracle.com/scheduler/types" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:socket="http://www.oracle.com/XSL/Transform/java/oracle.tip. adapter.socket.ProtocolTranslator" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" exclude-result-prefixes="xsi xsl client plnk xsd ns0 wsdl tns soap12 soap mime xpath20 bpws oraext dvm hwf med mhdr ids xdk xref ora socket ldap"> <xsl:template match="/"> <tns:addPPActions> <tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client: requestParameters/ns0:parameter"> <ns0:parameter> <ns0:dataType> <xsl:value-of select="ns0:dataType"/> </ns0:dataType> <ns0:name> <xsl:value-of select="ns0:name"/> </ns0:name> <ns0:scope> <xsl:value-of select="ns0:scope"/> </ns0:scope> <ns0:value> <xsl:value-of select="ns0:value"/> </ns0:value> </ns0:parameter> </xsl:for-each> </tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client:postProcessAction"> <tns:postProcessActions> <ns0:actionName> <xsl:value-of select="ns0:actionName"/> </ns0:actionName> <ns0:actionOrder> <xsl:value-of select="ns0:actionOrder"/> </ns0:actionOrder> <xsl:for-each select="ns0:arguments"> <ns0:arguments> <xsl:value-of select="."/> </ns0:arguments> </xsl:for-each> <ns0:fileMgmtGroup> <xsl:value-of select="ns0:fileMgmtGroup"/> </ns0:fileMgmtGroup> <ns0:description> <xsl:value-of select="ns0:description"/> </ns0:description> <ns0:onError> <xsl:value-of select="ns0:onError"/> </ns0:onError> <ns0:onSuccess> <xsl:value-of select="ns0:onSuccess"/> </ns0:onSuccess> <ns0:onWarning> <xsl:value-of select="ns0:onWarning"/> </ns0:onWarning> </tns:postProcessActions> </xsl:for-each> </tns:addPPActions> </xsl:template> </xsl:stylesheet>
BPELプロセスで、Oracle Enterprise Scheduler WebサービスaddPPActions()
操作を実行するためのInvokeアクティビティを追加します。
例11-4に示すように、次の内容をBPELProcess1.xsd
ファイルに追加して、setStepsArgs
に入力できるようにします。
例11-4 setStepsArgsへの入力の有効化
<xs:element name="stepArgs" type="ns1:stepArgs" minOccurs="0" maxOccurs="unbounded"/>
主要な手順は次のとおりです。
BPELフロー入力変数をsetStepsArgs入力変数にマッピングするためのトランスフォーメーションを作成します。
「BPELアクティビティとコンポーネント」から、「Transform」を選択し、setStepsArgsの前に配置します。新しいトランスフォーメーション・アクティビティが開きます。ソースとして「inputVariable」を選択し、ターゲットとして「setStepsArgs_setStepsArgs_InputVariable」を選択します。新しいマッパー・ファイルを作成します。SetStepsArgs
トランスフォーメーション例のように、マッピングを作成します。
割当てアクティビティを作成します。この例では、前の手順、addPPActionsで取得したrequestParametersで、トランスフォーメーションの内容を上書きします。残りの入力は、依然としてBPELフロー入力変数から取得されます。前の例のように、addPPActions出力変数のrequestParametersReturn/ns2:parameter
をsetStepsArgs入力変数のrequestParameters/ns2:parameter
に割り当てます。
BPELプロセスで、Oracle Enterprise Scheduler WebサービスsubmitRecurringRequest()
操作を実行するためのInvokeアクティビティを追加します。この手順では、値を入力変数および出力変数に割り当てることによって、Invokeアクティビティの入力および出力を選択する必要があります。
setStepsArgs操作を使用するInvokeアクティビティを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、「Project1」の「SOAコンテンツ」を展開し、BPELファイルを選択します。たとえば、BPELProcess1.bpelを選択します。BPELスイムレーンが表示されます。
「コンポーネント・パレット」から、Invokeアクティビティをドラッグ・アンド・ドロップし、callbackClientの前に配置します。
Invokeアクティビティを選択し、名前Invoke_1
をダブルクリックして、テキスト・エントリ・フィールドを選択します。テキスト・エントリ・フィールドで、setStepsArgs
と入力します。
InvokeアクティビティをESSWebServiceにリンクするには、右矢印を選択し、Invokeアクティビティを「パートナ・リンク」の「Service1」にドラッグします。これにより、「Invokeの編集」ダイアログが開きます。
図11-32に示すように、「Invokeの編集」ダイアログで、「操作」フィールドの「setStepsArgs」を選択します。
「Invokeの編集」ダイアログで、「入力」フィールドの「追加」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「出力」フィールドの「追加」アイコンを選択します。「変数の作成」ダイアログが表示されます。
「変数の作成」ダイアログで「OK」をクリックします。
「Invokeの編集」ダイアログで、「OK」をクリックします。Service1への新しい呼出しリンクが表示されます。
「コンポーネント・パレット」で、Transformアクティビティをドラッグ・アンド・ドロップして、setStepsArgsの前に配置します。このトランスフォーメーションにより、BPELフロー入力変数がsetStepsArgs入力変数にマッピングされます。
トランスフォーメーション・アクティビティが開きます。「トランスフォーメーション」タブで、「ソース」領域の「追加」アイコンをクリックします。「ソース変数」ダイアログが表示されます。
「ソース変数」ダイアログで、「inputVariable」を選択し、「OK」をクリックします。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「ターゲット変数」フィールドでターゲットとして「setStepsArgs_setStepsArgs_InputVariable」を選択します。
トランスフォーメーション・アクティビティでは、「トランスフォーメーション」タブの「マッパー・ファイル」フィールドで、「追加」をクリックして、新しいマッパー・ファイルを作成します。XSLトランスフォーメーション・ファイルが表示されます。
割当てアクティビティを作成します。この例では、前の手順、addPPActionsで取得したrequestParametersにより、トランスフォーメーションの内容が上書きされる必要があります。残りの入力は、依然としてBPELフロー入力変数から取得されます。前の例のように、addPPActions出力変数のrequestParametersReturn/ns2:parameterをsetStepsArgs入力変数に割り当てます。
例11-5 ステップ引数設定の操作のためのトランスフォーメーションのマッピング
<?xml version="1.0" encoding="UTF-8" ?> <?oracle-xsl-mapper <!-- SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY. --> <mapSources> <source type="WSDL"> <schema location="../BPELProcess1.wsdl"/> <rootElement name="BPELProcess1ProcessRequest"namespace="http://xmlns. oracle.com/EssWebApplication/Project1/BPELProcess1"/> </source> </mapSources> <mapTargets> <target type="WSDL"> <schema location="../Service1.wsdl"/> <rootElement name="setStepsArgs" namespace="http://xmlns.oracle.com/scheduler"/> </target> </mapTargets> <!-- GENERATED BY ORACLE XSL MAPPER 11.1.1.0.0(build 090113.2000.2412) AT [FRI FEB 06 10:56:22 PST 2009]. --> ?> <xsl:stylesheet version="1.0" xmlns:xpath20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services. functions.Xpath20" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:client="http://xmlns.oracle.com/EssWebApplication/Project1/BPELProcess1" xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services. functions.ExtFunc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue" xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:med="http://schemas.oracle.com/mediator/xpath" xmlns:mhdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.mediator.service. common.functions.GetRequestHeaderExtnFunction" xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath" xmlns:tns="http://xmlns.oracle.com/scheduler" xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath. XRefXPathFunctions" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://xmlns.oracle.com/scheduler/types" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:socket="http://www.oracle.com/XSL/Transform/java /oracle.tip.adapter.socket.ProtocolTranslator" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" exclude-result-prefixes="xsi xsl client plnk xsd ns0 wsdl tns soap12 soap mime xpath20 bpws oraext dvm hwf med mhdr ids xdk xref ora socket ldap"> <xsl:template match="/"> <tns:setStepsArgs> <tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client: requestParameters/ns0:parameter"> <ns0:parameter> <ns0:dataType> <xsl:value-of select="ns0:dataType"/> </ns0:dataType> <ns0:name> <xsl:value-of select="ns0:name"/> </ns0:name> <ns0:scope> <xsl:value-of select="ns0:scope"/> </ns0:scope> <ns0:value> <xsl:value-of select="ns0:value"/> </ns0:value> </ns0:parameter> </xsl:for-each> </tns:requestParameters> <xsl:for-each select="/client:BPELProcess1ProcessRequest/client:stepArgs"> <tns:stepArgsList> <xsl:for-each select="ns0:arguments"> <ns0:arguments> <xsl:value-of select="."/> </ns0:arguments> </xsl:for-each> <ns0:NLSOptions> <ns0:language> <xsl:value-of select="ns0:NLSOptions/ns0:language"/> </ns0:language> <ns0:numericCharacters> <xsl:value-of select="ns0:NLSOptions/ns0:numericCharacters"/> </ns0:numericCharacters> <ns0:territory> <xsl:value-of select="ns0:NLSOptions/ns0:territory"/> </ns0:territory> </ns0:NLSOptions> <xsl:for-each select="ns0:PPActions"> <ns0:PPActions> <ns0:actionName> <xsl:value-of select="ns0:actionName"/> </ns0:actionName> <ns0:actionOrder> <xsl:value-of select="ns0:actionOrder"/> </ns0:actionOrder> <xsl:for-each select="ns0:arguments"> <ns0:arguments> <xsl:value-of select="."/> </ns0:arguments> </xsl:for-each> <ns0:fileMgmtGroup> <xsl:value-of select="ns0:fileMgmtGroup"/> </ns0:fileMgmtGroup> <ns0:description> <xsl:value-of select="ns0:description"/> </ns0:description> <ns0:onError> <xsl:value-of select="ns0:onError"/> </ns0:onError> <ns0:onSuccess> <xsl:value-of select="ns0:onSuccess"/> </ns0:onSuccess> <ns0:onWarning> <xsl:value-of select="ns0:onWarning"/> </ns0:onWarning> </ns0:PPActions> </xsl:for-each> <ns0:stepPath> <xsl:value-of select="ns0:stepPath"/> </ns0:stepPath> </tns:stepArgsList> </xsl:for-each> </tns:setStepsArgs> </xsl:template> </xsl:stylesheet>
Oracle Web Services Managerセキュリティ・ポリシーを使用して、すべてのOracle Enterprise Scheduler Webサービス操作を保護できます。
詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の「WebLogic Webサービスの保護と管理」を参照してください。
Oracle Enterprise Scheduler Webサービスを保護するには、Webサービスをコールするメソッドに1つのセキュリティ・ポリシーをアタッチし、SOAコンポジットに対する非同期コールバックに別のセキュリティ・ポリシーをアタッチします。
注意: Oracle Fusion Applicationsでは、グローバル・ポリシー・アタッチメント(GPA)と呼ばれるOracle WSM機能を使用します。GPAを使用すると、ポリシーはローカルにアタッチされず、グローバル・レベルで指定されます。実行時に、コンポーネントは単にグローバル・ポリシーを継承し、それをOracle WSMが強制します。 すべてのWebサービス・クライアントおよびサーバーで追加する必要があるローカル・ポリシー・アタッチメント(LPA)とは異なり、グローバル・ポリシー・アタッチメント(GPA)は、ドメイン・レベルでアタッチできます。これにより、システム管理者は、ドメイン全体のすべてのWebサービスに対して均一なポリシーを適用できます。 グローバル・ポリシー・アタッチメントの詳細は、Oracle Fusion Applications開発者ガイドの「Webサービスのユースケースの保護」を参照してください。 |
Oracle Enterprise Scheduler Webサービスを保護する手順は、次のとおりです。
Oracle Enterprise Scheduler WebサービスをコールするSOAコンポジットを開きます。
右側のスイムレーンで、Oracle Enterprise Scheduler Webサービスを右クリックし、「WSポリシーの構成」→「リクエスト対象」を選択します。
「SOA WSポリシーの構成」ウィンドウが表示されます。
「セキュリティ」フィールドで、「追加」ボタンをクリックして、セキュリティ・ポリシーをクライアントにアタッチします。
図11-34に示すように、ポリシーoracle/wss11_saml_token_with_message_protection_client_policy
またはoracle/wss11_username_token_with_message_protection_client_policy
を選択し、「OK」をクリックします。
図11-34 Oracle Enterprise Scheduler Webサービスのクライアント・セキュリティ・ポリシー
右側のスイムレーンで、Oracle Enterprise Scheduler Webサービスを右クリックし、「WSポリシーの構成」→「コールバック対象」を選択します。
「SOA WSポリシーの構成」ウィンドウが表示されます。
「セキュリティ」フィールドで、「追加」ボタンをクリックして、セキュリティ・ポリシーをコールバック・メソッドにアタッチします。
図11-35に示すように、ポリシーoracle/wss11_saml_token_with_message_protection_service_policy
を選択し、「OK」をクリックします。
図11-35 Oracle Enterprise Scheduler Webサービスのコールバック・セキュリティ・ポリシー
変更内容をSOAコンポジット・ファイルに保存します。
セキュリティ・ポリシーoracle/wss11_saml_token_with_message_protection_client_policy
により、Oracle Enterprise Scheduler Webサービスをコールするメソッドが保護されます。セキュリティ・ポリシーwss11_saml_token_with_message_protection_service_policy
により、WebサービスがSOAコンポジットのコールバックに使用する非同期コールバック・メソッドが保護されます。
次に、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「SOAコンポジット・アプリケーションのデプロイ」で説明しているように、BPELプロセスをOracle WebLogic Serverにデプロイします。デプロイ後、Oracle SOAコンソールを使用してWebサービスをテストできます。
SOAコンソールから次の手順を使用してWebサービスをテストできます。
ブラウザからWebサービスに直接アクセスすることによってWebサービス操作を起動することはサポートされていません。
Webサービスをテストする手順は、次のとおりです。
ブラウザを開き、次のURLにあるSOAコンソールに移動します。
http://<machine>:<port>/soa-console
「アプリケーション」領域で、デプロイされたコンポジットを選択します。
「テスト」ドロップダウンをクリックして、サービス・エンドポイント・テスト・クライアントを選択します。
これは、入力をBPELプロセスに提供できるエンドポイント・ページです。
「ペイロード」領域で、ジョブ・パラメータの値を入力します。
「起動」をクリックします。
コンソール・ページをリフレッシュします。
最新のインスタンスIDをクリックして、BPELファイルの進行状況を確認します。