...

Oracle® SOA Suite

by user

on
Category: Documents
19

views

Report

Comments

Transcript

Oracle® SOA Suite
Oracle® SOA Suite
新機能
10g(10.1.3.3)
E10381-02
2007 年 9 月
本ドキュメントでは、Oracle SOA Suite 10.1.3.3 のパッチ・セットで使用できる新機能につ
いて説明します。
このドキュメントには、以下のトピックが含まれます。
カスタムWorklistアプリケーションのデプロイおよびSSOの有効化
ワークフロー標準ビュー定義の変更
Oracle Workflowの新しいデータベース・ビュー
ファイル/FTPアダプタの新機能
MQSeriesアダプタの新機能
データベース・アダプタの新機能
AQアダプタの新機能
JMSアダプタの新機能
インバウンド・アダプタ・エンドポイントのOracle ESBのSingleton動作
Ilog JRulesの意思決定サービス・サポート
障害管理フレームワーク
参照: このパッチ・セットに含まれる他のドキュメントは、以下のとおりで
す。
『Oracle Application Server Patch Set Notes Addendum』(パッチ・セットの
既知の問題の詳細)
『Oracle Application Server Patch Set Notes』(パッチ・セットの適用の詳
細)
『Oracle Application Server Fixed Bugs List』(パッチ・セットで修正された
バグの詳細)
カスタム Worklist アプリケーションのデプロイおよび
SSO の有効化
10.1.3.1 におけるカスタム Oracle BPEL Worklist アプリケーション(Worklist アプリケー
ション)のデプロイと Worklist アプリケーションのシングル・サインオン(SSO)の有効
化には、多くの回避策が必要でした。10.1.3.3 で導入されたバグの修正によって、このプ
ロセスが大幅に簡素化されます。この項では、カスタム Worklist アプリケーションのデプ
ロイと事前にインストールされた Worklist アプリケーションでの SSO の有効化のための変
更プロセスについて説明します。
1
カスタム Worklist アプリケーションのデプロイ
サンプルのWorklistアプリケーションでは最上位のディレクトリに、アプリケーションを構
築およびデプロイするAntスクリプトのbuild.xmlが含まれます。このAntスクリプトは、同じ
ディレクトリに存在するorabpel.propertiesプロパティ・ファイルを使用します。
カスタム Worklist アプリケーションを構築およびデプロイする方法を以下に示します。
1.
orabpel.propertiesのすべてのプロパティが更新されて環境に反映されているこ
とを確認します。
2.
オペレー ティ ング・シス テ ムのコマン ド ・プロンプ ト で、カスタ マ イズされた
Worklistアプリケーションを構築およびデプロイします。
ant deploy.oc4j
Java シングル・サインオン(JSSO)対応のカスタム Worklist アプリケーションにする
場合は、ant deploysso.oc4j を実行します。
3.
以下の URL を使用して、カスタマイズされた Worklist アプリケーションにアクセスし
ます。
http://host:port/integration/customapp/
4.
Worklist アプリケーションにログインします。
タスク・リスト・ページが表示されます。
Worklist アプリケーションでのシングル・サインオンの有効化
10.1.3.3 の Worklist アプリケーションは、デフォルトで、独自のログイン・ページを利用
したカスタム認証メカニズムを使用します。事前にインストールした Worklist アプリケー
ションは、OC4J コンテナ・セキュリティでは実行されず、JSSO 対応ではありません。
カスタムWorklistアプリケーションをデプロイする場合、JSSOを有効にするか、Worklistア
プリケーション・ログイン・ページでデプロイできます(2 ページの"カスタムWorklistア
プリケーションのデプロイ"を参照)。また、事前にインストールしたWorklistアプリケー
ションをJSSO対応に再構成できます。この項では、このタスクの実行方法について説明し
ます。
JSSO は複数のレルムをサポートしていないので注意してください。複数のレルムで構成
される ID プロバイダを使用している場合、JSSO 対応の Worklist アプリケーションの使用
は推奨しません。
以下のトピックについて説明します。
タスク 1:Worklistアプリケーションのweb.xmlの更新
タスク 2:Oracle Enterprise Manager 10g Application Server Control ConsoleでのWorklist
アプリケーションのJSSOの有効化
タスク 1:Worklist アプリケーションの web.xml の更新
1.
SOA_ORACLE_HOME¥j2ee¥home¥applications¥hw_services¥worklistapp¥W
EB-INFディレクトリへ移動します。
2.
web.xmlファイルをwebnonsso.xmlファイルにコピーします(これによって、変更
をいつでも元に戻すことができます)。
3.
websso.xmlファイルをweb.xmlファイルにコピーします。これによって、Worklist
アプリケーションのコンテナ管理セキュリティを有効にできます。
2
タスク 2:Oracle Enterprise Manager 10g Application Server Control
Console での Worklist アプリケーションの JSSO の有効化
1.
SOA インスタンスをホストしている OC4J サーバーの Oracle Enterprise Manager 10g
Application Server Control Console を起動します。
2.
「Administration」タブをクリックします。
3.
「SSO Configuration」タスクをクリックします。
4.
「Participating Applications」タブをクリックします。
5.
hw_services の横のチェック・ボックスをクリックします。
6.
「Apply」をクリックします。
7.
サーバーを再起動します。
事前にインストールした Worklist アプリケーションにアクセスすると、Worklist アプ
リケーション・ログイン・ページではなく JSSO ログイン・ページが表示されます。
ワークフロー標準ビュー定義の変更
ワークフロー・サービスには、多くの標準ビュー定義が含まれます。これらのビューは、
ユーザーのタスク・リストに対する標準的な問合せを定義し、すべてのユーザーが使用で
きます。また、Worklist アプリケーションで表示され、ユーザー・メタデータ・サービス
を通じて問合せを実行できます。
これらのビューは便利ですが、既存の標準ビュー定義の変更または独自の標準ビューの作
成が頻繁に行われます。Worklist アプリケーションとユーザー・メタデータ・サービスは、
この実行方法を提供しません。
ワークフロー・サービスに含まれる標準ビューは、ワークフロー・サービスのクラス・パ
スからロードされるStandardTaskViews.xmlというXMLファイルに定義されます。このファ
イルの内容は、5 ページの"StandardTaskViews.xmlの内容"に記載されています。
既存のビューの編集または新しいビューの追加によって、このファイルの内容を変更でき
ます。このファイルの編集されたバージョンを以下のディレクトリに配置してください。
SOA_ORACLE_
HOME¥bpel¥system¥classes¥oracle¥bpel¥services¥workflow¥user¥config¥
サーバーが再起動すると、新しい標準ビュー定義がロードされます。
新しい標準ビューを定義すると、既存の標準ビューをガイドラインとして使用できます。
次の XML 要素によって、ビューが定義されます。
<id>- 標準ビューIDは、一意にする必要があります。また、ORCL_WF_STD_VIEWか
ら開始する必要があります。
<name> - 標準ビューに与えられる名前。
<owner> - 標準ビューには使用されません。別の標準ビューのダミーのowner要素を
コピーしてください。
<hidden>- これはfalseにする必要があります。
<description> - ビューの簡単な説明です。
3
<viewColumns> - 表示するビューの列のリスト。要素には、1 つ以上の<column>
要素が含まれます。各<column>要素には、オプションの<displayName>要素とと
もに列の名前を指定する<columnName>要素が含まれます。値が<displayName>に
指定されると、Worklistアプリケーションで使用されるデフォルトの列ヘッダーが上
書きされます。
<viewOptionalInfo> - 各タスクの許可されたアクションのドロップダウン・リス
トを含む列がビューに表示される場合、この要素には、ファイルにすでにリストされ
ているビューで指定されたActions値を持つ<taskOptionalInfo>要素が含まれます。
表示されない場合、<viewOptionalInfo>要素は空です。
<viewPredicate> - ビューの問合せ条件を定義します。以下の要素を格納できます。
-
assignmentFilter - この要素は必須です。以下の値のいずれかを含む必要があ
ります。
*
My
*
My+Group
*
Group
*
Owner
*
Previous
*
Reportees
-
<keywords> - ビューでは、オプションでキーワードを指定できます。タスク属
性(タスク・タイトル、IDキー、タスクのすべてのテキスト属性列、およびタス
ク番号(キーワードが数値の場合のみ))のいずれかが特定の文字列を含む場合、
ビューはタスクをフィルタリングします。
-
<clause> - ビューでは、タスクをフィルタリングする 1 つ以上の条件句をオプ
ションで指定できます。ORまたはANDのjoinOperatorを各<clause>に指定
できます。各<clause>要素には、以下が含まれます。
*
<column> - タスクの列の名前。
*
<operator> - 条件に使用されるオペレータ。使用できるオペレータは、列
の型に依存します。
列が文字列の場合:eq(等しい)、neq(等しくない)、begins、not_begins、
ends、not_ends、like、not_like、contains、not_contains、is_null、
is_not_null、in、およびnot_in
数値の列の場合:eq(等しい)、neq(等しくない)、lt(より小さい)、
lte(以下)、gt(より大きい)、gte(以上)、is_null、is_not_null、
in、およびnot_in
日付の列の場合:eq(等しい)、neq(等しくない)、lt(より小さい)、
lte(以下)、gt(より大きい)、gte(以上)、is_null、is_not_null、
next_n_days、およびlast_n_days
*
<value> - 列とオペレータに関連する値。以下の例外に注意してください。
is_nullおよびis_not_nullオペレータに値を指定する必要はありません。
4
inまたはnot_inオペレータを使用する場合、代わりに<valueList>要素
を使用します。<valueList>要素には、inまたはnot_in結合に指定する
値を含む 1 つ以上の<value>要素が含まれる必要があります。
日付の列を使用する場合、next_n_daysまたはlast_n_daysオペレータの
代わりに<dateValue>要素を使用します。これには、xsd:dateTimeで指
定された句に必要な日付が含まれる必要があります。
<viewOrdering> - ビューでは、1 つ以上の順序付けの<clause>要素を使用して、
タスクの順序付け方法を指定できます。各<clause>要素には、以下が含まれます。
-
<column> - 順序を付ける列の名前
-
<sortOrder> - 昇順または降順
-
<nullFirst> - 順序付けの最初または最後に表示されるNULL値(trueまたは
false)
<chart> - これはWorklistアプリケーションでは使用されません。
flexフィールドのフィルタを表示するビューを定義する場合、属性ラベル名ではなくflex
フィールドの列名(TextAttribute1など)を使用します。ビューでflexフィールドの列
を表示する場合にWorklistアプリケーションで適切な属性ラベル名を決定できるように、
flexフィールド・マッピングのタスク・タイプであるtaskDefinitionIdのビューの句も
指定します。以下に例をあげます。
<clause>
<column>taskDefinitionId</column>
<operator>eq</operator>
<value>[the task definition id]</value>
<clause>
または、<displayName>要素を使用して、列の表示名を定義できます。
StandardTaskViews.xml の内容
こ の 項 で は 、 StandardTaskViews.xml フ ァ イ ル の 内 容 を 示 し ま す 。 内 容 を 独 自 の
StandardTaskViews.xmlファイルにコピーし、編集して標準ビューに変更を加えます。
<StandardTaskViews>
<!--High Priority Tasks -->
<userViewDetail viewType="VIEW"
xmlns="http://xmlns.oracle.com/bpel/workflow/userMetadata">
<id>ORCL_WF_STD_VIEW_HIGH_PRIORITY_TASKS</id>
<name>STD_VIEW_HIGH_PRIORITY_TASKS</name>
<owner type="USER">
<realm
xmlns="http://xmlns.oracle.com/bpel/workflow/common">iPlanetRealm</realm>
<name
xmlns="http://xmlns.oracle.com/bpel/workflow/common">oc4jadmin</name>
</owner>
<hidden>false</hidden>
<description>High Priority Tasks (Priority IsEq 5)</description>
<viewColumns>
<column>
<columnName>taskNumber</columnName>
5
<displayName></displayName>
</column>
<column>
<columnName>title</columnName>
<displayName></displayName>
</column>
<column>
<columnName>priority</columnName>
<displayName></displayName>
</column>
<column>
<columnName>State</columnName>
<displayName></displayName>
</column>
<column>
<columnName>createdDate</columnName>
<displayName></displayName>
</column>
<column>
<columnName>expirationDate</columnName>
<displayName></displayName>
</column>
</viewColumns>
<viewOptionalInfo>
<taskOptionalInfo xmlns="http://xmlns.oracle.com/bpel/workflow/
taskQuery">Actions</taskOptionalInfo>
</viewOptionalInfo>
<viewPredicate>
<assignmentFilter xmlns="http://xmlns.oracle.com/bpel/workflow/
taskQuery">My+Group</assignmentFilter>
<keywords
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery"></keywords>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>priority</column>
<operator>lte</operator>
<value>2</value>
</clause>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>state</column>
<operator>eq</operator>
<value>ASSIGNED</value>
</clause>
</viewPredicate>
<viewOrdering>
<clause xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>expirationDate</column>
<sortOrder>ascending</sortOrder>
<nullFirst>false</nullFirst>
</clause>
</viewOrdering>
<chart>
<groupByColumn>state</groupByColumn>
</chart>
</userViewDetail>
<!-- Due Soon -->
6
<userViewDetail viewType="VIEW"
xmlns="http://xmlns.oracle.com/bpel/workflow/userMetadata">
<id>ORCL_WF_STD_VIEW_TASKS_DUE_SOON</id>
<name>STD_VIEW_TASKS_DUE_SOON</name>
<owner type="USER">
<realm
xmlns="http://xmlns.oracle.com/bpel/workflow/common">iPlanetRealm</realm>
<name
xmlns="http://xmlns.oracle.com/bpel/workflow/common">oc4jadmin</name>
</owner>
<hidden>false</hidden>
<description>Due Soon (expires within next 24 hours)</description>
<viewColumns>
<column>
<columnName>taskNumber</columnName>
<displayName></displayName>
</column>
<column>
<columnName>title</columnName>
<displayName></displayName>
</column>
<column>
<columnName>priority</columnName>
<displayName></displayName>
</column>
<column>
<columnName>State</columnName>
<displayName></displayName>
</column>
<column>
<columnName>createdDate</columnName>
<displayName></displayName>
</column>
<column>
<columnName>expirationDate</columnName>
<displayName></displayName>
</column>
</viewColumns>
<viewOptionalInfo>
<taskOptionalInfo xmlns="http://xmlns.oracle.com/bpel/workflow/
taskQuery">Actions</taskOptionalInfo>
</viewOptionalInfo>
<viewPredicate>
<assignmentFilterxmlns="http://xmlns.oracle.com/bpel
/workflow/taskQuery">My+Group</assignmentFilter>
<keywords
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery"></keywords>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>expirationDate</column>
<operator>next_n_days</operator>
<value>1</value>
</clause>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>state</column>
<operator>eq</operator>
<value>ASSIGNED</value>
</clause>
7
</viewPredicate>
<viewOrdering>
<clause xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>priority</column>
<sortOrder>descending</sortOrder>
<nullFirst>false</nullFirst>
</clause>
</viewOrdering>
<chart>
<groupByColumn>priority</groupByColumn>
</chart>
</userViewDetail>
<!--New Tasks -->
<userViewDetailviewType="VIEW"
xmlns="http://xmlns.oracle.com/bpel/workflow/userMetadata">
<id>ORCL_WF_STD_VIEW_NEW_TASKS</id>
<name>STD_VIEW_NEW_TASKS</name>
<owner type="USER">
<realm
xmlns="http://xmlns.oracle.com/bpel/workflow/common">iPlanetRealm</realm>
<name
xmlns="http://xmlns.oracle.com/bpel/workflow/common">oc4jadmin</name>
</owner>
<hidden>false</hidden>
<description>New Tasks (created within past 24 hours)</description>
<viewColumns>
<column>
<columnName>taskNumber</columnName>
<displayName></displayName>
</column>
<column>
<columnName>title</columnName>
<displayName></displayName>
</column>
<column>
<columnName>priority</columnName>
<displayName></displayName>
</column>
<column>
<columnName>State</columnName>
<displayName></displayName>
</column>
<column>
<columnName>createdDate</columnName>
<displayName></displayName>
</column>
<column>
<columnName>expirationDate</columnName>
<displayName></displayName>
</column>
</viewColumns>
<viewOptionalInfo>
<taskOptionalInfo xmlns="http://xmlns.oracle.com/bpel/workflow/
taskQuery">Actions</taskOptionalInfo>
</viewOptionalInfo>
<viewPredicate>
<assignmentFilter xmlns="http://xmlns.oracle.com/bpel/workflow/
taskQuery">My+Group</assignmentFilter>
8
<keywords xmlns="http://xmlns.oracle.com/bpel/
workflow/taskQuery"></keywords>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>createdDate</column>
<operator>last_n_days</operator>
<value>1</value>
</clause>
<clause joinOperator="AND"
xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>state</column>
<operator>eq</operator>
<value>ASSIGNED</value>
</clause>
</viewPredicate>
<viewOrdering>
<clause xmlns="http://xmlns.oracle.com/bpel/workflow/taskQuery">
<column>priority</column>
<sortOrder>descending</sortOrder>
<nullFirst>false</nullFirst>
</clause>
</viewOrdering>
<chart>
<groupByColumn>priority</groupByColumn>
</chart>
</userViewDetail>
</StandardTaskViews>
Oracle Workflow の新しいデータベース・ビュー
この項では、Oracle Workflow サービス・スキーマの問合せを実行してレポートを取得する
ために追加されたデータベース・ビューについて説明します。次の表は、Worklist アプリ
ケーションで公開されるレポートとこれらのレポートに対応するデータベース・ビューを
示しています。
既存の Worklist レポート
対応するデータベース・ビュー
無人タスク・レポート
WFUNATTENDEDTASKS_VIEW
タスク・サイクル時間レポート
WFTASKCYCLETIME_VIEW
タスク生産性レポート
WFPRODUCTIVITY_VIEW
タスク優先順位レポート
WFTASKPRIORITY_VIEW
注:これらのレポートの詳細は、『Oracle BPEL Process Manager 開発者ガイド』
の Worklist アプリケーション・ドキュメントを参照してください。
次の項では、サンプルを使用して、各データベース・ビューを説明します。
無人タスク・レポート・ビュー
タスク・サイクル時間レポート・ビュー
タスク生産性レポート・ビュー
タスク優先順位レポート・ビュー
9
無人タスク・レポート・ビュー
ビュー名:WFUNATTENDEDTASKS_VIEW
ビューの説明:
名前
型
TASKID1
VARCHAR2(64)
TASKNAME
VARCHAR2(200)
TASKNUMBER
NUMBER
CREATEDDATE
DATE
EXPIRATIONDATE
DATE
STATE
VARCHAR2(100)
PRIORITY
NUMBER
ASSIGNEEGROUPS
VARCHAR2(2000)
1
NOT NULL列
サンプル
有効期限が来週の無人タスクの問合せ
SELECT tasknumber, taskname, assigneegroups FROM WFUNATTENDEDTASKS_VIEW
WHERE expirationdate > current_date AND expirationdate < current_date +
7;
mygroup の無人タスクの問合せ
SELECT tasknumber, taskname, assigneegroups FROM WFUNATTENDEDTASKS_VIEW
WHERE 'mygroup' IN assigneegroups;
過去 30 日間に作成された無人タスクの問合せ
SELECT tasknumber, taskname, assigneegroups FROM WFUNATTENDEDTASKS_VIEW
WHERE createddate > current_date -30;
タスク・サイクル時間レポート・ビュー
ビュー名:WFTASKCYCLETIME_VIEW
ビューの説明:
名前
TASKID
型
1
VARCHAR2(64)
TASKNAME
VARCHAR2(200)
TASKNUMBER
NUMBER
CREATEDDATE
DATE
ENDDATE
DATE
CYCLETIME
NUMBER(38)
1
NOT NULL列
10
サンプル
過去 30 日間に作成された完了タスクの平均的なサイクル時間(タスク完了時間)の
計算
SELECT avg(cycletime) FROM WFTASKCYCLETIME_VIEW WHERE createddate >
(current_date - 30);
過去 30 日間に作成されたすべての完了タスクの平均的なサイクル時間の問合せとタ
スク名によるグループ化
SELECT taskname, avg(cycletime) FROM WFTASKCYCLETIME_VIEW WHERE
createddate > (current_date - 30) GROUP BY taskname;
各タスクを処理する最小時間および最大時間の問合せ
SELECT taskname, min(cycletime), max(cycletime) FROM WFTASKCYCLETIME_VIEW
GROUP BY taskname;
過去 7 日間に完了したタスクの平均的なサイクル時間の計算
SELECT avg(cycletime) FROM WFTASKCYCLETIME_VIEW WHERE enddate >
(current_date - 7);
7 日以上費やして完了したタスクの問合せ
SELECT taskname, avg(cycletime) FROM WFTASKCYCLETIME_VIEW WHERE cycletime
> ((current_date +7) - current_date) GROUP BY taskname;
タスク生産性レポート・ビュー
ビュー名:WFPRODUCTIVITY_VIEW
ビューの説明:
名前
型
TASKNAME
VARCHAR2(200)
TASKID
VARCHAR2(200)
TASKNUMBER
NUMBER USERNAME VARCHAR2(200)
STATE1
VARCHAR2(100)
LASTUPDATEDDATE
DATE
1
完了したタスクの状態はNULLです。問合せにdecode(outcome, '', 'COMPLETED',outcome)を使
用してください。
サンプル
ユーザーが過去 30 日間に更新した一意なタスクの数のカウント
SELECT username, count(distinct(taskid)) FROM WFPRODUCTIVITY_VIEW WHERE
lastupdateddate > (current_date -30) GROUP BY username;
ユーザーが過去 7 日間に更新(1 つのタスクが何度も更新されている可能性がありま
す)したタスクの数のカウント
SELECT username, count(taskid) FROM WFPRODUCTIVITY_VIEW WHERE
11
lastupdateddate > (current_date -7) GROUP BY username;
ユーザーが操作した各タスク・タイプの数のカウント
SELECT username, taskname, count(taskid) FROM WFPRODUCTIVITY_VIEW GROUP
BY username, taskname;
ユーザーが過去 100 日間に操作した各タスク・タイプの数のカウント
SELECT username, taskname, count(taskid) FROM WFPRODUCTIVITY_VIEW WHERE
lastupdateddate > (current_date -100) GROUP BY username, taskname;
タスク優先順位レポート・ビュー
ビュー名:WFTASKPRIORITY_VIEW
ビューの説明:
名前
型
TASKID1
VARCHAR2(64)
TASKNAME
VARCHAR2(200)
TASKNUMBER
NUMBER
PRIORITY
NUMBER
OUTCOME
VARCHAR2(100)
ASSIGNEDDATE
DATE
UPDATEDDATE
DATE
UPDATEDBY
VARCHAR2(64)
1
NOT NULL列
サンプル
それぞれのタスクの優先順位で各ユーザーが更新したタスクの数の問合せ
SELECT updatedby, priority, count(taskid) FROM WFTASKPRIORITY_VIEW GROUP
BY updatedby, priority;
タスクと結果の配布の問合せ
SELECT taskname, decode(outcome, '', 'COMPLETED', outcome), count
(taskid) FROM WFTASKPRIORITY_VIEW GROUP BY taskname, outcome;
それぞれの優先順位で特定のユーザーが更新したタスクの数の問合せ
SELECT priority, count(taskid) FROM WFTASKPRIORITY_VIEW WHERE
updatedby='jstein' GROUP BY priority;
ファイル/FTP アダプタの新機能
この項では、ファイル/FTP アダプタの新機能について説明します。以下のトピックについ
て説明します。
既存のファイルへのファイルの追加
12
Oracle BPEL Process Managerの大規模なペイロードの送信
Oracle BPEL Process Managerのアウトバウンド操作からのファイル名の読取り
拒否されるメッセージのサイズの制御
アウトバウンド・パートナ・リンクのネーミング規則の一部として時間パターンを使
用する場合の一意なファイル名の指定
既存のファイルへのファイルの追加
ファイル/FTPアダプタを使用する場合、アウトバウンド・インタラクションを構成して、
ファイルを既存のファイルに追加できます。ファイルに追加するには、ファイル/FTPアダ
プタのInteractionSpecにAppend="true"を追加します。
注:FTPアダプタでこの機能を正しく使用するには、宛先のFTPサーバーでRFC
959 APPEコマンドをサポートする必要があります。
以下の構文は、アウトバウンド・ディレクトリの同じファイルに追加する方法を示してい
ます。
<jca:operation
FileType="ascii"
PhysicalDirectory="/home/adapter/out"
. . .
FileNamingConvention="MyOutputFile.txt"
NumberMessages="1"
. . .
. . .
Append="true"
>
WSDL(前の構文のとおり)またはヘッダーでファイル名を指定できます。
Oracle BPEL Process Manager の大規模なペイロードの送信
大規模なペイロードをサポートする 2 つの新しいオプションがあります。
Oracle BPEL Process Managerの添付サポート
XMLデバッチ
Oracle BPEL Process Manager の添付サポート
この機能は、Oracle BPEL Process Manager でのみ使用できます。通常、この機能を使用し
て、10MB 以上のデバッチできないファイルを処理します。
以下の例は、ファイルを変換せずにソースから宛先に送信する方法を示しています。
注:この例では、XSDファイルにattachment.xsdと名前を付けてください。
アダプタを構成して添付としてファイルを公開するには、以下の手順を実行する必要があ
ります。
13
1.
以下のスキーマを BPEL プロジェクトにインポートまたは追加します。名前空間には、
完全に同じ名前を使用する必要があります。
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/attachment/"
elementFormDefault="qualified">
<element name="attachmentElement">
<complexType>
<attribute name="href" type="string"/>
</complexType>
</element>
</schema>
2.
attachment.xsdを使用して、インバウンド・ファイル・アダプタのパートナ・リ
ンクを作成します。
3.
インバウンド・パートナ・リンクのアダプタWSDLファイルに新しいアクティブ化パ
ラメータ(AsAttachment="true")を追加します。
4.
同じattachment.xsdファイルを使用して、アウトバウンド・ファイル・アダプタ
のパートナ・リンクを作成します。
14
5.
ソースとターゲットのパートナ・リンク間のhref属性をコピーする割当て文を追加
します。
15
注:送信操作が失敗する場合は、以下の手順を実行します。
SOA_ORACLE_HOME¥j2ee¥MIDDLE_TIER¥configのtransactionmanager.xmlのトランザクション・タイムアウトを増やします。
SOA_ORACLE_HOME¥j2ee¥MIDDLE_TIER¥application-deployments¥
orabpel¥ejb_ob_engineのorion-ejb-jar.xmlのタイムアウトを増や
します。
XML デバッチ
この機能は、Oracle BPEL Process Manager および Oracle Enterprise Service Bus で使用できま
す。この機能を使用すると、大規模な XML ファイルとネイティブ・ファイルをデバッチ
できます。XML 以外(フラット・ファイル)の形式を仮定した 10.1.2 のデバッチ機能と
異なり、10.1.3.3 の XML デバッチは XML ドキュメントに直接対応します。XML デバッ
チを設定するには、XML プル解析ライブラリ(StaX)のダウンロードおよび構成が必要
です。
1.
次の URL へ移動します。
http://jcp.org/aboutJava/communityprocess/final/jsr173/in
dex.html
2.
"リファレンス実装"の項へ移動し、使用できるリファレンス実装から選択します。
3.
API(jsr173_1.0_api.jar)およびRI(jsr173_1.0_ri.jar)をダウンロード
します。これらのJARファイルは、XMLファイルのデバッチにのみ使用されます。
XML以外のファイルのデバッチには、これらのファイルを使用しません。
4.
両方のJARファイルをSOA_ORACLE_HOME¥bpel¥libにコピーします。
5.
SOA_ORACLE_HOME¥j2ee¥MID_TIER¥configのserver.xmlの両方 のJARファイ
ルをoracle.bpel.common共有ライブラリに登録します。
<shared-library name="oracle.bpel.common" version="10.1.3">
. . .
. . .
<code-source path="C:¥product¥bpel¥lib¥jsr173_1.0_api.jar"/>
<code-source path="C:¥product¥bpel¥lib¥jsr173_1.0_ri.jar"/>
. . .
. . .
</shared-library>
6.
PublishSizeパラメータを設定して、インバウンド・ファイル/FTPアダプタのパー
トナ・リンクのデバッチを有効化します。
<jca:operation
PhysicalDirectory=" ¥in"
ActivationSpec="oracle.tip.adapter.file.inbound.FileActivationSpec"
. . .
. . .
PublishSize="1"
. . .
. . .
>
</jca:operation>
16
注:ダウンロードしたリファレンス実装にjsr173.zipなどの単一のファイルが
表 示 さ れ る 場 合 、 フ ァ イ ル か ら API ( jsr173_1.0_api.jar ) お よ び RI
(jsr173_1.0_ri.jar)を抽出してください。
Oracle BPEL Process Manager のアウトバウンド操作からのファイル名
の読取り
アウトバウンド・インタラクションの後にファイル名とディレクトリ名を読み取ることが
できます。
以下の例は、書込み操作後に作成されたファイルの名前を読み取る方法を示しています。
1.
アウトバウンド・ファイル/FTPアダプタのプロセスWSDLファイルを編集して、イン
タラクション後のファイル名を受信します。アウトバウンド・ヘッダー・タイプの出
力メッセージをportTypeに追加します。名前空間の接頭辞(hdr)がWSDLファイ
ルにすでに定義されているので注意してください。
<portType name="Write_ptt">
<operation name="Write">
<input message="tns:PurchaseOrder_msg"/>
<output message="hdr:OutboundHeader_msg"/>
</operation>
</portType>
2.
BPEL ファイルのアウトバウンド・ヘッダー・タイプの変数を手動で作成します。名
前空間が変更される可能性があります。
<variable name="Invoke_1_Write_OutputVariable"
messageType="ns3:OutboundHeader_msg"/>
3.
起動アクティビティのアウトバウンド変数としてこの変数を使用します。
<invoke name="Invoke_1" partnerLink="FileOut"
portType="ns2:Write_ptt" operation="Write"
inputVariable="Invoke_1_Write_InputVariable"
outputVariable="Invoke_1_Write_OutputVariable"/>
拒否されるメッセージのサイズの制御
インバウンド・ファイル/FTP アダプタのパートナ・リンクの以下のエンドポイント・プロ
パティを指定して、拒否されるメッセージのサイズを制御できます。
この例では、実際のファイルが大きすぎるので、100行を拒否しています。
oracle.tip.adapter.file.debatching.rejection.quantum="100"
設定可能な値は、0、EOF、負ではない数値です。
注:エンドポイント・プロパティを指定しない場合、メッセージ・ファイル全体
(または、メッセージ・ファイルから利用できる内容)が拒否されます。
17
アウトバウンド・パートナ・リンクのネーミング規則の一部として時間
パターンを使用する場合の一意なファイル名の指定
アウトバウンド・パートナ・リンクのファイルのネーミング規則の一部として時間パター
ンを使用すると、メッセージが失われます。これは、同じタイム・スタンプで作成された
メッセージが相互に上書きされるからです。
ファイルのネーミング規則を組み合わせると、この問題を回避できます。たとえば、
%yyMMddHHmmssSSz%__%SEQ%_OrderBookings.xmlを指定できます。これによって、
ファイル名が一意になります。
注:これは、NumberMessages="1"などのバッチ以外の事例にのみ有効です。
MQSeries アダプタの新機能
この項では、MQSeries アダプタの新機能について説明します。以下のトピックについて説
明します。
MQSeriesアダプタの廃止予定の機能
アウトバウンド同期-請求-要求-応答のシナリオ
アウトバウンド・デキュー・シナリオ
インバウンド・メッセージングのプロパティ
ActivationおよびInteractionSpecプロパティ名への変更
BPELプロセスの複数のキューのポーリング
接続のバインディング・モードの有効化
MQSeries アダプタの廃止予定の機能
インバウンド・アダプタ方向でメッセージを取得するポーリング・モードのサポート
は、廃止予定です。
ブロッキング・デキュー・モードは、キューからメッセージを取得するために使用さ
れています。ブロッキング・デキュー・モードの実行中、アダプタは、キューをポー
リングしないでキューに到着するメッセージを待機します。この機能には、パフォー
マンスの利点があります。
優先順位に基づくメッセージのフィルタリングは、MQSeries自体のネイティブ・サ
ポート機能ではありません。このため、この機能のアダプタ機能は、廃止予定です。
10.1.3.1 から 10.1.3.3 にプロジェクトを移行している場合、FilteredByPriorityプ
ロパティがインバウンド・アダプタ方向でactivationSpecから削除されているこ
とを確認してください。
アウトバウンド同期-請求-要求-応答のシナリオ
10.1.3.3 のMQSeriesアダプタは、複数のInteractionSpecプロパティを使用して、アウ
トバウンド同期-請求-要求-応答のシナリオをサポートします。このシナリオで、アダプタ
は、通常/要求メッセージのエンキューを行って、レポート/リプライの同期を要求します。
レポート/リプライのメッセージは、通常/要求メッセージのreplyToQueueNameで到着し
ます。
18
アウトバウンド同期-請求-要求-応答のシナリオのInteractionSpecプロパティは、以下
のとおりです。
SyncSolicitReqRes - このプロパティに設定できる値は、trueまたはfalseです。
同期-請求-要求-応答のシナリオには、このプロパティをtrueに設定します。同期-請
求-要求-応答のシナリオを使用している場合、このプロパティは必須です。
ResponseWaitInterval - このプロパティに設定できる値は、間隔値(>=0)です。
これは、レポート/リプライがreplyToQueueNameに到着するまでアダプタが待機す
るミリ秒単位の時間です。このプロパティのデフォルト値は、0ミリ秒です。この値
を変更できますが、値をアウトバウンド・アクティビティのタイムアウト未満にする
必要があります。レポート/リプライのメッセージが指定された時間に到着しない場合、
アダプタは、例外をスローします。このプロパティは必須ではありません。
ResponseOpaqueSchema - このプロパティに設定できる値は、trueまたはfalse
です。レポート/リプライのメッセージが不透明なペイロードを持つ場合、このプロパ
ティをtrueに設定します。このプロパティは必須ではありません。このプロパティの
デフォルト値はfalseです。
次の例を使用して、この機能を説明します。
例 1:通常メッセージのエンキューおよびメッセージのデキュー
この例は、通常メッセージのエンキューおよびCOAレポート・メッセージのデキューを行
う方法を示しています。レポートは、5000ミリ秒以内に到着する必要があります。レ
ポート・メッセージには、不透明なペイロードがあります。WSDLファイルの一部を以下
に表示します。
<jca:operation
InteractionSpec="oracle.tip.adapter.mq.outbound.InteractionSpecImpl"
QueueName="Request_Queue"
MessageType="NORMAL"
MessageFormat="NONE"
Priority="AS_Q_DEF"
Persistence="AS_Q_DEF"
Expiry="NEVER"
ReportCOA="WITH_FULL_DATA"
ReplyToQueueName="Report_Queue"
OpaqueSchema="false"
SyncSolicitReqRes="true"
ResponseWaitInterval="5000"
ResponseOpaqueSchema="true"
>
</jca:operation>
例 2:要求メッセージのエンキューおよびリプライ・メッセージのデキュー
この例は、5000ミリ秒の間隔で要求メッセージのエンキューおよびリプライ・メッセー
ジのデキューを行う方法を示しています。応答メッセージには、関連するスキーマがあり
ます。WSDLファイルの一部を以下に表示します。
<jca:operation
InteractionSpec="oracle.tip.adapter.mq.outbound.InteractionSpecImpl"
QueueName="Request_Queue"
MessageType="REQUEST"
MessageFormat="NONE"
Priority="AS_Q_DEF"
Persistence="AS_Q_DEF"
Expiry="NEVER"
19
ReportCOA="WITH_FULL_DATA"
ReplyToQueueName="Reply_Queue"
OpaqueSchema="false"
SyncSolicitReqRes="true"
ResponseWaitInterval="5000"
>
</jca:operation>
注:ResponseWaitInterval値は、アウトバウンド・アクティビティのタイム
アウト未満にする 必要があります 。ResponseWaitInterval値がアウトバウン
ド・アクティビティのタイムアウトを超えると、アダプタの動作が不安定になる
場合があります。
アウトバウンド・デキュー・シナリオ
アウトバウンド・デキュー・シナリオでは、複数のInteractionSpecプロパティによるアウト
バウンドMQSeriesアダプタでキューから単一のメッセージがデキューされます。アウトバ
ウンド・デキュー・シナリオは、さまざまなフィルタ・オプションをサポートします。サ
ポートされるフィルタ・オプションには、messageId、correlationId、GroupId、
およびmessageIdとcorrelationIdの組合せがあります。フィルタ・オプションは、
ヘッダーを通じてのみ指定できます。
アウトバウンド・デキュー・シナリオのInteractionSpecプロパティは、以下のとおり
です。
InteractionSpec - これは、アウトバウンド・デキューに使用される InteractionSpec
クラスです。このプロパティの値を oracle.tip.adapter.mq.outbound.
SyncInteractionSpecImpl にする必要があります。このプロパティは必須です。
QueueName - これは、メッセージがデキューされる MQSeries キューの名前です。こ
のプロパティは必須です。
WaitInterval - これは、メッセージがキューにない場合にアダプタが待機するミリ
秒単位の時間です。このプロパティのデフォルト値は、0 ミリ秒です。このプロパ
ティは必須ではありません。このプロパティに設定できる値は、整数値(>=0)です。
このプロパティの値をアウトバウンド・アクティビティのタイムアウト値未満にする
必要があります。
FilterByMsgId - このプロパティは、messageId に基づいてメッセージ・フィル
タ・オプションを設定します。このプロパティは必須ではありません。このプロパ
ティの値は、messageId 用の 16 進数でエンコードされた値にする必要があります。
FilterByCorrelId - このプロパティは、correlationId に基づいてメッセー
ジ・フィルタ・オプションを設定します。このプロパティは必須ではありません。こ
のプロパティの値は、correlationId 用の 16 進数でエンコードされた値にする必
要があります。
FilterByGroupId - このプロパティは、groupId に基づいてメッセージ・フィル
タ・オプションを設定します。このプロパティは必須ではありません。このプロパ
ティの値は、groupId 用の 16 進数でエンコードされた値にする必要があります。
以下の例は、アウトバウンド・アダプタ方向で OutboundDequeue_Queue からメッセー
ジをデキューする方法を示しています。メッセージがキューにない場合、最大 1000 ミリ
秒待機します。WSDL ファイルの一部が以下に表示されています。
<jca:operation
20
InteractionSpec="oracle.tip.adapter.mq.outbound.SyncInteractionSpecImpl"
QueueName="OutboundDequeue_Queue"
WaitInterval="1000"
>
</jca:operation>
インバウンド・メッセージングのプロパティ
20 ページの"アウトバウンド・デキュー・シナリオ"に記載されているアウトバウンド・
メッセージングの使用以外に、インバウンド・メッセージングにFilterByGroupId、
FilterByMsgId、FilterByCorrelIdプロパティも使用できます。
Activation および InteractionSpec プロパティ名への変更
表 1は、ActivationおよびInteractionSpecプロパティ名の変更を示しています。
表 1 プロパティ名の変更
古い名前
新しい名前
SegmentIfReqd
SegmentIfRequired
BlockingInterval
WaitInterval
BPEL プロセスの複数のキューのポーリング
注:この機能は、プレビュー・リリースとしてのみ使用できます。保証は行われ
ていません。
1 つ以上のキューをポーリングする場合、bpel.xml に複数の activationAgent プロパ
ティを指定できます。以下の例に示されているように、インバウンド方向のキューを指定
するエンドポイント・プロパティ名は、adapter.mq.inbound.queueName です。
<activationAgents>
<activationAgent
className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent"
partnerLink="inboundService">
<property name="portType">Dequeue_ptt</property>
<property name="adapter.mq.inbound.queueName">Queue1</property>
</activationAgent>
<activationAgent
className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent"
partnerLink="inboundService">
<property name="portType">Dequeue_ptt</property>
<property name="adapter.mq.inbound.queueName">Queue2</property>
</activationAgent>
</activationAgents>
接続のバインディング・モードの有効化
MQSeries アダプタの oc4j-ra.xml ファイルを変更して、接続のバインディング・モード
を有効化します。oc4j-ra.xml ファイルで、以下の変更が必要です。
hostName -
""
21
portNumber - Any interger value (>1023 & <65356)
channelName - ""
queueManagerName - "Valid_Queue_Manager_Name"
データベース・アダプタの新機能
この項では、データベース・アダプタの新機能について説明します。以下のトピックにつ
いて説明します。
XMLTypeサポート
プロキシ認証サポート
インバウンド・スキーマ検証
XMLType サポート
Pure SQL を拡張して、XMLType 列をサポートしました。CLOB 列の XML の格納はすで
にサポートされているので(SOA_ORACLE_HOME¥bpel¥tutorials¥122.DBAdapter
¥advanced¥dmlInvoke¥InsertWithClobs サンプルを参照)、XMLType サポートは、
以下の利点を提供するために構築されました。
SQL での XQuery 式の書込み可能(XPath 式を通じて XML レコードの問合せおよび
更新を行う場合)
Oracle から Oracle JDeveloper プロジェクト・プロセスへのスキーマ・バインドされた
XMLType の XSD のインポート。xs:any として XMLType 列をインポートしても役
立ちません。
通常の表の XMLType 列ではなく XMLType 表のサポート
以下の SQL 文と自動生成された XSD は、上記 3 つの強化機能のサポートを示しています。
SELECT * FROM MOVIES_XMLTYPE WHERE EXTRACT_VALUE(object_value,
'/Movies/title') = ?
<?xml version = '1.0' encoding = 'UTF-8'?>
<xs:schema targetNamespace="http://xmlns.oracle.com/pcbpel/
adapter/db/XMLTypeSelectService"
xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/XMLTypeSelectService"
xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/xdb/Movies"
elementFormDefault="qualified"
attributeFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/xdb/Movies"
schemaLocation="Movies_xmltype.xsd"/>
<xs:element name="XMLTypeSelectServiceInput"
type="XMLTypeSelectServiceInput"/>
<xs:complexType name="XMLTypeUpdateServiceInput">
<xs:sequence>
<xs:element name="XML" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:Movies" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TITLE" type="xs:string" nillable="true"/>
22
</xs:sequence>
</xs:complexType>
<xs:element name="XMLTypeSelectServiceOutputCollection"
type="XMLTypeSelectServiceOutputCollection"/>
<xs:complexType name="XMLTypeSelectServiceOutputCollection">
<xs:sequence>
<xs:element name="XML" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:Movies" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
XMLType サポートの注意事項を含む新しい SOA_ORACLE_HOME¥samples¥tutorials¥
122.DBAdapter¥PureSQLTutorial.txt ファイルを参照してください。無名の XMLType
は、ストアド・プロシージャ用に引き続きサポートされます。XMLType のサポートは、
アダプタ構成ウィザードの操作タイプ・ページの表に対して操作を実行フィールドに追加
されていません。XMLType のサポートは、新しいユースケースをデータベース・アダプ
タに追加して、起点として既存のリレーショナル・スキーマを概念的に取得します。リ
レーショナル・スキーマではなく XML スキーマを使用している場合、Oracle データベー
スにその XML を格納して問合せを行うことができます。Oracle XDB は、XSD を削除して、
パフォーマンスの XML 永続性を提供します。
プロキシ認証サポート
プロキシ認証を使用して、Oracle データ・ストアに接続できます。起動するたびに、以下
の新しいヘッダー・プロパティの組合せを使用できます。
proxyUserName
proxyPassword
proxyRoles
proxyCertificate(base64Binary)
proxyDistinguishedName
proxyIsThickDriver
起動実行のプロキシ接続は、データソースから取得されます。OCI ドライバを使用する場
合、シック・ドライバとシン・ドライバ間の JDBC レベルの API が異なっているため、
proxyIsThickDriver を構成して true に設定する必要があります。
参照:以下のURLは、基礎となるOracle TopLink機能の詳細を示します。
http://www.oracle.com/technology/products/ias/toplink/doc/1013/main
/_html/dblgcfg008.htm
23
インバウンド・スキーマ検証
WSDL ファイルの SchemaValidation という新しい ActivationSpec プロパティを構成で
きます。true に設定されると、ポーリング・データベース・アダプタ(受信用)によって
生成されたすべての XML は、XSD に対して検証されます。障害が発生すると、XML レコー
ドは拒否されますが、データベース・アダプタ処理としてマークされます。10.1.3.3 以前、
データベース・アダプタからの不正な形式の XML という概念はありませんでした。このた
め、メッセージの拒否は実装されませんでした。データベースは、構造化ストレージを提供
します。XSD は、アダプタ構成ウィザードによって生成されます。ただし、自動生成した
XSD を編集して独自の制約を追加する場合、検証を使用できます。たとえば、VARCHAR(50)
フィールドをインポートする場合、自動生成された XSD は、最大長 50 に制限されます。
ただし、BPEL プロセスが固定長 22 の値だけを処理する場合、XML が検証されることが
あります。
AQ アダプタの新機能
この項では、AQ アダプタの新機能について説明します。
インバウンド・スキーマ検証
インバウンド方向の複数のアクティブ化エージェントの使用
ADT キューを使用する場合のインバウンド・スキーマ検証
ADT(オブジェクト)キューで AQ アダプタを使用する場合、インバウンド XML 検証は、
設計時に生成されたスキーマに対して発生しません。
インバウンド XML 検証を有効にするには、デキュー操作を実行するパートナ・リンクの
WSDL ファイルに以下のブール型プロパティを追加します。
SchemaValidation
このブール値の ActivationSpec プロパティのデフォルト値は、false です。true に設定す
ると、インバウンド XML は、実行中に設計時スキーマに対して検証されます。
アダプタ構成ウィザードはこのプロパティをサポートしていないので注意してください。
このプロパティを有効にするには、パートナ・リンクの WSDL ファイルを手動で編集す
る必要があります。
インバウンド方向の複数のアクティブ化エージェントの使用
インバウンド方向の多くのアクティブ化エージェントを使用する場合、oc4j-ra.xml ファ
イルのインバウンド JNDI エントリの useDefaultConnectionManager プロパティを
true に設定します。インバウンド方向の複数のアクティブ化エージェントのインバウン
ド・アダプタ AQ サービスとともにアウトバウンド AQ アダプタ・サービスを使用する場
合、以下の設定を確認してください。
oc4j-ra.xml の異なる JNDI エントリを使用している。
useDefaultConnectionManager が false に設定されている。
JMS アダプタの新機能
この項では、JMS アダプタの新機能について説明します。
24
BEA WebLogic JMS プロバイダのキューおよびトピックのサポート
JMS アダプタは、BEA WebLogic JMS プロバイダのキューおよびトピックのサポートを提
供します。この機能を使用するには、server.xml ファイルの environment-namingurl-factory-enabled を true に設定します。
インバウンド・アダプタ・エンドポイントの Oracle ESB の
Singleton 動作
クラスタ(OC4J)環境で Oracle ESB を使用すると、インバウンド・ファイル・アダプタ
などのエンドポイントからメッセージを使用する場合にインバウンド・トランザクション
ではない JCA リソース・アダプタで競合条件が発生します。
この問題を回避するには、以下の ESB エンドポイント・プロパティをサービス定義に追
加します。
clusterGroupId
このエンドポイント・プロパティには、任意の値を割り当てることができます。実行時に、
クラスタの 1 つのノードだけがエンドポイントのアクティブ化を認識します。
Ilog JRules の意思決定サービス・サポート
意思決定サービスは、Ilog JRules との統合を自動的にサポートします。ただし、いくつか
の構成手順を手動で実行する必要があります。これらの手順をこの項で説明します。
前提条件
これらの手順では、Ilog JRules バージョン 6.1 の Rule Execution Server(RES)のインストー
ルと Oracle SOA Suite 10.1.3.3 への RES 管理アプリケーション(EAR ファイル)のデプロ
イが完了していると仮定します。これらの手順全体で、以下の環境変数は、インストール
したコンポーネントのディレクトリを示します。
JRULES_HOME - Ilog JRules 6.1 がインストールされるディレクトリ
ORACLE_HOME - Oracle SOA Suite がインストールされるディレクトリ
JDEV_HOME - Oracle JDeveloper がインストールされるディレクトリ
Oracle JDeveloper の設定
意思決定サービス・ウィザードから Ilog JRules RES に接続するには、Ilog JRules インス
トール・ディレクトリから Oracle JDeveloper インストール・ディレクトリに以下の JAR
ファイルをコピーします。
1.
Oracle JDeveloper を終了します。
2.
オペレーティング・システムのコマンド・プロンプトで以下の手順を実行します。
cd ${JDEV_HOME}/integration
mkdir thirdparty/ilog/lib
cp ${JRULES_HOME}/executionserver/lib/jrules-bres-session-java.jar ¥
${JDEV_HOME}/integration/thirdparty/ilog/lib
3.
Oracle JDeveloper を起動します。
25
Oracle SOA Suite の設定
Oracle BPEL Process Manager をホストする Oracle Application Server インスタンスで、意思
決定サービスを実行する際に Ilog JRules を使用する構成を行う必要があります。
1.
Oracle SOA Suite を停止します。
${ORACLE_HOME}/opmn/bin/opmnctl stopall
2.
${ORACLE_HOME}/j2ee/oc4j_soa/config ディレクトリの server.xml ファイ
ルを開きます。
3.
oracle.bpel.common 共有ライブラリを検索して、以下の JAR ファイルを追加し
ます。
<code-source path="${JRULES_
HOME}/executionserver/lib/jrules-bres-execution.jar"/>
<code-source path="${JRULES_
HOME}/executionserver/lib/jrules-bres-manage-tools.jar"/>
<code-source path="${JRULES_
HOME}/executionserver/lib/jrules-bres-session-java.jar"/>
<code-source path="${JRULES_
HOME}/executionserver/lib/jrules-engine.jar"/>
<code-source path="${JRULES_
HOME}/executionserver/lib/commons-digester.jar"/>
<code-source path="${JRULES_
HOME}/executionserver/lib/commons-logging.jar"/>
<code-source path="${JRULES_HOME}/executionserver/lib/sam.jar"/>
<code-source path="${JRULES_HOME}/executionserver/lib/xercesImpl.jar"/>
4.
Oracle SOA Suite を起動します。
${ORACLE_HOME}/opmn/bin/opmnctl startall
5.
${ORACLE_HOME}/bpel/system/services/config/DecisionServiceConfi
guration.xml ファイルを開きます。
6.
以下の太字のエントリを確認して、意思決定サービスで Ilog JRules を使用する構成が
行われていることを確認します。
<?xml version = '1.0' encoding = 'UTF-8'?>
<!-Configuration file for the decision service.
-->
<configuration xmlns="http://xmlns.oracle.com/bpel/rules">
<!-Rule Engine provider implementations
-->
<ruleEngine name="Oracle" description="Oracle Business Rules
10.1.3.1.0">
<ruleEngineClass>
oracle.bpel.services.rules.rpi.oracle.OracleRuleEngine
</ruleEngineClass>
</ruleEngine>
<ruleEngine name="Ilog" description="Ilog JRules 6.1">
<ruleEngineClass>
oracle.bpel.services.rules.rpi.ilog.IlogRuleEngine
</ruleEngineClass>
<properties>
<property name="jndiXuConnectorName">
eis/XUConnectionFactory
</property>
26
<property name="ruleSessionProviderClass">
ilog.rules.bres.session.j2se.IlrJ2SERuleSessionProvider
</property>
</properties>
</ruleEngine>
<!-Fact context implementations
-->
<factContext name="OracleJaxb" description="Oracle JAXB 1.0">
<factContextClass>
oracle.bpel.services.rules.rpi.JAXBFactContext
</factContextClass>
</factContext>
<factContext name="XOM" description="Ilog JRules 6.1 XOM">
<factContextClass>
oracle.bpel.services.rules.rpi.ilog.XOMFactContext
</factContextClass>
</factContext>
</configuration>
RES 接続設定に応じて、以下のプロパティを構成できます。
jndiXuConnection - Ilog JRules Execution Unit リソース・アダプタ(XU)のコネ
クション・ファクトリの JNDI 名。デフォルト設定は、eis/XUConnectionFactory
です。
ruleSessionProviderClass - Ilog JRules RES でルール・セッションを確立する
Ilog JRules Java クラスの完全修飾名。デフォルト設定は、ilog.rules.bres.
session.j2se.IlrJ2SERuleSessionProvider です。
他の設定は、Ilog JRules API リファレンスを参照してください。追加のプロパティ
の指定が必要な場合があります。たとえば、ルール・セッション・クラスが
ilog.rules.bres.session.ejb.IlrManagedRuleSessionProvider ま た
は ilog.rules.bres.session.ejb.IlrRemoteRuleSessionProvider の
場合、適切な JNDI プロパティを構成して、JNDI InitialContext を初期化す
る必要があります。DecisionServiceConfiguration.xml ファイルの Ilog
JRules ルール・エンジン構成のプロパティ要素にこれらのプロパティを追加でき
ます。
例1 DecisionServiceConfiguration.xmlのプロパティ設定
<ruleEngine name="Ilog" description="Ilog JRules 6.1">
<ruleEngineClass>
oracle.bpel.services.rules.rpi.ilog.IlogRuleEngine
</ruleEngineClass>
<properties>
<property name="jndiXuConnectorName">
eis/XUConnectionFactory
</property>
<property name="ruleSessionProviderClass">
ilog.rules.bres.session.ejb.IlrRemoteRuleSessionProvider
27
</property>
<property name="java.naming.factory.initial">
com.evermind.server.rmi.RMIInitialContextFactory
</property>
<property name="java.naming.provider.url">
ormi://localhost:23791/rulesession
</property>
<property name="java.naming.security.principal">
oc4jadmin
</property>
<property name="java.naming.security.credentials">
welcome1
</property>
</properties>
</ruleEngine>
DecisionServiceConfiguration.xml ファイルの Ilog JRules 意思決定サービス構成のプロパ
ティは、デフォルト値を示します。ただし、特定の意思決定サービス・パートナ・リ
ンク構成によって、値が上書きされる場合があります。これを行うには、以下の太字
で示されたプロパティで BPEL プロジェクトの意思決定サービス構成ファイル
decisionservices.decs の ruleEngineProvider 要素を変更します。
<ruleEngineProvider provider="Ilog" name="jrules61_myhost">
<repository type="Service">
<service>
<url>service:jmx:rmi:///opmn://myhost.com:6003/home</url>
<username>oc4jadmin</username>
<password encrypted="true">AK6qvYcrlNMqnYt1uPZFjw==</password>
</service>
</repository>
<properties>
<property name="jmxConnectorClass">
oracle.bpel.services.rules.rpi.ilog.OracleJmxConnector
</property>
<property name="ruleSessionProviderClass">
ilog.rules.bres.session.j2se.IlrJ2SERuleSessionProvider
</property>
</properties>
</ruleEngineProvider>
制限
この項では、Ilog JRules との意思決定サービスの統合に関する既知の制限について説明し
ます。
パラメータ型のサポート - 意思決定サービスとして公開するルール・セットの入出力
パラメータは、XML スキーマ要素から派生する必要があります。意思決定サービス
は、JavaBeans などに基づく型モデルを現在サポートしていません。
Ilog JRules 意思決定サービスのデプロイメント - デプロイメント前に特定の Ilog JRules
デプロイメント要素を意思決定サービスの Web アーカイブ・スイートにコピーする必
要があります。これには、JRules XU リソース・アダプタ(ra.xml)の構成ファイル
や特定の Ilog ファイルが含まれる場合があります。詳しくは Ilog JRules ドキュメント
を参照してください。
28
障害管理フレームワーク
リリース 10.1.3.3 は、BPEL プロセスの障害を処理する汎用的な障害管理フレームワーク
を提供します。プロセスの起動アクティビティの実行中に障害が発生すると、このフレー
ムワークが障害を捕捉し、アクティビティに関連する障害ポリシー・ファイルに定義され
たユーザー指定アクションを実行します。障害によって人の介入が必要になった場合、
Oracle BPEL Control からリカバリ・アクションを実行します。障害管理フレームワークは、
スコープ・アクティビティの Catch ブランチを使用した BPEL プロセスの設計の代替機能
を提供します。
以下のトピックについて説明します。
障害管理フレームワークの概要
障害ポリシーの設計
障害管理フレームワークのユースケース
Javaアクションの障害ポリシー
参照:障害管理フレームワークのサンプルは、以下のとおりです。
SOA_ORACLE_
HOME¥bpel¥samples¥tutorials¥122.DBAdapter¥InsertWithCatch
障害管理フレームワークの概要
この項では、障害管理フレームワークを構成するコンポーネントの概要について説明します。
fault-policy.xsd というスキーマが障害管理ポリシーを定義するために提供され
ます。
障害管理フレームワークは、起動アクティビティのすべての障害(ビジネスおよび実
行時)を捕捉します。
障害ポリシー・ファイルは、障害条件とそれに対応する障害リカバリ・アクションを
定義します。各障害条件には、処理対象の特定の障害または一連の障害とその対応ア
クションを指定します。一連のアクションは、障害ポリシー・ファイルの ID によっ
て識別されます。
一連の条件によって、障害ポリシーと呼ばれるアクションが起動します。
障害ポリシーは、各ドメインの fault-policies というディレクトリの下の複数の
ファイルに定義されます。
SOA_ORACLE_HOME¥bpel¥domains¥domain_name¥config¥fault-policies¥
domain_name は、ドメインの名前です(たとえば、default または作成した追加の
ドメイン)。
障害ポリシーは、次のレベルで関連付けることができます。
-
パートナ・リンク
-
ポート・タイプ
-
プロセス
-
ドメイン
29
障害ポリシー・バインディング・ファイルは、障害ポリシー・ファイルに定義された
ポリシーをパートナ・リンク、ポート・タイプ、プロセス、およびドメインに関連付
けます。フレームワークは、次のファイル(優先順)の障害ポリシー・バインディン
グを検索します。
-
プロセス・レベルの bpel.xml ファイル
-
ドメイン・レベルのファイル:
SOA_ORACLE_HOME¥bpel¥domains¥domain_name¥config¥fault-bindings.xml
注:障害管理フレームワークで構成された障害ポリシーは、BPELプロセスのス
コープ・アクティビティのCatchブランチで定義された障害処理を上書きします。
障害管理フレームワークを構成して、障害処理をCatchブランチに再スローできま
す。
障害ポリシーの設計
この項では、障害ポリシーの設計方法について説明します。以下のトピックについて説明
します。
障害ポリシー・バインディング解決の動作の理解
タスク 1:自動障害リカバリ用の障害ポリシー・ファイルの作成
タスク 2:障害ポリシーの関連付け
障害ポリシー・バインディング解決の動作の理解
障害ポリシー・バインディング・ファイルは、障害ポリシー・ファイルで定義されたポリ
シーをパートナ・リンク、ポート・タイプ、プロセス、およびドメインに関連付けます。
フレームワークは、次の順番で障害ポリシー・バインディングを識別します。
bpel.xml のパートナ・リンク・バインディング
bpel.xml のポート・タイプ・バインディング
bpel.xml のプロセス・バインディング
ドメインに指定されたパートナ・リンク・バインディング
ドメインに指定されたポート・タイプ・バインディング
ドメインに指定されたプロセス・バインディング
解決プロセスの実行中に条件に一致するアクションがなかった場合、フレームワークは解
決に失敗したと仮定して、次の解決レベルへ移行します。
たとえば、起動アクティビティの faultname="abc"の障害などです。bpel.xml ファイ
ルに指定される次のポリシー・バインディングがあります。
パートナ・リンク名は policy-id-1 にバインドされます
ポート・タイプは policy-id-2 にバインドされます
プロセスは policy-id-3 にバインドされます
SOA_ORACLE_HOME¥bpel¥domains¥domain_name¥config¥fault-bindings.xml
ファイルでは、次のバインディングも指定されます。
パートナ・リンク名は policy-id-4 にバインドされます
30
ポート・タイプは policy-id-5 にバインドされます
プロセスは policy-id-6 にバインドされます
障害管理フレームワークは、次のように動作します。
最初に解決バインディング(この場合、policy-id-1)と照合します。
障害が解決しない場合、次の照合(この場合、policy-id-2)に移動します。
障害が解決しない場合、次の照合(policy-id-3、policy-id-4、policy-id-5、
および policy-id-6)に移動します。
まだ障害が解決しない場合は、障害が BPEL 障害 Catch ブランチに送信されます。
タスク 1:自動障害リカバリ用の障害ポリシー・ファイルの作成
1.
障害管理フレームワークを使用する各ドメインの config ディレクトリの下に
fault-policies ディレクトリを作成します。
SOA_ORACLE_HOME¥bpel¥domains¥domain_name¥config¥fault-policies
2.
fault-policies ディレクトリに障害ポリシー・ファイル(たとえば、faultpolicy.xml ) を 作 成 し ま す 。 こ の フ ァ イ ル に は 、 特 定 の タ ス ク を 実 行 す る
condition セクションおよび action セクションが含まれます。
3.
障害ポリシー・ファイルの condition セクションを定義します。
condition セクションに関する以下の詳細に注意してください。
-
このセクションは、faultName に基づく条件を提供します。
-
複数の条件を faultName に構成できます。
-
各条件には、1 つの test セクション(XPath 式)と action セクションが
あります。
-
test セクション(XPath 式)は、障害に使用できる障害変数に対して評価
されます。
-
action セクションには、同じファイルに定義されたアクションの参照があ
ります。
-
障害に使用できる障害変数の問合せのみを実行できます。
-
条件評価の順番は、ドキュメントの順番で決定されます。
次の表は、障害ポリシー・ファイルの condition セクションの使用例を示しています。
condition セクションに定義されたすべてのアクションは、action セクションのアク
ションに関連付ける必要があります。
条件例
障害ポリシー・ファイルの構文
こ の 条 件は 、 code = "WSDLFailure" <condition>
<test>$fault.code/code="WSDLReading Error"
の障害変数を確認します。
</test>
ora-terminate の action を指定します。 <action ref="ora-terminate"/>
</condition>
31
条件例
障害ポリシー・ファイルの構文
test 条件が提供されていません。これは、 <condition>
特定の faultName の CatchAll 条件です。 <action ref="ora-rethrow"/>
</condition>
faultName 名前属性が欠落している場合、<faultName > . . . </faultName>
これは QName を含む障害用の CatchAll ブ
ランチを示します。
4.
障害ポリシー・ファイルの action セクションを定義します。
action セクションに関する以下の詳細に注意してください。
-
アクションのリストは拡張できません。
-
障害ポリシー・ファイルの検証は、ドメインの起動時に実行されます。新し
いハンドラを有効にするために Oracle BPEL Server を再起動する必要があり
ます。
次の表は、障害ポリシー・ファイルの action セクションのいくつかの使用例を示
しています。一部の障害に自動リカバリ・アクションを設定できます。リトライ
および人の介入を除くすべてのリカバリ・アクションで、フレームワークはアク
ションを同期実行します。
リカバリ・アクション
障害ポリシー・ファイルの構文
リトライ - アクティビティをリトライ <Action id="ora-retry">
<Retry>
する次のアクションを提供します。
指定した回数のリトライ
<retryCount>3</retryCount>
<retryInterval>2</retryInterval>
リトライ間の遅延の提供
<exponentialBackoff/>
指数バックオフの提供
<retryFailureAction ref="ora-java"/>
リトライ失敗アクションの提供
<retrySuccessAction ref="ora-java"/>
リトライ成功アクションの提供
</Retry>
注:指数バックオフは、遅延を 2 倍にし
</Action>
た時間に次のリトライが実行されること
を示します。遅延とは、現在のリトライ
以下の詳細に注意してください。
間隔のことです。たとえば、現在のリト
複数の WSDL の場所を使用できる場合、Oracle BPEL
ライ間隔が 2 秒の場合、次のリトライは
Server は次の場所への接続を遅延の n 倍試行します。
4 秒、その次は 8 秒、その次は 16 秒と
フレームワークは、リトライ・カウントごとに指定さ
retryCount 値に到達するまで実行さ
れたそれぞれの WSDL の場所への接続を試行します。
れます。
リトライに成功すると、フレームワークはリトライ成
功アクションに連結します。
すべてのリトライに失敗すると、フレームワークはリ
トライ失敗アクションに連結します。
32
リカバリ・アクション
障害ポリシー・ファイルの構文
人の介入 - 現在のアクティビティで処 <Action id="ora-human-intervention">
理が停止します。Oracle BPEL Control に <humanIntervention/></Action>
移動して、このインスタンスの複数のア
クションを実行できます。
参照:41 ページの"Oracle BPEL Control
の人の介入"
プロセスの終了 - プロセスを終了します <Action id="ora-terminate"><abort/></Action>
Java コード - 外部の Java クラスを実行 <Action id="ora-java">
<!-- this is user provided custom java
できます。
参照:47 ページの"Javaアクションの障 class-->
<javaAction className="mypackage.myClass"
害ポリシー"
defaultAction="ora-terminate">
<returnValue value="REPLAY"
ref="ora-terminate"/>
<returnValue value="RETRHOW"
ref="ora-rethrow-fault"/>
<returnValue value="ABORT"
ref="ora-terminate"/>
<returnValue
value="RETRY"
ref="oraretry"/>
<returnValue value="MANUAL"
ref="ora-human-intervention"/>
</javaAction>
</Action>
障害の再スロー - フレームワークは、 <Action
障害を BPEL 障害ハンドラ(スコープ・ id="ora-rethrow-fault"><rethrowFault/></Action>
アクティビティの Catch ブランチ)に送
信します。何も使用できない場合、障害
が送信されます。
再生スコープ - 再生障害が発生します <Action
id="ora-replay-scope"><replayScope/></Action>
注意事項:
汎用的な障害ハンドラ拡張機能を作成するオプションはありません。障害ポ
リシー・アクションのリストは、フレームワークによって制限されます。
先 行 す る リ カ バ リ ・ ア ク シ ョ ン の タ グ 名 ( ora-retry 、 ora-humanintervention、ora-terminate など)が唯一のサンプルです。これらの
名前は環境に適した名前に置き換えることができます。
以下の例は、condition セクションおよび action セクションを完全に定義した障害ポ
リシー・ファイルを示しています。
注:障害ポリシー・ファイルの名前は、固有の名前に制限されていません。ただ
し、ファイルは、SOA_ORACLE_HOME¥bpel¥system¥xmllib フォルダの fault
policy.xsd スキーマに準拠する必要があります。
33
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicy version="2.0.1" id="CRM_ServiceFaults"
xmlns:env=http://schemas.xmlsoap.org/soap/envelope/
xmlns:xs=http://www.w3.org/2001/XMLSchema
xmlns=http://schemas.oracle.com/bpel/faultpolicy
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://schemas.oracle.com/bpel/faultpolicy
C:¥oc4j¥bpel¥system¥xmllib¥fault-policy.xsd">
<Conditions>
<!-- Fault if wsdlRuntimeLocation is not reachable -->
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:remoteFault">
<condition>
<test>$fault.code/code="WSDLReadingError"</test>
<action ref="ora-terminate"/>
</condition>
<condition>
<action ref="ora-java"/>
</condition>
</faultName>
<!-- Fault if location port is not reachable-->
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:bindingFault">
<!--ORA-00001: unique constraint violated on insert-->
<condition>
<test>$fault.code/code="1"</test>
<action ref="ora-java"/>
</condition>
<!--ORA-01400: cannot insert NULL -->
<condition>
<test>$fault.code/code="1400"</test>
<action ref="ora-terminate"/>
</condition>
<!--ORA-03220: required parameter is NULL or missing -->
<condition>
<test>$fault.code/code="3220"</test>
<action ref="ora-terminate"/>
</condition>
<condition>
<action ref="ora-retry-crm-endpoint"/>
</condition>
</faultName>
<!-- Business faults -->
<!-- Fault comes with a payload of error, make sure the name space-->
<!-- is provided here or at root level -->
<faultName xmlns:credit="http://services.otn.com"
name="credit:NegativeCredit">
<condition>
<test>$fault.payload/credit:error="Bankruptcy Report"</test>
<action ref="ora-retry"/>
</condition>
<condition>
<test>$fault.payload/credit:error="Illegal SSN"</test>
<action ref="ora-terminate"/>
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry">
34
<retry>
<retryCount>3</retryCount>
<retryInterval>2</retryInterval>
<exponentialBackoff/>
<retryFailureAction ref="ora-java"/>
<retrySuccessAction ref="ora-java"/>
</retry>
</Action>
<Action id="ora-retry-crm-endpoint">
<retry>
<retryCount>5</retryCount>
<retryFailureAction ref="ora-java"/>
<retryInterval>5</retryInterval>
<retrySuccessAction ref="ora-java"/>
</retry>
</Action>
<Action id="ora-replay-scope">
<replayScope/>
</Action>
<Action id="ora-rethrow-fault">
<rethrowFault/>
</Action>
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<Action id="ora-terminate">
<abort/>
</Action>
<Action id="ora-java">
<!-- this is user provided class-->
<javaAction
className="com.oracle.bpel.client.config.faultpolicy.TestJavaAction"
defaultAction="ora-terminate" propertySet="prop-for-billing">
<returnValue value="REPLAY" ref="ora-terminate"/>
<returnValue value="RETRHOW" ref="ora-rethrow-fault"/>
<returnValue value="ABORT" ref="ora-terminate"/>
<returnValue value="RETRY" ref="ora-retry"/>
<returnValue value="MANUAL" ref="ora-human-intervention"/>
</javaAction>
</Action>
</Actions>
<Properties>
<propertySet name="prop-for-billing">
<property name="user_email_recipient">bpeladmin</property>
<property name="email_recipient">[email protected]</property>
<property name="email_recipient">[email protected]</property>
<property name="email_threshold">10</property>
<property name="sms_recipient">+429876547</property>
<property name="sms_recipient">+4212345</property>
<property name="sms_threshold">20</property>
<property name="user_email_recipient">john</property>
</propertySet>
<propertySet name="prop-for-order">
<property name="email_recipient">[email protected]</property>
<property name="email_recipient">[email protected]</property>
<property name="email_threshold">10</property>
<property name="sms_recipient">+42222</property>
<property name="sms_recipient">+423335</property>
<property name="sms_threshold">20</property>
35
</propertySet>
</Properties>
</faultPolicy>
タスク 2:障害ポリシーの関連付け
1.
使用している障害ポリシー・バインディングのレベルに障害ポリシーを関連付けます。
タスク 2a:パートナ・リンク、ポート・タイプ、またはプロセスへの障害ポリ
シーの関連付け
タスク 2b:ドメイン・レベルでのパートナ・リンク、ポート・タイプ、またはプ
ロセスへの障害ポリシーの関連付け
タスク 2a:パートナ・リンク、ポート・タイプ、またはプロセスへの障害ポリシーの関
連付け 特定のパートナ・リンク、ポート・タイプ、またはプロセス全体を障害ポリシー
に関連付けることができます。この方法によって、次の機能が実現します。
"タスク 2b:ドメイン・レベルでのパートナ・リンク、ポート・タイプ、またはプロ
セスへの障害ポリシーの関連付け"よりも障害ポリシー・バインディングの粒度の高
い方法を提供します
"タスク 2b:ドメイン・レベルでのパートナ・リンク、ポート・タイプ、またはプロ
セスへの障害ポリシーの関連付け"で定義した障害ポリシー・バインディングを上書
きします
1.
新しいセクションを bpel.xml ファイルに追加します。以下の詳細に注意してください。
1 つの障害ポリシーだけを 1 つのプロセス、ポート・タイプ、またはパートナ・
リンクにバインドできます。
複数のパートナ・リンクを 1 つの障害ポリシーにバインドできます。
複数のポート・タイプを 1 つの障害ポリシーにバインドできます。
以下に例をあげます。
<faultPolicyBindings>
<process faultPolicy="BillingFaults"/>
<!-----Fault on any plink/port type not specified--->
<!-----below uses policy BillingFaults--->
<partnerLink xmlns:credit="http://services.otn.com" faultPolicy="CRM_
ServiceFaults">
<name>UnitedLoanService</name>
<!-----Fault on these 2 plink will use policy CRM_ServiceFaults--->
<name>StarLoanService</name>
<portType>credit:CreditRatingService</portType>
<!----Fault on these 2 port types uses policy CRM_ServiceFaults--->
<portType xmlns:united="http://services.uninted.com/loan">
united:UnitedLoanService</portType>
</partnerLink>
<partnerLink faultPolicy="myOtherFaults">
<name>AnotherPartnerLink</name>
<!-----Fault on this plink uses policy myOtherFaults--->
</partnerLink>
</faultPolicyBindings>
タスク 2b:ドメイン・レベルでのパートナ・リンク、ポート・タイプ、またはプロセス
への障害ポリシーの関連付け ドメイン全体を障害ポリシーに関連付けることができます。
36
1.
SOA_ORACLE_HOME¥bpel¥domains¥domain_name¥config ディレクトリの faultbindings.xml ファイルのドメイン全体に適用可能な障害ポリシーを提供します。
以下に例をあげます。
<faultPolicyBindings version="2.0.1"
xmlns=http://schemas.oracle.com/bpel/faultpolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<process faultPolicy="BillingFaults"/>
<partnerLink faultPolicy="CRM_ServiceFaults">
<name>StarLoanService</name>
<name>BillCardService</name>
<portType xmlns:credit="http://services.otn.com">
credit:CreditRatingService</portType>
<portType xmlns:united="http://services.uninted.com/loan">
united:UnitedLoanService</portType>
</partnerLink>
</faultPolicyBindings>
このファイルのポート・タイプに提供されるバインディングは、ドメインのすべての
プロセスに使用されます。これらのプロセスには、異なるパートナ・リンク名を使用
できます。ポート・タイプが同じ場合、このファイルに指定された障害ポリシーが使
用されます。
注:障害ポリシー・バインディング・ファイルには、fault-bindings.xml と
いう名前を付ける必要があります。この名前は、SOA_ORACLE_HOME¥bpel¥
system¥xmllib¥fault-bindings.xsd のスキーマに準拠する必要がありま
す。
障害管理フレームワークのユースケース
このユースケースでは、BPEL プロセスに使用される障害管理フレームワークの設計時段
階および実行時段階を説明します。
以下のトピックについて説明します。
BPELプロセスおよび障害ポリシーの設計
シナリオ 1:自動障害リカバリ
シナリオ 2:障害リカバリに対する人の介入
Oracle BPEL Controlの人の介入
障害ロギング
BPEL プロセスおよび障害ポリシーの設計
この項では、障害管理フレームワークを使用した BPEL プロセスおよび障害ポリシーの設
計方法のユースケースについて説明します。
以下のトピックについて説明します。
BPELプロセス設計
ドメインの障害ポリシー・ファイル
bpel.xml ファイルの障害ポリシー・バインディングの定義
BPELプロセス設計
図 1のBPELプロセスには、次のアクティビティが含まれます。
37
bpelx:bindingFault の障害ハンドラを使用した Scope_1 スコープ・アクティビティ
2 つのパートナ・リンクに接続される 2 つの起動アクティビティ
図 1 BPEL プロセスのスコープ・アクティビティ
ドメインの障害ポリシー・ファイル 図 1に示されているように、2 つの起動アクティビ
ティによって呼び出される 2 つのパートナ・リンクがあります。両方の起動アクティビ
ティの障害を処理するため、障害管理フレームワークを使用して障害ポリシー・ファイル
が作成されます。障害ポリシーは、Scope_1 スコープ・アクティビティのbpelx:bindingFault
のCatchブランチの障害処理を上書きします。例 2は、GetCreditRatingパートナ・リンクの
defaultドメインに作成された最初の障害ポリシー・ファイル(CreditRating.xml)を示
しています。
例2 SOA_ORACLE_HOME¥bpel¥domains¥default¥config¥fault-policies¥CreditRating.xml
<?xml version="1.0" encoding="UTF-8"?>
<faultPolicy version="2.0.1" id="CreditRating "
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.oracle.com/bpel/faultpolicy
C:¥oc4j¥bpel¥system¥xmllib¥fault-policy.xsd">
<Conditions>
<!-- Fault if location port is not reachable-->
<faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
name="bpelx:bindingFault">
<condition>
<action ref="ora-retry-crm-endpoint"/>
38
</condition>
</faultName>
</Conditions>
<Actions>
<Action id="ora-retry">
<retry>
<retryCount>3</retryCount>
<retryInterval>2</retryInterval>
<exponentialBackoff/>
<retryFailureAction ref="ora-java"/>
</retry>
</Action>
<Action id="ora-retry-crm-endpoint">
<retry>
<retryCount>5</retryCount>
<retryInterval>5</retryInterval>
<retryFailureAction ref="ora-java"/>
<retrySuccessAction ref="ora-java"/>
</retry>
</Action>
<Action id="ora-replay-scope"><replayScope/></Action>
<Action id="ora-rethrow-fault"><rethrowFault/></Action>
<Action id="ora-human-intervention">
<humanIntervention/>
</Action>
<Action id="ora-terminate"><abort/></Action>
<Action id="ora-java">
<!-- this is user provided class-->
<javaAction className="myPackage.LogFault"
defaultAction="ora-terminate">
Note: property set is optional
<returnValue value="REPLAY" ref="ora-terminate"/>
<returnValue value="RETHROW" ref="ora-rethrow-fault"/>
<returnValue value="ABORT" ref="ora-terminate"/>
<returnValue value="RETRY" ref="ora-retry"/>
<returnValue value="MANUAL" ref="ora-human-intervention"/>
</javaAction>
</Action>
</Actions>
-----Note: Properties section is optional---</faultPolicy>
例 3は、ApplyCreditパートナ・リンクのdefaultドメインに作成された 2 つ目の障害ポリ
シー・ファイル(ApplyCredit.xml)を示しています。例 3のactionセクションの内
容は、例 2と同じです。
例3 SOA_ORACLE_HOME¥bpel¥domains¥default¥config¥fault-policies¥Apply-Credit.xml
<FaultPolicy id="ApplyCredit">
<!--------------------------Conditions------------------------------->
<Conditions>
<faultName
name="{http://schemas.oracle.com/bpel/extension}bindingFault">
<condition>
<action ref="ora-human-intervention"/>
</condition>
</faultName>
</Conditions>
<Actions>
39
. . .
. . .
. . .
</Actions>
bpel.xml ファイルの障害ポリシー・バインディングの定義 障害ポリシー・バインディン
グは、bpel.xml ファイルに定義されます。以下の詳細に注意してください。
CreditRating の障害によって、フレームワークでの CreditRating 障害ポリシー
の使用が発生します。
ApplyCredit の障害は、プロセス・レベル・バインディングに戻ってからフレーム
ワークでの ApplyCredit 障害ポリシーの使用が発生します。
<faultPolicyBindings>
<process faultPolicy=" ApplyCredit "/>
<!--Process binds to ApplyCredit policy-->
<partnerLink faultPolicy="CreditRating ">
<name>creditRatingService</name>
<!--partner link binds to CreditRating policy-->
<portType xmlns:credit="http://services.otn.com">
StarRatingService</portType>
</partnerLink>
</faultPolicyBindings>
シナリオ 1:自動障害リカバリ
このシナリオでは、自動障害リカバリ・プロセスについて説明します。CreditRating エン
ドポイントは使用できません。一連の次のアクションが発生します。
Invoke_1 アクティビティによって、フレームワークに捕捉される障害が発生します。
障害ポリシー解決プロセスが起動します。
-
CreditRating の障害ポリシーが識別されます。
アクション解決プロセスが起動します。
-
障害ポリシーには、bpelx:bindingFaultのCatchブランチがあります。38 ページ
の例 2に示されているCreditRating.xmlファイルに定義されたora-retrycrm-endpointアクションが識別されます。
アクションの詳細を取得します。
-
これは、リトライ・カウントが 5、リトライ間隔が 5 秒、リトライ失敗アクション
が ora-java、リトライ成功アクションが ora-java のリトライ・アクション
です。
-
リトライ・アクションは、非同期操作です。
アクティビティと他のポリシー関連データをデハイドレートします。
障害管理フレームワークがリトライを試行します。
すべてのリトライが失敗します。
RetryFailureAction 属性は、ora-java です。
アクション解決プロセスの手順が繰り返されます。
ora-java が同期操作なので、デハイドレーションは実行されずに myPackage.
LogFault の Java コードが起動されます。
Java コードは文字列をログに残して RETHROW を返します。これによって、orarethrow-fault に連結されます。
40
BPEL プロセスに定義された bindingFault の Scope_1 障害ハンドラは、例外を捕
捉します。
リトライに成功すると、フレームワークは ora-java に連結します。ただし、このオブ
ジェクトの異なるメソッドを起動します。
注:BPEL プロセスに障害ハンドラがあっても、フレームワークが例外を処理し
ます。
シナリオ 2:障害リカバリに対する人の介入
このシナリオでは、人の介入について説明します。ApplyCredit サービス・エンドポイント
は、ビジネス障害を受け取ります。一連の次のアクションが発生します。
Invoke_2 アクティビティによって、フレームワークに捕捉される障害が発生します。
障害ポリシー解決プロセスが起動します。
-
パートナ・リンク・バインディングはポリシーを解決しません。プロセス・レベ
ル・バインディングの解決が試行されます。
-
ApplyCredit 障害ポリシーが識別されます。
アクション解決プロセスが起動します。
-
39 ページの例 3に示されているApplyCredit.xmlファイルに定義されたorahuman-interventionアクションが識別されます。
アクションの詳細を取得します。
-
これは、一時停止アクションです。このアクティビティだけが一時停止状態にな
ります。
-
一時停止アクション(人の介入)は、非同期操作です。
アクティビティと他のポリシー関連データをデハイドレートします。
プロセスの他のアクティビティは影響を受けません。
Oracle BPEL Control へ移動し、次のアクションを実行します。
Oracle BPEL Control の人の介入
1.
Oracle BPEL Control の障害が発生したインスタンスに移動します。
2.
「Activities」タブをクリックします。
Activity State リストによって、現在の状態に基づいたアクティビティを表示できます。
この例では、現在ペンディングになっているアクティビティだけが表示されています。
41
3.
状態
説明
All States
状態に関係なくすべてのアクティビティを表示します。
Open
オープンなアクティビティだけを表示します。
Completed
完了したアクティビティだけを表示します。
Cancelled
キャンセルされたアクティビティだけを表示します。
Stale
古いアクティビティだけを表示します。
Pending
ペンディング・アクティビティだけを表示します。
障害が発生したアクティビティをクリックします。
Available Actions リストには、一連の使用可能なリカバリ・アクションが表示されます。
人の介入によってリカバリ用にアクティビティがマークされると、次の表のリカバ
リ・アクションが使用される可能性があります。
リカバリ・アクション
説明
Retry
リトライ成功アクションを提供するオプションとともにアクティビティ
をリトライします。
Abort
障害が発生したアクティビティのプロセス・インスタンスを終了します。
42
リカバリ・アクション
説明
Rethrow
例外を再スローし、BPEL 障害ハンドラ(Catch ブランチ)を使用して障
害を処理できるようにします。明示的な再スロー障害ポリシーが提供さ
れていない限り、デフォルトで、すべての例外が障害管理フレームワー
クによって捕捉されます。
Replay
障害が発生したスコープを再生します。
Continue
アクティビティをスキップします。フレームワークは、障害が発生しな
いで完了したアクティビティを仮定します。
参照:45 ページの"例外の再スロー"
4.
「Fault Details」を開いて、障害が発生したインスタンスの詳細を表示します。
注:Oracle BPEL Process Manager API を使用すると、中断、リトライ(成功アク
ションを使用)、続行、再スロー、および再生のリカバリ・オプションをプログラ
ムで実行できます。
5.
次の項を参照して、これらのリカバリ・アクションを使用します。
アクティビティのリトライ
入力変数の内容の変更とリトライ
出力の設定と続行
スコープの再生
例外の再スロー
プロセスの中断
中断、入力変更、新しいインスタンスの作成
障害が発生した複数のアクティビティのリトライ
アクティビティのリトライ このリカバリ・アクションを使用するシナリオの例は、ネッ
トワーク・エラーによってサービス・プロバイダを使用できないために障害が発生した場
合です。これで、ネットワーク・エラーが解決します。
1.
「Recover」をクリックして、アクティビティをリトライします。
43
自動障害リカバリによって使用される障害ポリシーで使用可能なすべての Java アクション
がドロップダウン・リストに表示されます。
リトライ・アクションに関する以下の詳細に注意してください。
リトライで障害が再度発生した場合、フレームワークは、以前と同じ手順を実行して
このポイントに戻ります。
同じ障害が確認された場合、人の介入がアクティビティにマークされます。
リトライが成功すると、フレームワークは、ここで選択したアクションのカスタム
Java クラスの handleRetrySuccess を起動します。
入力変数の内容の変更とリトライ 障害が発生したアクティビティによって使用される入
力変数の内容を修正できます。障害が発生したこのアクティビティに使用できるすべての
変数がドロップダウン・リストに示されます。
1.
変数を選択し、「Get」をクリックします。これによって、障害が発生したアクティ
ビティのコンテキストで変数の値が取得されます。
2.
テキスト領域の変数の内容を変更します。次に、「Set」をクリックして、障害が発
生したアクティビティのコンテキストで変数を修正します。
「Skeleton Value」ボタンを使用すると、実際に値を表示しなくても編集する変数を取
得できます。
44
3.
使用可能なアクション・リストの「Retry」を選択し、「Recover」をクリックしてア
クティビティをリトライします。
出力の設定と続行 このリカバリ・アクションを使用するシナリオの例は、サービス・プ
ロバイダ請求システムを使用できない場合です。次のいずれかを決定します。
請求のコールをスキップする
手動で請求を行って現在のインスタンスを続行する
注: このアクションは、同期プロセスにのみ役立ちます。非同期プロセスの場
合、Oracle BPEL Server が一致する受信アクティビティで待機するため、起動アク
ティビティに成功とマークしても役立ちません。
1.
44 ページの"入力変数の内容の変更とリトライ"に示されているように、変数データを
取得して修正します。
2.
アクションとして「Continue」を選択し、「Recover」をクリックしてアクティビ
ティに成功とマークします。アクティビティに成功とマークすると、障害が発生した
アクティビティは無視され、処理が次のアクティビティに進みます。
スコープの再生 障害が発生したスコープを再生できます。
1.
44 ページの"入力変数の内容の変更とリトライ"に示されているように、変数データを
取得して修正します。
2.
アクションとして「Replay」を選択し、「Recover」をクリックしてスコープを再生
します。
例外の再スロー 例外を再スローし、BPEL障害ハンドラ(Catchブランチ)を使用して障害
を処理できます。
1.
44 ページの"入力変数の内容の変更とリトライ"に示されているように、変数データを
取得して修正します。
2.
アクションとして「Rethrow」を選択し、「Recover」をクリックして障害を再スロー
します。
45
プロセスの中断 障害が発生したアクティビティのインスタンスを中断できます。
1.
アクションとして「Abort」を選択し、「Recover」をクリックしてインスタンスを中
断します。
中断、入力変更、新しいインスタンスの作成 このリカバリ・アクションを使用するシナ
リオの例は、プロセスへの不正な入力によってインスタンスで障害が発生する場合です。
この場合、現在のインスタンスを終了し、修正されたペイロードの新しいインスタンスを
インスタンス化する必要があります。
1.
「New Instance」をクリックして、Initiate ページにアクセスします。ドロップダウン・
リストの操作の選択項目(initiate)と入力ペイロードは、すでに設定されています。
2.
障 害 が 発生 したインスタンスで使用されたペイロード入力変数の値を修正し、
「Initiate」をクリックして新しいインスタンスを開始します。
障害が発生した複数のアクティビティのリトライ 障害が発生した複数のアクティビティ
の一括リカバリを実行できます。
1.
障害が発生したインスタンスの「Activities」タブに戻ります。
2.
リカバリするすべてのアクティビティを選択します。リカバリできるアクティビティ
にのみ、チェック・ボックスが表示されます。
3.
ドロップダウン・リストからリカバリ・アクションを選択し、「Recover」をクリッ
クします。
46
障害ロギング
現在のロギング・スキームを使用して、すべての障害情報がログに記録されます。ロギン
グに追加するオプションや障害が発生した場合にログに残す追加データはありません。ロ
ギング・スキームのレベルは制御できませんが、障害ポリシーの JavaAction を使用し
てカスタム Java クラスを提供できます。これによって、障害に基づくカスタム・ロギング
を実行できます。
別のファイルまたはデータベースにログを残すには、ユーザーの Java クラスを起動する
JavaAction のポリシーを関連付け、Java コードのすべてのユーザー指定ロギングを実行
します。
JavaAction ポリシーを使用してロギングだけを行うには、defaultAction 属性を使用
して JavaAction を再スロー・アクションに連結します。これによって、障害がプロセ
ス定義の障害 Catch ブランチに送信されます。この場合、カスタム Java クラスはロギング
のみを実行します。
Java アクションの障害ポリシー
Java アクションの障害ポリシーを使用する場合、次の詳細に注意してください。
提供されている Java クラスは、特定のインタフェースに準拠します。このインタ
フェースは、文字列を返します。複数の値を実行後の出力および障害ポリシーに設定
できます。
実装されたメソッドの出力値(戻り値)から障害ポリシーへのマッピングを提供して、
追加の障害ポリシーを実行できます。
ReturnValue が指定されない場合、デフォルトの障害ポリシーが実行されます。
<Action id="ora-java">
<JavaAction ClassName="mypackage.myclass"
defaultAction="ora-human-intervention" propertySet="prop-for-billing">
<!--defaultAction is a required attribute, but propertySet is optional-->
<!-- attribute-->
<ReturnValue value="RETRY" ref="ora-retry"/>
<!--value is not nilable attribute & cannot be empty-->
<ReturnValue value="RETRHOW" ref="ora-rethrow-fault"/>
</JavaAction>
47
</Action>
表 2は、ReturnValueの使用例を示しています。
表 2 Java アクションの障害ポリシーのシステム実装
コード
説明
<ReturnValue value="RETRY"
ref="ora-retry"/>
メソッドが RETRY 文字列を返す場合に oraretry アクションを実行します。
<ReturnValue value="”
ref=”ora-rethrow”/>
検証が失敗します。
<JavaAction
ClassName="mypackage.myclass"
defaultAction="ora-humanintervention">
Java コードの実行後に ora-humanintervention を実行します。提供された
ReturnValue とメソッドからの戻り値が一
致しない場合にこの属性が使用されます。
<ReturnValue value="RETRY"
ref="ora-retry"/>
<ReturnValue value="” ref=””/>
検証が失敗します。
<JavaAction
ClassName="mypackage.myclass"
defaultAction=" ora-humanintervention">
<ReturnValue></ReturnValue>
検証が失敗します。
Java クラスを起動する場合、IFaultRecoveryJavaClass インタフェースを実装するク
ラスを提供できます。このインタフェースには、2 つのメソッドがあります。
public interface IfaultRecoveryJavaClass
{
public void handleRetrySuccess(IFaultRecoveryContext ctx );
public String handleBPELFault( IFaultRecoveryContext ctx );
}
以下の詳細に注意してください。
リトライが成功すると、handleRetrySuccess が起動します。リトライ・ポリシー
は、retrySuccessAction の Java アクションに連結します。
handleBPELFault が起動して、javaAction タイプのポリシーを実行します。
FaultRecoveryContext で次のデータを使用できます。
public interface IfaultRecoveryContext
{
public
public
public
public
Map getProperties();
String getActionId();
String getPolicyId();
String getActivityType();
public
public
public
public
public
public
public
public
public
String getActivityId();
String getActivityName();
String getWsdlLocation();
String getPartnerLinkName();
QName getPortType();
String getCorrelationId();
BPELFault getFault();
BPELProcessId getProcessId();
String getStatus();
48
public void setStatus(String status);
public String setTitle(String title);
public String getTitle();
public int getPriority();
public void setPriority(int priority);
public long getInstanceId();
public Locator getLocator();
public void addAuditTrailEntry(String message, Object detail);
public void addAuditTrailEntry(String message);
public void addAuditTrailEntry(Throwable t);
public Object getVariableData(String name) throws BPELFault;
public Object getVariableData(String name, String partOrQuery)
throws BPELFault;
public Object getVariableData(String name, String part, String query)
throws BPELFault;
public void setVariableData(String name, Object value) throws BPELFault;
public void setVariableData(String name, String partOrQuery, Object
value)
throws BPELFault;
public void setVariableData(String name, String part, String query,
Object value) throws BPELFault;
}
例 4は、javaActionの実装例を示しています。
例 4 javaActionの実装
public class TestJavaAction implements IFaultRecoveryJavaClass
{
public void handleRetrySuccess(IFaultRecoveryContext ctx)
{
System.out.println("This is for retry success");
handleBPELFault(ctx);
}
public void dumpProperties(Map properties)
{
// check if there were properties
if(properties.size() == 0 )
return;
System.out.println("----Begin propeties -----");
Set entries = properties.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext())
{
Map.Entry entry = (Map.Entry) iterator.next();
System.out.println("¥nKey="+entry.getKey());
// all values are list of strings
List propValueList = (List)entry.getValue();
Iterator it = propValueList.iterator();
while (it.hasNext())
{
System.out.print("Value="+it.next()+"¥t");
}
}
System.out.println("¥n----End propeties -----");
}
public String handleBPELFault(IFaultRecoveryContext ctx)
49
{
System.out.println("-----Inside handleFault-----¥n" +
ctx.toString());
dumpProperties(ctx.getProperties());
ctx.addAuditTrailEntry("hi there");
System.out.println("-----End Inside handleFault-----");
return "MANUAL";
}
}
ドキュメント・アクセシビリティ
オラクルは、製品、サービス、およびサポート・ドキュメントを障害のあるお客様にも簡
単に使用していただくことを目標にしています。当社のドキュメントには、ユーザーに支
援技術に関する情報を提供する機能が含まれています。このドキュメントは、HTML 形式
で提供されており、障害のあるお客様が簡単にアクセスするためのマークアップが含まれ
ています。アクセシビリティの標準は進化し続けており、オラクルは当社のドキュメント
をすべてのお客様が利用できるように、市場をリードする他のテクノロジ・ベンダーと積
極的に協力して技術的な問題に対処しています。詳しくは、以下の Oracle Accessibility Program
の Web サイトを参照してください。
http://www.oracle.com/accessibility/
ドキュメント内のサンプル・コードのアクセシビリティ
スクリーン・リーダーは、ドキュメント内のサンプル・コードを常に正しく読み取るとは
限りません。コード表記規則では、右中括弧は別の空の行へ記す必要があります。ただし、
スクリーン・リーダーでは、括弧または中括弧のみを含むテキスト行を読み取らない場合
があります。
ドキュメント内の外部 Web サイトへのリンクのアクセシビリティ
このドキュメントには、オラクルが所有あるいは管理しない他の企業または組織の Web サ
イトへのリンクが含まれる場合があります。オラクルは、それらの Web サイトのアクセシ
ビリティに関する評価や言及は行いません。
Oracle サポート・サービスへの TTY アクセス
オラクルは、アメリカ国内では年中無休で 24 時間、Oracle サポート・サービスへのテキ
スト電話(TTY)アクセスを提供しています。TTY サポートへは、800-446-2398 へお電話
ください。
Oracle SOA Suite の新機能
E10381-02
Copyright © 2005, 2007, Oracle.All rights reserved.
このプログラム(ソフトウェアおよびドキュメントを含む)には、オラクル社およびその関連会社に所有権のある情報が含まれていま
す。このプログラムの使用または開示は、オラクル社およびその関連会社との契約に記された制約条件に従うものとします。著作権、
特許権およびその他の知的財産権と工業所有権に関する法律により保護されています。独立して作成された他のソフトウェアとの互換
性を得るために必要な場合、もしくは法律によって規定される場合を除き、このプログラムのリバース・エンジニアリング、逆アセン
ブル、逆コンパイル等は禁止されています。
本文書に記載された内容は、予告なく変更されることがあります。本文書内に問題が見つかった場合は、書面にて報告してください。
オラクル社およびその関連会社は、本文書に一切間違いがないことを保証するものではありません。これらのプログラムのライセンス
契約において明確に許諾されている場合を除いて、いかなる形式、手段(電子的または機械的)、目的のためにも、これらのプログラ
ムを複製または転用することはできません。
このプログラムがアメリカ政府またはプログラムのライセンスを受け、使用するアメリカ政府の代理人に提供される場合は、以下の注
意事項を適用します。
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S.
Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal
Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation
of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable
50
Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer
Software--Restricted Rights (June 1987).Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
このプログラムは、核、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションへの用途を目的としておりません。
このプログラムをかかる目的で使用する際、上述のアプリケーションを安全に使用するために、適切な安全装置、バックアップ、冗長
性(redundancy)、その他の対策を講じることはライセンシーの責任となります。万一かかるプログラムの使用に起因して損害が発生
いたしましても、オラクル社およびその関連会社は一切責任を負いかねます。
Oracle、JD Edwards、PeopleSoft、および Siebel は、米国 Oracle Corporation およびその子会社、関連会社の登録商標です。その他の
名称はそれぞれの会社の商標です。
このプログラムは、第三者の Web サイトへリンクし、第三者のコンテンツ、製品、サービスへアクセスすることがあります。オラク
ル社およびその関連会社は第三者の Web サイトで提供されるコンテンツについては、一切の責任を負いかねます。当該コンテンツの
利用は、お客様の責任になります。第三者の製品またはサービスを購入する場合は、第三者と直接の取引となります。オラクル社およ
びその関連会社は、(a)第三者の製品およびサービスの品質、(b)購入製品またはサービスに関連する第三者との契約のいかなる条
項の履行(製品またはサービスの提供、保証義務を含む)に関しても責任を負いかねます。また、第三者との取引により損失や損害が
発生いたしましても、オラクル社およびその関連会社は一切の責任を負いかねます。
51
52
Fly UP