プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理
12c (12.1.3)
E54311-05
目次へ移動
目次

前
前へ

B Oracle SOA SuiteとOracle BPM Suiteのトラブルシューティング

この付録では、ロギング・レベルの設定、パラレル・パージと表のパーティション化の問題、接続およびトランザクション・タイムアウトの問題、ランタイム診断の問題、ヒューマン・ワークフローの問題、イベント配信ネットワーク(EDN)の問題、パフォーマンスの問題、サーバー起動のベスト・プラクティス、ブラウザの問題など、Oracle SOA SuiteとOracle BPM Suiteの使用時に発生する可能性がある問題をトラブルシューティングする方法について説明します。その他のトラブルシューティング情報の参照先も示されています。

この付録の内容は次のとおりです。

B.1 トラブルシューティングのためのロギング・レベルの設定

トラブルシューティングを容易にするために、Oracle Enterprise Manager Fusion Middleware Controlで、ロギング・レベルを「TRACE:32 FINEST」レベルに設定することをお薦めします。この項では、このレベルに設定するロガーについて説明します。

トラブルシューティングのためにロギング・レベルを設定する手順は、次のとおりです。

  1. 「ログ構成」ページにアクセスする手順については、「ログ・ファイルの構成」を参照してください。
  2. 「Oracle Diagnostic Loggingレベル(Javaレベル)」リストから、次の親ロガーを「TRACE:32 FINEST」レベルに設定します。
    • oracle.soa

    • oracle.fabric

    • oracle.integration

    • oracle.wsm (このロガーは、「ERROR」レベルの設定でも必要なエラー・メッセージが記録されるため、この設定でも問題ありません)

  3. さらに詳細なロギング管理を行う場合は、親ロガーを展開して、次の任意のロガーを設定します。

    コンポーネント ランタイム・ロガー

    ヒューマン・ワークフロー、承認管理の拡張(AMX)、ルール

    • oracle.soa.services.common

    • oracle.soa.services.identity

    • oracle.soa.services.notification

    • oracle.soa.services.rules

    • oracle.soa.services.rules.obrtrace

    • oracle.soa.services.workflow

    • oracle.soa.services.workflow.common

    • oracle.soa.services.workflow.evidence

    • oracle.soa.services.workflow.metadata

    • oracle.soa.services.workflow.persistency

    • oracle.soa.services.workflow.query

    • oracle.soa.services.workflow.report

    • oracle.soa.services.workflow.runtimeconfig

    • oracle.soa.services.workflow.soa

    • oracle.soa.services.workflow.task

    • oracle.soa.services.workflow.task.dispatch

    • oracle.soa.services.workflow.task.routing

    • oracle.soa.services.workflow.user

    • oracle.soa.services.workflow.verification

    • oracle.soa.services.workflow.performance

    • oracle.soa.services.workflow.worklist

    SOAインフラストラクチャ

    • oracle.fabric.common.wsdl

    • oracle.integration.platform.blocks.deploy

    • oracle.integration.platform.blocks.soap

    • oracle.integration.platform.blocks.local

    • oracle.integration.platform.kernel

    • oracle.integration.plaform.blocks.mesh

    • oracle.integration.platform.common

    • oracle.integration.platform.instance

    • oracle.integration.platform.instance.activity

    • oracle.integration.platform.instance.store

    EDN

    • oracle.integration.platform.blocks.event

    • oracle.integration.platform.blocks.event.saq

    • oracle.integration.platform.blocks.event.jms

    デプロイメント

    oracle.integration

    Oracle Mediator

    • oracle.soa.mediator.common

    • oracle.soa.mediator.common.cache

    • oracle.soa.mediator.common.error

    • oracle.soa.mediator.common.error.recovery

    • oracle.soa.mediator.common.listener

    • oracle.soa.mediator.common.message

    • oracle.soa.mediator.common.persistence

    • oracle.soa.mediator.dispatch

    • oracle.soa.mediator.dispatch.db

    • oracle.soa.mediator.dispatch.resequencer.toplink

    • oracle.soa.mediator.monitor

    • oracle.soa.mediator.resequencer

    • oracle.soa.mediator.resequencer.besteffort

    • oracle.soa.mediator.resequencer.fifo

    • oracle.soa.mediator.resequencer.standard

    • oracle.soa.mediator.service

    • oracle.soa.mediator.service.common.functions

    • oracle.soa.mediator.service.filter

    • oracle.soa.mediator.service.transformation

    • oracle.soa.mediator.serviceEngine

    Oracle BPEL Process Manager

    • oracle.soa.bpel

    • oracle.soa.bpel.console

    • oracle.soa.bpel.engine

    • oracle.soa.bpel.engine.activation

    • oracle.soa.bpel.engine.agents

    • oracle.soa.bpel.engine.bpel

    • oracle.soa.bpel.engine.compiler

    • oracle.soa.bpel.engine.data

    • oracle.soa.bpel.engine.delivery

    • oracle.soa.bpel.engine.deployment

    • oracle.soa.bpel.engine.dispatch

    • oracle.soa.bpel.engine.sensor

    • oracle.soa.bpel.engine.translation

    • oracle.soa.bpel.engine.ws

    • oracle.soa.bpel.engine.xml

    • oracle.soa.bpel.entity

    • oracle.soa.bpel.jpa

    • oracle.soa.bpel.system

    Oracle BPM Suite

    oracle.bpm.bpmn.engine

    Oracle B2B

    • oracle.soa.b2b.apptransport

    • oracle.soa.b2b.engine

    • oracle.soa.b2b.transport

    • oracle.soa.b2b.ui

    • oracle.soa.b2b.repository

    Oracleアダプタ

    oracle.soa.adapter

    Oracle Web Services Manager(OWSM)

    oracle.wsm


  4. 「Oracle Diagnostic Loggingレベル(Javaレベル)」リストから、ロガーレベルを次のいずれかの設定に変更します。
    • TRACE:1 (詳細)

    • TRACE:16 (より詳細)

    • TRACE:32 (最も詳細) - 最も詳細なレベル(トラブルシューティングでのみ使用することをお薦めします)

    変更が有効になるまで数分かかります。

B.1.1 すべての管理対象サーバーからのログ・ファイルおよびスレッド・ダンプ

表B-1に、確認するログ・ファイルと取得するスレッド・ダンプを示します。


表B-1 ログ・ファイルとスレッド・ダンプ

出力 説明

サーバー診断ログ

次のファイルを確認します。

$DOMAIN_HOME/servers/server_name/logs/server_name-diagnostic.log

たとえば、server_namesoa_server1の場合は、soa_server1-diagnostic.logです。

これは、ログ出力を入手できる場所です。デフォルトでは、最新分100 MBの診断ログのみが保持されます。

サーバー・ログ

server_name.log (たとえば、server_namesoa_server1の場合は、soa_server1.logです)

サーバー・コンソールの出力

<stdout>も役に立ちます(特に、デプロイおよびパッチの問題の場合)。

サーバーのスレッド・ダンプ

オペレーティング・システムのコマンド・プロンプトで、次のように入力します。

kill -3 managed_server_process_ID

また、Oracle WebLogic Server管理コンソールを使用することもできます。

  1. Oracle WebLogic Server管理コンソールのナビゲーション・ツリーで、「環境」「サーバー」の順に選択します。

  2. 表の中から、サーバーを選択します。

  3. 「監視」タブを選択します。

  4. 「スレッド」タブを選択します。

  5. 「スレッド・スタックのダンプ」をクリックします。

出力がコンソール・ログに表示されます。

OWSMメッセージ・ログ

次のログに、ネットワーク上のすべてのSOAPメッセージがキャプチャされます。

$DOMAIN_HOME/servers/server_name/logs/owsm/msglogging/diagnostic.log

このログは、デフォルトでは無効になっています。このログを有効にするには、次の手順を実行します。

  1. 「Fusion Middleware Control」「WebLogicドメイン」「Webサービス」「ポリシー」の順に移動します。

  2. ログを有効にするセキュリティ・レベルを選択します。

  3. ポリシーを編集して、ログのアサーションを有効にします。


B.2 パラレル・パージと表のパーティション化の問題

この項では、パラレル・パージと表のパーティション化の問題をトラブルシューティングする方法について説明します。監査レベルの推奨事項も示します。

PL/SQLパージ・スクリプトを使用して、またはOracle Enterprise Manager Fusion Middleware Controlの「自動パージ」ページからインスタンスおよび拒否メッセージを削除できます。詳細は、「データベース増分の管理」を参照してください。

B.2.1 パラレル・パージ・スクリプトの実行

この項では、Oracle SOA Suiteデータベースが管理されておらず、領域を再利用する必要がある状況について説明します。また、この項では、日々の通常の実行に適切なパラメータ設定の識別方法についても説明します。

領域の再利用を試行する際は、パージ・スクリプトを頻繁に実行して、作成されているより大幅に多くのSOAコンポジット・アプリケーションを削除する必要があります。これは、長い待機キューを回避するために監視する必要があるホストおよびデータベース・リソースに影響を与えます。

削除するSOAコンポジット・アプリケーションの目標数は、明確に定めておくことが必要です。そうしないと、パージ・スクリプトが過度に強力に構成される可能性があります。次の内容について説明します。

B.2.1.1 並列度値の指定

適切な並列度(DOP)値を指定する際は、ハードウェア・リソースを考慮する必要があります。DOPは、データベースによってスケジュールされるジョブの数と、ホスト上で同時に実行されるプロセスの数を識別します。

パラレル・パージ・ジョブはI/O集中型です。これは、CPUのみに負荷がかかるのではないことを意味します。ただし、次の式は出発点で、この後で、なんらかの増分を識別するためのテストと監視が必要とされます。

DOP <= PARALLEL_THREADS_PER_CPU x CPU_COUNT

パージ・ジョブは同時に実行されますが、実際にはリソースの競合を回避するために、30秒ずつ遅延させて実行されます。パージ・ジョブが同じSOAコンポジット・アプリケーションをめぐって競合することはないので、この遅延は小さな競合を回避するためではありません。この遅延は、パージ・ジョブの経過時間と関係します。たとえば、DOPが10の場合は、10番目のパージ・ジョブが270秒間スリープしてから開始することを意味します(つまり、(DOP - 1) * 30 sec)

大きなDOP数を指定した場合は、max_runtimeパラメータを適切に設定する必要があります。

B.2.1.2 削除するSOAコンポジット・アプリケーションの解析

領域を再利用する際は、当然のことながら、パージ・スクリプトの各実行でできるだけ多くのSOAコンポジット・アプリケーションを削除したいと考えます。しかし、スクリプトは適切なSOAコンポジット・アプリケーションのデータを解析する必要があり、これはパージの経過時間を独占する可能性があります。

そのため、日付およびmax_countパラメータを適度に設定して頻繁にパージ・スクリプトを実行することで、このデータを削減する必要があります。これを削減するには、パラレル・パージを頻繁に、おそらく1時間に2回程度スケジュールすることが必要です。

解析するSOAコンポジット・アプリケーションのセットは、次のパラメータによって識別されます。

  • min_creation_date

  • max_creation_date

  • retention_date

  • max_count

解析の経過時間を短縮するには、適度なmax_countパラメータ設定が最も効果的な方法です。出発点としてmax_countパラメータを小さく(50,000程度に)設定し、少しずつ増加して最適な値を見つけてください。表のサイズを縮小すると、max_countパラメータと日付の範囲を増加させることができます。

注意:

この削減方法は常に有効ではありません。より大量のデータを解析するために、パラレル問合せを使用することが必要な場合もあります。

B.2.1.3 パラレル問合せスレーブの使用

削減候補のSOAコンポジット・アプリケーションの解析は、主として複数のINSERT ... SELECT文によって実行されます。解析するSOAコンポジット・アプリケーションのセットが大きくなるほど、データベースのコストベースのオプティマイザは全表スキャンの実行を支持するようになります。表の大きな部分を通過する必要がある場合は、マルチブロックI/Oコールを実行する全表スキャンを実行するほうが索引アクセスよりも高速になる可能性があります。

パラレル問合せは、複数スレーブ・プロセスにわたって作業を調整および分散させることで、全表スキャンのパフォーマンスを大幅に改善できます。さらに、INSERTの部分のPARALLELヒントが、APPENDモードで実行されます。これはダイレクト・パス挿入によってパフォーマンスをさらに向上させます。

スケジュールされたパージ・ジョブと同様に、パラレル問合せスレーブはI/O集中型で、CPUのみに負荷がかかるわけではありません。ただし、PARALLELヒントのDOPを選択する際は、次の式を出発点とすると役立ちます。

DOP <= PARALLEL_THREADS_PER_CPU x CPU_COUNT

注意:

パラレル・パージ・ジョブの数を識別するためのDOP設定と、パラレル問合せスレーブの数を識別するためのDOP設定があります。これらのDOP設定は両方とも、ホスト上で実行されるプロセスの量を左右しますが、同時にではありません。INSERT ... SELECT文が最初に実行されてデータの解析が行われ、その後でパラレル・パージ・ジョブのスケジューリングが実行されます。

INSERT... SELECT文では、PARALLELヒントを、INSERTキーワードまたはSELECTの後、あるいは両方の後に指定できます。したがって、INSERT操作とSELECT操作の並列処理は互いに独立しています。文全体の適切なDOPは、次の優先順位ルールを使用して識別されます。

  • 文のINSERT部分のPARALLELヒント。

  • セッションの設定。

  • INSERT表のDOP。

  • 文内の任意の表の最大DOP設定。

パラレルDMLを実行するには、スクリプト内で次の文を実行する必要があります。

ALTER SESSION FORCE PARALLEL DML STATEMENT

たとえば、この文のDOPは、INSERTでは2SELECTでは4となっています。しかし、優先順位ルールに従うと、文全体のDOPは2になります。

INSERT /*+ PARALLEL(TBL_INS,2) */ INTO TBL_INS
SELECT /*+ PARALLEL(TBL_SEL,4) */ * FROM TBL_SEL;

注意:

必要な場合は、パージ・スクリプト内でDELETEおよびSUBSELECTコマンドにパラレル問合せを適用することもできます。

B.2.1.4 パージ操作のデバッグとトレース

この項では、デバッグとトレースの問題について説明します。

B.2.1.4.1 パージ操作のデバッグ

パージ・スクリプトには、各操作に関する詳細なタイムスタンプ付きの情報を提供するDEBUGフラグが装備されています。この情報を評価して、削除が困難なためにパージ・スクリプトの外部で表パーティション化によって管理したほうが適している表を識別できます。DEBUGフラグを設定する手順は次のとおりです。

  1. デバッグ・ログを書き込むオペレーティング・システム・ディレクトリを作成します。
    mkdir -p /,,/debuglogs
    
  2. SYSDBAアカウントを使用してデータベースに接続して、データベース・ディレクトリを作成します。
    SQL> CREATE OR REPLACE DIRECTORY SOA_PURGE_DIR AS '/../DEBUGLOGS';
    
  3. Oracle SOA Suiteスキーマ所有者に権限を付与します。
    SQL> GRANT READ, WRITE ON DIRECTORY SOA_PURGE_DIR TO DEV_SOAINFRA;
    
  4. Oracle SOA Suiteスキーマ所有者として接続して、DEBUGフラグを設定します。
    cd MW_HOME/SOA_ORACLE_HOME/rcu/integration/soainfra/sql/soa_purge/
    SQL> @DEBUG_ON.SQL;
    
  5. パージ・スクリプトを実行します。
    SQL> SET SEVEROUT ON
    SQL> EXECUTE_PURGE

    注意:

    または、SQL*Plus SPOOLコマンドを使用して、デバッグ情報をキャプチャします。

    パージの期間に関する自動ワークロード・リポジトリ(AWR)レポートも、経過時間と実行時間が最もかかるSQLの識別に役立ちます。

B.2.1.4.2 パージ操作のトレース

パラレル・パージ・スクリプトのパフォーマンスを診断するためにSQLトレースが必要とされる場合は、次が必要となります。

  1. プロシージャsoa.delete_instances_in_parallelsoa.delete_insts_in_parallel_jobを編集して、SQLトレース(10046)を追加します。
    SQL> EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT
    FOREVER,LEVEL 12''';

    注意:

    すべての引用符は一重引用符です。

    これによってパージ・セッションとスケジュールされたパージ・ジョブ(J000)のSQLトレースが、データベースのユーザー・ダンプの宛先に作成されます。

    SQL> SHOW PARAMETER DUMP
    
  2. トレース・ファイルで文字列dbms_scheduler.create_jobまたはdelete_instances_in_parallelを検索することで、メイン・データベース・セッションのトレースを識別します。
    grep -i dbms_scheduler.create_job *
    

    例:

    TESTORA2_ora_3893.trc
    

    スケジュールされたジョブの数はDOPによって異なります。たとえば、DOPが4の場合は、次のようになります。

    • TESTORA2_j000_9585.trc

    • TESTORA2_j001_9587.trc

    • TESTORA2_j002_9604.trc

    • TESTORA2_j003_9606.trc

    パラレル問合せスレーブをパージ・スクリプトにカスタマイズすると、それぞれにトレース・ファイル(P000)が作成されます。パラレル問合せトレース・ファイルの重要度は低くなります。なぜなら、他方のトレース・ファイルの問合せ計画がそれらの実行の説明を行うからです。例:

    PSOAORA2_p000_4284.trc
    
  3. トレース・ファイルでTKPROFを実行し、経過時間でソートして最もコストの大きなSQLを識別します。
    TKPROF TESTORA2_ORA_3893.TRC ../OUT/ TESTORA2_ORA_3893.OUT WAITS=YES
    SYS=YES AGGREGATE=YES SORT=EXEELA
    

    TKPROFの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

B.2.2 Oracle SOA Suiteの表のパーティション化

Oracleの表のパーティション化では、大きな表をパーティションと呼ばれるより小さく扱いやすいセグメントに分解することで、大きな表のメンテナンスに関する多くの問題に対処します。SOAスキーマには、Oracleデータベースのレンジ・パーティション化を利用するためのパーティション・キーが装備されています。

パーティション化の詳細は、「コンポーネント表のパーティション化」を参照してください。

B.2.2.1 参照整合性および同一レベル・パーティション化

パフォーマンス上の理由から、Oracle SOA Suiteサービス・コンポーネント(Oracle B2Bを除く)には、参照整合性を規制するための外部キー制約はありません。この制約がない場合、マスター表と詳細表の関係は、詳細表の不確定な参照を回避するように保護する必要があります。

同一レベル・パーティション化は、マスター表と詳細表をその外部キー制約に基づいてパーティション化するデータベース・パーティション化機能です。この機能は、関連するマスター行と詳細行を同じ日付範囲にグループ化する表パーティションを作成します。このグループ化によって、パーティションが削除された場合に不確定な参照が作成されることがなくなります。

この機能を模倣するために、Oracle SOA Suiteにはビジネス・フロー・インスタンスの作成日をコンポーネントのマスター表(Oracle BPEL Process ManagerOracle Mediatorおよびヒューマン・ワークフロー)にプッシュ・ダウンする機能が装備されています。SOAインフラストラクチャは、他のすべてのコンポーネントが依存する最上位のコンポーネントであるため、この方法ではすべての依存行が日付範囲によってグループ化されます。

たとえば、SCA_FLOW_INSTANCE表のCREATED_TIME列のタイムスタンプは、次の表にプッシュ・ダウンされます。

  • Oracle BPEL Process Managerマスター表CUBE_INSTANCEの列CPST_INST_CREATED_TIME、その後これはCUBE_SCOPE.CI_PARTITON_DATEといった依存表にプッシュ・ダウンされます。

  • Oracle Mediatorマスター表MEDIATOR_INSTANCEの列COMPOSITE_CREATION_DATE、その後これは依存表にプッシュ・ダウンされます。

注意:

  • 依存表はそのマスターを使用してパーティション化する必要があり、どの場合も、最上位のSOAインフラストラクチャであるSCA_FLOW_INSTANCE表はパーティション化する必要があります。

  • 同一レベル・パーティション化を完了するには、すべての表パーティションは同じ名前と日付範囲を使用する必要があります。

要約すると、同一レベル・パーティション化とは、関連付けられた依存表の行が、それらのマスター表の行と同じパーティション・キー範囲を持つ1つのパーティションに存在することを意味します。したがって、同一レベル・パーティションのそれぞれの詳細行の状態は、その行に関連するマスター表の行から推測できます。

B.2.2.2 SOAコンポジット・アプリケーションのレンジ - ハッシュ・パーティション

レンジ・パーティションではその行をサブパーティションにハッシュして、SOAコンポジット・アプリケーションのレンジ - ハッシュ・パーティション化を実装できます。ハッシュ・サブパーティションはI/Oの分散において効果がある可能性がありますが、Oracle SOA Suiteの表をパーティション化する際は現在推奨されていません。

キーのハッシュは等価性の述語(=IN)と一緒に使用すると効果のある方法で、Oracle BPEL Process Manager CIKEY表など、候補として適したキー付きの表がいくつか存在します。ただし、レンジ - ハッシュ・パーティションだけでは、ハッシュ・キーの一意性を提供しません。コストベースのオプティマイザが一意性を識別するには、問合せで表の全パーティションを検索する必要があります(全表スキャン)。パーティション・プルーニングは検索するパーティションの範囲を絞り込むことで役立ちますが、Oracle SOA Suiteではこの機能は使用されません。(「パーティション・プルーニング」を参照。)したがって、コストベースのオプティマイザが一意性を識別する際に全表スキャンを回避するために、索引が検索されてハッシュ・サブパーティションがバイパスされます。

B.2.2.3 時間隔パーティション化

時間隔パーティション化はレンジ・パーティション化の拡張で、必要に応じてパーティションを自動的に作成するようにデータベースに指示します。

検証スクリプトは現在、グループのすべての表でパーティション名が同じであることを要求します。時間隔パーティション化システムは、パーティションごとに異なるパーティション名を生成します。したがって、これはサポートされません。

B.2.2.4 グローバル・ハッシュ索引

グローバル・ハッシュ索引の使用は、Oracle SOA Suiteの表のパーティション化とは独立しています。

Oracle SOA Suiteは絶え間なく行を挿入し、索引キーの多くは単調増加します。BTREE構造の索引はこれらのキーを挿入し、Oracle Real Application Clusters (Oracle RAC)の設定全体で非常にホットになる可能性がある数個のデータベース・ブロックのみをターゲットにします。これは通常AWRレポート内で、過剰なバッファ・ビジー待機として示されます。多数のデータベース・ブロックにわたって索引キーをランダムに分散させるために、グローバル・ハッシュ索引を使用します。

B.2.2.5 パーティション・プルーニング

レンジ・パーティション・キーが述語として使用されている場合は、オプティマイザは検索するパーティションの数をプルーニングできます。Oracle SOA Suiteおよび特にOracle Enterprise Manager Fusion Middleware Controlは、現在SQL問合せでパーティション・キーを使用しないので、このパフォーマンス機能を利用しません。

同一レベル・パーティション化の要件によって、パーティション・キーは、コンポーネントの作成日ではなくSOAコンポジット・アプリケーションの作成日を使用して移入されます。コンポーネント(Oracle BPEL Process ManagerOracle Mediatorおよびヒューマン・ワークフロー)には自らの作成日があり、これはコンソールの問合せで使用されます。

Oracle BPEL Process Managerの例としては、次のようなものがあげられます。

  • パーティション・キー: 表CUBE_INSTANCECPST_INST_CREATED_TIME

  • 作成日: 表CUBE_INSTANCECREATION_DATE

B.2.2.6 パーティションのパージ

特に行移行スクリプトを使用したときは、パーティション化された表をパージすることが必要になる場合があります。これは、メンテナンスのために表のパーティション化を行うという目的にそぐわないことで、ALTER TABLE ... DROP PARTITIONコマンドによってデータが一括して削除される可能性があります。

パーティション化された表をパージしようとすると、多くの場合、解析パフォーマンスの問題が発生します。パーティションをパージする必要がある場合は、パーティションの縮小も行ってください。詳細は、「領域管理の理解」を参照してください。

B.2.3 監査レベルの低減

この項では、Oracle SOA Suiteスキーマに書き込まれるデータとSOAコンポジット・アプリケーションの監査レベルを下げる方法についてのチューニング情報を提供します。

B.2.3.1 本番環境の監査レベルの設定

デフォルトの監査レベルは、SOAインフラストラクチャ・レベルで「本番」に設定されます。データベース増分を制限するため、および最適パフォーマンスのために、SOAインフラストラクチャ・レベルでの設定を「オフ」にして、かわりにデバッグおよびモニタリングが必要なコンポジットに対してコンポジット・レベルでの監査レベルを「オン」に設定することをお薦めします。コンプライアンス要件がユーザーの監査要件の粒度を決定する場合もあります。

次の図は、コンポジットのホームページからのコンポジットの監査レベルの設定を示しています。

コンポジットのホーム・ページからの監査レベルの設定。

注意:

Oracle Enterprise Manager Fusion Middleware ControlのSOAインフラストラクチャの共通プロパティ・ページを使用して、SOAインフラストラクチャ・レベルでの監査レベル設定を変更できます。SOAインフラストラクチャ・レベルでの監査オフの詳細は、SOAインフラストラクチャ・プロパティの構成を参照してください。

コンポジット・レベルでの監査レベルの設定の詳細は、SOAコンポジット・アプリケーションのホーム・ページでのアプリケーションの状態管理を参照してください。

監査を無効にすると(ビジネス要件でそれが可能な場合)、パフォーマンスが大幅に向上します。「本番」「オフ」に変更すると、(個々のコンポーネントの監査設定をチューニングしないで)パフォーマンスを改善できます。ただし、監査を無効にできない場合は、次の手順に従って監査レベルを下げることをお薦めします。

監査証跡が不要な同期BPELコンポーネントの場合は、次の設定を使用します。

  • inMemoryOptimization = true

  • completionPersistPolicy = faulted

このように設定すると、同期プロセスはインスタンス・フォルトが発生した場合のみ監査証跡に表示されます。

inMemoryOptimizationおよびcompletionPersistPolicyの設定の詳細は、Oracle SOAスイートでのSOAアプリケーションの開発のデプロイメント・ディスクリプタのプロパティを参照してください。

注意:

これらの設定は同期BPELプロセスに使用し、非同期BPELプロセスには使用しないでください。

B.3 接続およびトランザクション・タイムアウトのトラブルシューティング

この項では、接続およびトランザクション・タイムアウトの問題をトラブルシューティングする方法について説明します。

B.3.1 接続タイムアウトの解決

次のような状況では、接続タイムアウト・エラーが発生する可能性があります。

  • 処理に30秒以上かかる大きなペイロードのSOAコンポジット・アプリケーションを実行する場合。

  • Oracle Enterprise Manager Fusion Middleware Controlの「Webサービスのテスト」ページから、大きいペイロードを使用してストレス・テストを起動している場合。

  • ファイル・アダプタ・サービスを使用して、コンポジットに大量のメッセージ・ファイル(100万)を渡している場合。

トランザクション・タイムアウト・プロパティを増やして、こうしたタイムアウト・エラーを回避する手順は、次のとおりです。

  1. Oracle WebLogic管理コンソールにログインします。
  2. 「JTA」をクリックします。
  3. 「タイムアウト」の値を変更します(デフォルトは30です)。
  4. 「保存」をクリックします。
  5. Oracle WebLogic Serverを再起動します。

B.3.2 電子メール通知のタイムアウトの解決

大量の電子メール通知(たとえば、200,000通)が送信された場合、接続タイムアウト・エラーが発生する可能性があります。

そのようなタイムアウト・エラーを回避するには、次のようにします。

  1. JTA Timeout Seconds値を1200に増やします。
  2. NotificationSenderNotificationServiceBeanおよびTaskNotificationSender EJBのEJBタイムアウトを1800に変更します。「リモートWebサービスへの長時間実行される同期コールによるエラーの発生または非同期トランザクションの長時間後のエラー・リターン」を参照してください。
  3. データ・ソースXAトランザクション・タイムアウトの値を1330に増やします。
  4. データベースで、Distributed_lock_timeoutパラメータの値を1400に変更します。

    注意:

    ここで注意が必要な重要な点は、データ・ソースXAトランザクション・タイムアウトJTAトランザクション・タイムアウトより大きく、Distributed_lock_timeoutデータ・ソースXAトランザクション・タイムアウト値よりも大きくする必要があることです。
  5. これらを変更した後に、Oracle WebLogic Serverを再起動します。

    注意:

    デプロイメント・ディスクリプタ・ファイルのタイムアウト値を増やして、デプロイメント・ディスクリプタ・ファイルを再デプロイすることもできます。詳細は、Oracle WebLogic Server Enterprise JavaBeansバージョン2.1の開発ガイドのデプロイメント記述子スキーマおよび文書型定義リファレンスおよびその他のデプロイメント関連の項を参照してください。

B.3.3 データベース接続値を増やす

データベースへの接続が遅いと、次のエラー・メッセージが表示される場合があります。

090304)): oracle.toplink.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Internal error: Cannot obtain 
XAConnection weblogic.common.resourcepool.ResourceDeadException: Pool 
SOADataSource has been disabled because of hanging connection tests, cannot 
allocate resources to applications.

このことが発生した場合は、次の手順を実行します。

  1. Linuxでは$DOMAIN_HOME/bin/setSOADomainEnv.shファイルを、WindowsではDOMAIN_HOME\bin\setSOADomainEnv.cmdファイルを開きます。
  2. DOMAIN_HOME\bin\setSOADomainEnv.cmdファイルを開きます。
  3. 太字で表示されている行を非コメント化します。
    # 8331492: Value of weblogic.resourcepool.max_test_wait_secs is 10 
    # seconds. It can be increased by uncommenting line below if your database 
    # connections are slow. See SOA documentation for more details. 
     EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES}
    -Dweblogic.resourcepool.max_test_wait_secs=30" 
    export EXTRA_JAVA_PROPERTIES 
    
  4. 変更を保存して、管理対象のOracle WebLogic Serverを再起動します。

B.3.4 SOAインフラストラクチャの障害後にデプロイメント・アーカイブのEJBトランザクション・タイムアウト値を更新する

Oracle WebLogic Server管理コンソールの「デプロイメント」展開されたSOAインフラストラクチャ・アプリケーション「FacadeFinderBean」「構成」タブで、「FacadeFinderBean」プロパティのトランザクション・タイムアウト値を更新すると、SOAインフラストラクチャの再起動後に次のエラーが発生することがあります。

java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy223
implementing
 oracle.bpel.services.workflow.verification.IVerificationService,org.springframe
work.aop.SpringProxy,org.springframework.aop.framework.Advised]
to required type
[oracle.bpel.services.workflow.verification.IVerificationService] for
property 'verificationService': no matching editors or conversion strategy found
Message icon - Warning Errors were encountered while performing this operation.

また、SOAインフラストラクチャのステータスも失敗として表示されます。

このエラーはFacadeFinderBeanに固有のものではありません。SOAインフラストラクチャ・アプリケーションの一部であるすべてのEJBにも当てはまります。

このエラーを解決するには、デプロイメント・アーカイブのトランザクション・タイムアウト設定を手動で変更する必要があります。

トランザクション・タイムアウト設定を更新する手順は、次のとおりです。

  1. デプロイメント・アーカイブでfabric-ejb.jarファイルを開きます。
  2. META-INF/weblogic-ejb-jar.xmlファイル内のトランザクション・タイムアウト値を大きくします。
  3. JARファイルを作成しなおします。
  4. 「管理対象サーバーとSOAインフラストラクチャの停止と起動」の説明に従って、SOAインフラストラクチャが含まれている管理対象サーバーを再起動します。

    注意:

    この問題は、SOAインフラストラクチャの一部としてデプロイされたEJBを更新するときにも発生することがあります。この問題が発生した場合は、それらのEJBに含まれている対応するJARファイルを同様の方法で更新する必要があります。

B.3.5 リモートWebサービスへの長時間実行される同期コールによるエラーの発生または非同期トランザクションの長時間後のエラー・リターン

リモートWebサービスに対して長時間実行した同期コールが、JTAトランザクション・ロールバック・エラーで終了する場合があります。(SOAサーバーに対するコールなど)非同期コールを行うトランザクションを実行すると、アプリケーションがエラーを返す場合もあります。サーバー・ログには、この動作の原因となる可能性があるJTAトランザクション・タイムアウトが示されます。

Oracle WebLogic Server管理コンソールで、JTAトランザクションのタイムアウトをチェックする手順は次のとおりです。

  1. Oracle WebLogic Server管理コンソールにログインします。

  2. 「ドメイン構造」で、「サービス」「JTA」の順に選択して、タイムアウト値をチェックします。

    トランザクションが30秒を超えると常にタイムアウトする場合に、それがカスタム・コンポジット同期クライアント呼出しの場合は、設計アプローチを再検討する必要があります。場合によっては、非同期トランザクションとして外部Webサービスを呼び出す方法が最善となります。

    長時間実行される同期トランザクションをサポートするためにJTAを増加させることは、単なる暫定的なメカニズムです。JTAトランザクション・タイムアウト設定の変更の詳細は、「接続タイムアウトの解決」を参照してください。

  3. 同期クライアントの呼出しに長時間がかかる場合は、システムにパフォーマンスの問題がないかどうかをチェックして、それらの解決を試みます。

  4. JTAタイムアウト設定との関連でsyncMaxWaitTimeプロパティとBPELのEJBトランザクション・タイムアウト設定の適切な値をチェックした後でのみ、必要に応じてJTAタイムアウトの値を増加します。

    syncMaxWaitTimeプロパティの表示および変更の詳細は、「BPELプロセス・サービス・エンジン・プロパティの構成」を参照してください。

  5. BPEL EJBトランザクション・タイムアウト設定を表示および変更するには、次の手順を実行します。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」で、「デプロイメント」をクリックします。

    3. 「soa-infra」「EJB」の順に展開します。

    4. 次のEJBを更新します。

      - BPELActivityManagerBean

      - BPELDeliveryBean

      - BPELDispatcherBean

      - BPELEngineBean

      - BPELFinderBean

      - BPELInstanceManagerBean

      - BPELProcessManagerBean

      - BPELSensorValuesBean

      - BPELServerManagerBean

    5. 「保存」をクリックします。

    6. Oracle WebLogic Serverを再起動します。

  6. 非同期トランザクションについては、BPEL EJBトランザクション・タイムアウトとJTAトランザクション・タイムアウトの両方の値をチェックして、必要に応じて調整します。

B.3.6 HTTP POSTタイムアウト値の増加によるパイプの破損エラーの解決

次に示すパイプの破損エラーが表示されたら、Oracle WebLogic Server管理コンソールでHTTP POSTタイムアウト値を大きくしてください。

<BEA-000000> <got FabricInvocationException, Cikey=73410002, FlowId=10001, Current
 Activity Key=73460002-BpInv0-BpSeq0.3-3, Current Activity Label=Invoke_1,
 ComponentDN=default/TestClientWSMEDWSBPELFAProj!2.0*soa_
b2e412f3-1167-4a9a-bbe0-73795f0743d4/BPELProcess1
java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)

HTTP POSTタイムアウト値を大きくする手順は、次のとおりです。

  1. Oracle WebLogic Server管理コンソールにログインします。
  2. 「ドメイン構造」で、「環境」「サーバー」の順に選択します。
  3. 「名前」列で、SOAサーバーをクリックします。
  4. ページ上部で、「プロトコル」タブをクリックします。
  5. 「POSTタイムアウト」フィールドで、値を最大の120に増やします。

B.3.7 大規模ドキュメントを処理する際の例外エラーの解決

大きな添付ファイルを処理する際に、次に示すエラーが表示されたら、EJBプロパティ・タイムアウト値を増やしてください。

java.sql.SQLException: Unexpected exception while enlisting XAConnection
java.sql.SQLException: Transaction rolled back: Transaction timed out after 501
 seconds

EJBプロパティ・タイムアウト値を増やす手順は、次のとおりです。

  1. Oracle WebLogic Server管理コンソールにログインします。
  2. 「ドメイン構造」で、「デプロイメント」をクリックします。
  3. 「soa-infra」「EJB」の順に展開します。
  4. ページ下部で、「EJB」セクションを展開します。
  5. 次のタイムアウト値を増やします。
    • BpelEngineBean

    • BpelDeliveryBean

    • CompositeMetaDataServiceBean

B.4 ランタイム診断のトラブルシューティング

この項では、ランタイムの問題をトラブルシューティングする方法について説明します。

B.4.1 受信処理のワーク・マネージャ・スレッドが利用不可能

決まった数のワーク・マネージャ・スレッドが受信処理に割り当てられているため、Oracle SOA Suiteでスレッドの上限に達した場合、次に示す例外メッセージが表示されます。Oracle SOA Suiteは正常に処理をバック・アウトし、リソースのボトルネックによりスタック・スレッドのシナリオが発生することを防ぎます。このエラーが表示されたら、要求を再送信する必要があります。

<Mar 11, 2014 2:10:16 PM PDT> <Error> <HTTP> <BEA-101017>
<[ServletContext@207971169[app:soa-infra module:/soa-infra path:null
spec-version:3.0]] Root cause of ServletException.
java.lang.Exception: Unable to acquire the workmanager thread resource in
order to process requests directed at compsoite
default/POProcessing!1.0*soa_7a9c6320-c26e-4df2-b29f-7b80782d3693
        at
oracle.integration.platform.blocks.deploy.CompositeLazyLoader.load(CompositeLa
zyLoader.java:112)
        at 
. . .
. . .

B.4.2 「WSDLを読み取れません」というOracle SOA Suite実行時エラー

エンドポイントを参照できない場合、または不適切なデプロイメント・プラン・ファイルを使用してコンポジットがデプロイされている場合は、次のエラーが表示されます。

oracle.fabric.common.FabricException: Cannot read WSDL

この問題を診断する手順は次のとおりです。

  1. 参照用のエンドポイントが稼働していることを確認します。

    WSDLまたはエンドポイントがエラーに示されます。そこで、Oracle Enterprise Manager Fusion Middleware Controlからサービスを参照して、それがアクティブかどうかをチェックできます。サービスがアクティブでエンドポイントが到達可能であったら、SOAインスタンスを検索して、Oracle Enterprise Manager Fusion Middleware ControlのBPELプロセス・サービス・エンジンの「リカバリ」タブでそれを再試行します。

  2. 拡張やカスタマイズの場合は、デプロイメント構成プランで適切なURLが更新されていることを確認します。

    sca_extractPlanを使用してプランを抽出する例を含め、デプロイメント・プランの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のデプロイメント前のターゲット環境向けのアプリケーションのカスタマイズに関する項を参照してください。

B.4.3 BPELインスタンスの自動リカバリで特定インスタンスがリカバリされない

BPELプロセスには、未解決の起動メッセージやコールバック・メッセージ、指定のしきい値の時間に完了していないアクティビティなど、リカバリ可能なアクティビティを自動的にリカバリしようとする自動リカバリ機能が装備されています。ただし、自動リカバリ機能は、数個のインスタンスのリカバリのみを試行し、固定された回数だけ再試行します。一部のインスタンスが自動的にリカバリされない場合は、自動リカバリ・パラメータの構成によってそれらのインスタンスはピックアップされないと考えられます。

この問題の解決方法:

  • 自動的にリカバリするメッセージの最大数を設定します。

    デフォルトでは、Oracle BPEL Process Managerの自動リカバリ機能は、それぞれのリカバリ試行ごとに送信する50件のメッセージを処理します。これはmaxMessageRaiseSizeプロパティによって制御されます。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「BPELプロパティ」「詳細BPEL構成プロパティ」「RecoveryConfig」の順に選択します。

    3. 「RecurringScheduleConfig」「maxMessageRaiseSize」「StartupScheduleConfig」「maxMessageRaiseSize」の両方を開きます。

      それぞれのデフォルト値は50です。負の値に設定すると、データベースから選択されたすべてのメッセージがリカバリのために送信されます。0(ゼロ)の値を指定すると、メッセージはデータベースから選択されません(事実上のリカバリの無効化)。50を超えるメッセージをリカバリするには、その値にプロパティ値を設定します。サーバーに対するリカバリの影響を制限するには、このプロパティを使用します。

  • 1つのメッセージに対して自動リカバリを試行する最大回数を設定します。

    また、同じリカバリ可能インスタンスで実行する自動リカバリ試行の回数も構成できます。入力した値によって、起動メッセージおよびコールバック・メッセージがリカバリされる最大回数が指定されます。値が0(デフォルト値)の場合、すべてのメッセージがリカバリされます。1つのメッセージに対するリカバリ試行の数が、指定された値を超過すると、そのメッセージにはリカバリ不能のマークが付けられます。

    Oracle Enterprise Manager Fusion Middleware Controlで起動メッセージとコールバック・メッセージの自動リカバリ試行を構成する手順は次のとおりです。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「BPELプロパティ」「詳細BPEL構成プロパティ」の順に選択します。

    3. 「MaxRecoverAttempt」を選択し、「値」フィールドに値を入力します。

    4. 「適用」をクリックします。

      自動リカバリは、使用しないほうがよい場合もあります。サービスが多重呼出し不変でない場合は、破損が発生する可能性があります。さらに、自動リカバリ機能はコンポジットを、最後に保存された状態にリストアしますが、これは非同期の呼出しや待機などの直後の可能性があります。したがって、大量のリカバリを実行する前に、プロセスの動作とそれが次に何をするかを理解しておくことが重要です。大量の自動リカバリは、コンポジット・エラーの根本原因が修正された後(たとえば、利用できなかったサービスが利用可能になった後や領域不足のデータベースが修正された後など)でのみ試行してください。また、自動リカバリによって、エラー・シナリオで予期しないロードがトリガーされる可能性もあります。これにより、リモート・サーバー上でブロックするスレッド数が増加して、結果としてSOAサーバーで次々とハングが発生する可能性があります。

      詳細は、「Oracle BPEL Process Managerの自動リカバリの構成」を参照してください。

B.4.4 障害発生時に一部コンポジットは複数回再試行される

BPELプロセス・フローでエラーが発生すると、それが呼び出したすべてのアクティビティとともに再試行されます。これは望ましくない場合もあります。

プロパティGlobalTxMaxRetry(デフォルト値は3)は、再試行可能としてエラーが識別されたときに実行する再試行回数を指定します。たとえば、Webサービスを数回呼び出した後で、データ・ソース・エラーによってデハイドレーションが失敗した場合は、これは再試行可能なエラーとして識別され、前のデハイドレーション状態のすべてのアクティビティが再試行されます。再試行されているアクティビティが多重呼出し不変でない場合(つまり、それらの状態が再試行ごとに変化する可能性があり、同じ動作の提供が保証されない場合)は、複数回の再試行によって問題が生じる可能性があります。

この状況を修正するには、composite.xmlファイルのパートナ・リンク設定セクションでidempotentfalseに設定して多重呼出し不変でないアクティビティを明確にマークすることでコンポジットをカスタマイズして、再試行を防止します。

<property name="bpel.partnerLink.partner_link_name.idempotent">false</property>

idempotentプロパティはOracle Enterprise Manager Fusion Middleware Controlでは設定できません。

また、システムMBeanブラウザでGlobalTxMaxRetry0に設定することもできます。

GlobalTxMaxRetryを設定する手順は、次のとおりです。

  1. 「soa-infra」(SOA_cluster_name)を右クリックします。
  2. 「SOA管理」「共通プロパティ」の順に選択します。
  3. 「詳細SOAインフラ拡張構成プロパティ」をクリックします。
  4. 「GlobalTxMaxRetry」をクリックします。
  5. 「値」フィールドに、適切な値を入力します。
  6. 「適用」をクリックします。

idempotentプロパティの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のパートナ・リンク操作レベルでの冪等性の管理に関する項を参照してください。

B.4.5 アプリケーション・トランザクションが完了せず、基になるコンポジットが実行状態でスタックしている

アプリケーション・トランザクションが完了していないとします。たとえば、注文書のステータスが処理中のままになっている、といった場合です。ビジネス・フロー・インスタンスをチェックすると、コンポジットが実行状態でスタックしていることがわかります。この場合は、コンポーネントはおそらく動作していません。多分失敗しており、リカバリが必要な場合があります。

フォルトは次のような様々な理由で発生する可能性があります。

  • BPELアクティビティがエラー(たとえば、ビジネス・エラー、セキュリティ認証エラー、他のエラーなど)によって失敗した場合。

  • BPELアクティビティが、利用できない外部Webサービスを呼び出した場合。

  • 管理者がOracle Enterprise Manager Fusion Middleware Controlを使用してBPELアクティビティをすでに終了している場合。

  • BPELアクティビティが非同期ADFサービスを呼び出して、メッセージがAQ JMSキューでスタックした場合。

  • BPELアクティビティが非同期ADFサービスを呼び出したが、Oracle SOA Suiteが利用できないために、コールバック・メッセージが到着しなかった場合。

  • BPELアクティビティが同期ADFサービスを呼び出し、これに長時間かかっている場合(またはハングしている場合)。

  • ネットワーク・エラーが発生した場合。

この問題を診断する手順は次のとおりです。

  1. Oracle Enterprise Manager Fusion Middleware Controlにログインします。

  2. ナビゲータ・ペインで、「domain_name」「SOA」に移動します。

  3. 「soa-infra」(SOA_cluster_name)をクリックします。

  4. 「フロー・インスタンス」タブをクリックします。

  5. ビジネス・フロー・インスタンスを検索し、フローIDをクリックします。

    「フローのトレース」ページが表示されます。

    インスタンスが表示されない場合(および「SOAインフラストラクチャの共通プロパティ」ページで「監査レベル」「オフ」に設定されていない場合)は、メッセージがOracle SOA Suiteの外部でスタックしていることを意味します。

    メッセージがOracle Mediatorに到達したものの、BPELフローをインスタンス化していない場合は、エラーが原因でBPELインスタンスが最初からロールバックされている可能性があります。

    BPELフローが存在する場合は、通常は「フローのトレース」ページの「フォルト」セクションに、根本原因をトレースできる失敗したサービスが表示されます。

  6. 「トレース」セクションで、BPELプロセスをクリックします。

  7. BPEL監査証跡を開いて、サービスが失敗した正確なポイントを表示します。

    この情報は、BPELフロー・トレースの「フォルト」タブでも確認できます。これはまた、フォルトをリカバリできるかどうかも示します。

  8. 「raw XMLの表示」リンクをクリックします。

    このリンクから同じ情報を確認して、エラーを表示できます。例:

    ...
    <message>Faulted while invoking operation "modifyUserRoles" on provider
     "UserService". </message><details>
    ...
    <tns:message>JBO-27023: Failed to validate all rows in a
     transaction.</tns:message>
    <tns:severity>SEVERITY_ERROR</tns:severity>
    ...
    <message>The transaction was rolled back. The work performed for bpel instance
     "451042" was rolled back to the previous dehydration point, but the audit
     trail has been saved.
    You can recover the instance from the recovery console by resubmitting the
     callback message or activity for execution.</message
    

    インスタンスは前のデハイドレーション・ポイントにロールバックされているため、ステータスは「実行中」のままになります。

  9. 「監査証跡」タブで、次をメモします。

    • コンポジット名(例: POComposite)

    • コンポーネント(例: UpdateGuid BPELプロセス)

    • BPELインスタンスID(例: bpel:451042)

    これはすべて、リカバリ可能なインスタンスのリカバリで使用されます。「監査証跡」では、リカバリ不可能なビジネス・フォルトとしてエラーがマークされている場合がありますが、メッセージのリカバリ可能性はBPELプロセス・サービス・エンジンの「リカバリ」タブで確認できます。

  10. インスタンスのリカバリを試行するには、「soa-infra」(SOA_cluster_name)を右クリックして、「サービス・エンジン」「BPEL」を選択します。

  11. 「リカバリ」タブをクリックします。

  12. 「タイプ」リストから「アクティビティ」を選択します。

  13. 手順9でメモしたコンポジットとコンポーネントの名前を指定して、「検索」をクリックします。

  14. 固有のBPELインスタンスIDを見つけます。「リカバリ可能」とマークされているフォルトをリカバリできます。

  15. 「タイプ」リストで他のリカバリ・オプションがある場合はそれをチェックします(例: 「起動」および「コールバック」)。

    注意:

    リカバリ可能なメッセージは、SOAインフラストラクチャの「フロー・インスタンス」ページからも検索可能です。

  16. インスタンスがリカバリ可能とマークされていない場合は、サービスを再度呼び出すことはできません(おそらく多重呼出し不変ではないため)。場合によっては、リカバリ不可能な多重呼出し不変でないトランザクションの問題を解決するために、Oracleサポート・サービスに診断情報を提供することが必要になります。

  17. BPELアクティビティが非同期ADFサービスを呼び出した場合に、メッセージがAQ JMSキューでスタックしているときは、server.logファイルとserver-diagnostic.logファイルを表示して、JRF Webサービス・インフラストラクチャがログしたメッセージ・メタデータのロギングを確認できます。

    さらに、ADF診断ログは、必要に応じてデバッグにも使用できます。

    1. 「ECID」フィールドを使用して、対応するADFサービス・ロギングをこれを呼び出したSOAコンポジット・アプリケーションと相関付けて追跡します。

    2. Oracle Enterprise Manager Fusion Middleware Controlでログを表示する際に、「広範囲のターゲット・スコープ」ドロップダウン・リストをクリックして、「farm_name」/「domain_name」(Oracle WebLogicドメイン)を選択し、ドメイン全体のメッセージを表示します。

    3. Oracle WebLogic Serverドメインの「ログ・メッセージ」ページの「選択したターゲット」セクションで、手順17.aで取得した値を持つ「ECID」フィールドが検索に含まれていることを確認します。

    4. 実行コンテンツID (ECID)のログ・レコードを検索および表示して、問題をメモします。

      1つのECIDについて、いくつかのルート・インスタンス(最上位クライアント)があります。適切なインスタンスにドリルダウンして、具体的なフォルトを探す必要があります。

    5. コンポーネントが正常に完了したか、またはエラーが発生して終了したかどうかを観察します。『Oracle Fusion Middlewareの管理』のログ・ファイルの表示と検索に関する項を参照してください。

トランザクションとメッセージをリカバリする様々な方法については、次の章を参照してください。

B.4.6 分析測定イベント処理中のエラー

BPMN、ヒューマン・ワークフロー、CASE分析測定イベントの処理中に、BAMが停止、またはデータベースが使用不可などの理由によってエラーが発生すると、(i)分析メッセージ処理関連のエラーがログに表示され、(ii) BPM_MEASUREMENT_ACTION_EXCEPS表にこれらのエラーのレコードが1つ以上記録されます。これらのイベントは2つのメソッドのいずれかを使用して再公開できます。

測定アクション・サービス・クライアントの使用

republishErroredEvents操作を使用して、24時間以内にエラーが発生した測定イベントを再公開します。この操作はAnalyticsConfig mbeanの一部として使用できます。エラー・イベントを再公開するには、次のアクティビティを実行します。プロンプトが表示されたら、パスワードを入力します。

java    [CLASSPATH]   [PROPERTIES]  oracle.bpm.metrics.action.MeasurementActionRecoveryClient
CLASSPATH:
-classpath $MW_HOME/soa/soa/modules/oracle.bpm.runtime_<version number of instance>/oracle.bpm.analytics.metrics.interface.jar:
           $MW_HOME/soa/wlserver/server/lib/weblogic.jar

次の必須プロパティを入力します。

-Dhost=<host> (soa server host name)
-Dport=<port> (soa server port)
-Duser=<admin user> (soa server admin user name)
-DcompositeName=<soa composite name> (soa server host name)

必要に応じて、次のオプションのプロパティを入力します。

-Drealm = <hostrealm Name>  (default is  jazn.com)
-Dprotocol=<protocol>  (jndi protocol. Default is t3)
-DinitialContextFactory = <jndi initial context factory> (Default is weblogic.jndi.WLInitialContextFactory)
-DmeasurementAction=<action name>  (measurement action name.  Default is ProcessMetrics (BAM 12c))
-DrangeStartDate=mm/dd/yyyy  (Range start date . Default is 24 hours before rangeEndDate )
-DrangeEndDate=mm/dd/yyyy (Range end date. Default is current time)
-Ddebug=true/false (if true, prints the exception stacktraces in case of any error. default is false)

Oracle Enterprise Manager AnalyticsConfig MBean - republishErroredEvents操作の使用

republishErroredEvents操作もAnalyticsConfig mbean (mbean object name = oracle.as.soainfra.config:name=analytics,type=AnalyticsConfig,Application=soa-infra)の一部として使用できます。Oracle Enterprise Manager管理者は、24時間以内にエラーが発生したメッセージにアクセスし、再公開できます。

  1. Oracle Enterprise Managerにログインします

  2. 「oracle.as.soainfra.config」「Server:AdminServer」「AnalyticsConfig」を展開し、「analytics」を選択します。

  3. 右側のペインで「操作」タブを開きます。

  4. 「republishErroredEvents」をクリックします。

  5. 前述の説明に従って、必要な詳細を入力します。

  6. 「起動」をクリックします。

B.5 ヒューマン・ワークフローのトラブルシューティング

この項では、ヒューマン・ワークフローの問題をトラブルシューティングする方法について説明します。

B.5.1 ヒューマン・ワークフロー・サービス・エンジンが利用不可能

SOAサーバー起動時に、次に示す例外が表示される場合があります。この例外は、SOAサーバーがまだ初期化中であるために発生します。SOAサーバーの初期化が完了するまで待ちます。

ORABPEL-30132

exception.code:30132
exception.type: ERROR
exception.severity: 2
exception.name: Workflow Service Engine not ready. SOA server is still
starting.
exception.description: Could not obtain instance of Workflow Service Engine
as the SOA server is still initializing.
exception.fix: Wait for SOA server to finish starting up, and retry.

Oracle Enterprise Manager Fusion Middleware ControlでのSOAサーバーの初期化ステータスの監視の詳細は、「SOAインフラストラクチャの全体的なランタイム・ヘルスの表示」を参照してください。

B.5.2 タスク割当て、ルーティングおよびエスカレーションの問題

表B-2に、タスクの割当て、ルーティングおよびエスカレーションの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-2 タスクの割当て、ルーティングおよびエスカレーションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

割当てが行われずにタスクが完了します。

最も多い問題は、タスクの割当て先の指定にXPath式を使用していて、その式で該当するノードが算出されないことです。その他には、参加者のスキップ条件が正しくないなどの問題が考えられます。

  1. XPath式に関するすべての問題を修正します。

  2. 指定されたデータのXPath式で結果が取得できることを確認します。

  3. ヒューマン・タスク・エディタで、タスクの参加者の「スキップ・ルールの指定」チェック・ボックスで指定されているスキップ条件を確認します。

ビジネス・ルールでリスト・ビルダーが返されていません。

タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって最低1つのリスト・ビルダーが返されることを想定しています。ビジネス・ルールで参加者が不要であることを決定する場合は、ignoreParticipant(...)関数を使用する必要があります。正しいモデルに修正しても、このエラーが表示される場合は、ルールが起動されていない可能性があります。この表の「複数のルールを定義している場合にヒューマン・ワークフロー・タスクで正しくないユーザーが選択されたり、次のメッセージのエラーが発生します」のタイトルの症状を参照してください。

  1. ignoreParticipant(..)関数を使用して、ルールのモデルを作成します。

  2. 最低1つのルールが起動されるように、ルールのモデルが正しく作成されていることを確認します。

ビジネス・ルールで別のタイプのリスト・ビルダーが返されています。

タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって同じタイプのリスト・ビルダーが返されることを想定しています。

ルールを修正します。

複数のルールを定義している場合にヒューマン・ワークフロー・タスクで正しくないユーザーが選択されたり、次のメッセージのエラーが発生します。

Ruleset returned lists with
different list builder

ヒューマン・ワークフロー・タスクでは、実行時にユーザーのリストのフェッチを試行したときに、次のエラーが発生することがあります。

Ruleset returned lists with different list builder

このエラーは、タスク詳細コメント・フィールドに表示されます。また、タスクにより正しくないまたは想定されていないユーザーや承認者が選択されている可能性があります。これは主に、重複するルールの設定が原因で発生します。タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって同じタイプのリスト・ビルダーが返されることを想定しています。

また、ルールセット内のルールは、トランザクションに対して1つのみが該当する必要があります。複数のルールが該当する場合は、最も高い優先度のルールに関連付けられているアクションが実行されます。該当する複数のルールの優先度が同じ場合は、リスト内の最初のルールが選択され、そのアクションが実行されます。

重複するルールを記述しないようにします。各リスト・ビルダーからの制約は、異なるものとし、混在させることはできません。異なるリスト・ビルダーによって複数のルールがトリガーされると、このエラーが発生します。また、1つの制約セットのみが適用されます。

ルールセット内のすべてのルールで、同じトランザクションに対して同じ優先度の複数のルールが該当しないように、優先度が定義されていることを確認してください。

詳細は、Oracle Business Process Management Studioを使用したビジネス・プロセスの作成を参照してください。

パラレル完了基準が満たされていても、パラレル割当て先がタスクの承認または拒否を行う必要があります。

パラレル参加者のための「参加者タイプの追加」ダイアログでは、すべてのパラレル参加者が完了するまで待機するか、または基準が満たされたら完了するように、実行時のヒューマン・タスクを構成できます。

「参加者タイプの追加」ダイアログで、完了について正しい選択を行います。

グループまたはロール内の各ユーザーに個別に割り当てられるものと想定していたタスクが、グループまたはロールに割り当てられます。

タスクの割当て先にグループまたはロールが使用された場合、すぐにタスクがそのグループまたはロールに割り当てられます。タスクの実行時に、個別に割り当てられるわけではありません。グループまたはロール内のいずれかのユーザーが、そのタスクを申告して処理する必要があります。パラレル参加者またはシリアル参加者とあわせて使用した場合に、このユーザーの解決は自動的に行われるものと考えられることが多いようですが、実際はそうではありません。

グループまたはロールのメンバーに個別に割り当てるには、XPath関数のids:getUsersInGroupおよびids:getUsersInAppRoleを使用します。

タスクでルーティング・ルールまたはルールベースの参加者を評価するデシジョン・サービスを呼び出したときに、エラーが発生します。

SOAインフラストラクチャ・インスタンスで、ペイロードの検証が有効になっています。

インスタンスの「ペイロードの検証」チェック・ボックスの選択を解除します。詳細は、「SOAインフラストラクチャ・プロパティの構成」を参照してください。


B.5.3 タスク・アクションの問題

表B-3に、タスク・アクションの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-3 タスク・アクションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ユーザーがタスクのアクションを実行できません。

最も多い問題は、その時点でそのタスクのそのアクションを実行する権限をユーザーが持っていないことです。

ユーザーがタスクの割当て先、所有者または作成者のいずれかであるか、または管理者であるかどうかを確認します。ユーザーがアクションの実行を許可されている場合は、サーバー・ログ・ファイルで、タスクの状態やタスクの割当て先、タスクを取得していたユーザー、許可されていたアクション、指定のタスクでそのユーザーが担当していた役割などの情報を含む、詳細なログ・メッセージを確認します。

タスクがロックされており、Oracle BPM Worklistで更新できません。ORA-30279エラーが表示されます(基礎となるORA SQL例外のORA-20001も表示されます)。

2人のユーザーが同じタスクを同時に更新しようとしています。

他のユーザーが終了するまで待機します。


B.5.4 通知の問題

表B-4に、通知の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-4 通知の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次のエラー・メッセージが表示される場合があります。

[2012-07-05T09:13:05.246-04:
00] [soa_server1] [ERROR] []
[oracle.soa.services.workflow
.common] [tid:
[ACTIVE].ExecuteThread: '6'
for queue:
'weblogic.kernel.Default
(self-tuning)'] [userId:
<anonymous>] [ecid:
dc2ff0568380b04f:23824bc7:13
8570a4e67:-8000-000000000000
1716,0] [APP: soa-infra] <.>
[[ORABPEL-0
at
oracle.bpel.services.workflo
w.task.notification.TaskNoti
fications.notifyForTask(Task
Notifications.java:481)
. . .
. . .

電子メール通知メッセージの本文にアポストロフィがあるかどうかをチェックします。

<%string('À titre de
responsable fonctionnel, une
demande d'approbation 
. . .

文字列にダブル・アポストロフィを追加することで、それぞれのアポストロフィをエスケープします。たとえば、メッセージに'dが含まれている場合は、次のようにこれをエスケープします。

<%string('d'd')%>

次のように変更します。

<%string('d''d')%>

電子メール通知が送信されません。

電子メール・ドライバの構成で使用されている送信(SMTP)サーバーの設定が正しくありません。

簡易メール転送プロトコル(SMTP)ポート、SMTPホスト、ユーザー名、パスワード、電子メールの値をチェックします。

ヒント: 値を検証するには、任意の電子メール・クライアントでこれらの値を使用してSMTPサーバーに接続します。

次の手順を実行して、Oracle Enterprise Manager Fusion Middleware Controlの設定を確認します。

  1. ナビゲータで、「ユーザー・メッセージング・サービス」を右クリックします。

  2. 「usermessagingdriver-email」「電子メール・ドライバ・プロパティ」の順に選択します。

  3. 特にこれらのプロパティの設定を確認してください。

    - OutgoingMailServer

    - OutgoingMailServerPort

タスクの電子メール通知が送信されません。

Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー通知プロパティ」ページで、「通知モード」「なし」に設定されています。

この設定を「電子メール」または「すべて」に変更します。詳細は、「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

通知は次のエラー・メッセージのため送信されません。

No matching drivers found for
sender address = <address>

該当するチャネルに対するUser Messaging Serviceドライバが特定の送信者アドレス・リストで構成されていますが、アプリケーションが送信したメッセージに、一致しない送信者アドレスが設定されています。

注意: User Messaging Serviceサーバーは、アウトバウンド・メッセージの送信者アドレスを使用可能なドライバの送信者アドレスに対して照合(送信者アドレスが設定されている場合)して、メッセージの配信に使用する一致ドライバを検索します。ドライバが1つまたは複数の送信者アドレスを設定している場合、User Messaging Serviceサーバーは、一致する送信者アドレスを持つメッセージのみをそのアドレスに送信します。

次のタスクを実行します。

  • Oracle Enterprise Manager Fusion Middleware Controlを使用して、該当するドライバの次の設定を確認します。

    SenderAddresses

    SenderAddressesの形式は、配信タイプ:アドレスのカンマ区切りのリストです。例:

    EMAIL:sender@example.com,

    EMAIL:sender@example2.com

  • このドライバで、このチャネル(配信タイプ)のすべての送信者アドレスに対するアウトバウンド・メッセージを処理する場合は、このプロパティを空白のままにします。

  • 構成が異なる同じチャネル(配信タイプ)に対して複数のドライバ・インスタンスがデプロイされている場合は、SenderAddressesを使用して、ドライバ・インスタンスを区別します。たとえば、あるインスタンスでSenderAddressesに値を設定して、一致する送信者アドレスを持つアウトバウンド・メッセージのみを処理するようにします。もう一方のインスタンスは、SenderAddressesを空白のままにして、送信者アドレスを指定しない、または最初のドライバ・インスタンスに一致しないすべてのアウトバウンド・メッセージを処理するようにできます。

  • 構文が正しくないSenderAddresses(配信タイプ:が指定されていない場合など)は、ドライバ選択についてはUser Messaging Serviceサーバーによって無視されます。

通知は送信されますが、アクション可能ではありません。

Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー通知プロパティ」ページで、「アクション可能なアドレス」フィールドが設定されていません。

Oracle Enterprise Manager Fusion Middleware Controlで、「アクション可能なアドレス」フィールドに有効な電子メール・アドレスを構成します。詳細は、「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

User Messaging Serviceの電子メール・ドライバで受信サーバー設定を構成したときと同じ電子メール・アドレスが使用されていることを確認します。詳細は、「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

通知は送信されますが、アクション可能ではありません。

ヒューマン・ワークフロー・タスクがアクション可能な通知を送信するように設定されていません。

ヒューマン・タスク・エディタで(このエディタは、Oracle JDeveloper.taskファイルをダブルクリックして起動できます)、「通知」セクションを展開し、「詳細」タブをクリックして、「通知をアクション可能にする」チェック・ボックスを選択します。

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

アクション可能なアドレス・フィールドが正しくありません。

IMAPおよびPOP3のサーバーとポートの値を確認します。電子メール・ドライバの構成で、アクション可能なアドレス・フィールドが使用されていることを確認します。

ヒント: 値を検証するには、任意の電子メール・クライアントでこれらの値を使用して、IMAPサーバーまたはPOP3サーバーに接続します。

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

デフォルト以外の電子メール・クライアントが通知受信用に構成されています。

ユーザーが承認リンクをクリックすると、デフォルトのメール・クライアント・ページが開き、このページで別の電子メール・サーバーに電子メールを送信できます。デフォルトの電子メール・クライアントを、アクション可能な通知を受信するように構成します。

「ワークフロー・タスク・サービス・プロパティ」ページの「アクション可能な電子メール・アカウント」フィールドに、アクション可能な受信電子メール・アカウントとして使用する正しい値を入力します。デフォルトのアカウント名は、「Default」です。

詳細は、「ヒューマン・ワークフロー・タスク・サービス・プロパティの構成」を参照してください。

ヒューマン・ワークフローのアクション可能な通知が送信されますが、応答してもアクションは実行されません。

電子メール・ドライバの受信メール・サーバーの設定が正しくありません。

Oracle Enterprise Manager Fusion Middleware Controlを使用して、次の電子メール・ドライバの設定を確認します。

  • MailAccessProtocol(大文字でIMAPまたはPOP3)

  • ReceiveFolder

  • IncomingMailServer

  • IncomingMailServerPort

  • IncomingMailServerSSL

  • IncomingUserIDs

  • IncomingUserPasswords

  • ImapAuthPlainDisable

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

電子メール・クライアントに、電子メール・ドライバで使用されるアカウントと同じアカウントが構成されています。

ヒューマン・ワークフローの通知サービスがメールをダウンロードして処理する前に、電子メール・クライアントによってメールがダウンロードされて既読にマークされたり、削除されている可能性があります。電子メール・クライアントから、そのアカウントを削除します。

ユーザー通知またはヒューマン・ワークフロー通知が正しい配信タイプ(電子メール、SMSなど)を介して送信されるが、間違ったアドレスに送信されます。

ユーザー・メッセージング・プリファレンスで、ユーザーが、BPELプロセス・ユーザー通知またはヒューマン・ワークフロー通知で使用するために、セルフプロビジョニング・メッセージング・チャネルを作成しました。

注意: User Messaging Preferencesユーザー通知を使用すると、様々なユース・ケースに対する独自のメッセージング・チャネルを作成できます。ただし、これらのチャネルはBPELプロセス・ユーザー通知およびヒューマン・ワークフローには使用しないでください。

BPELプロセス・ユーザー通知またはヒューマン・ワークフロー・ユースケースには、セルフプロビジョニング・メッセージング・チャネルは使用しないでください(つまり、デフォルトのチャネルとして設定しないでください。また、このようなユースケースに対するメッセージ・フィルタで使用しないでください)。BPELプロセス・ユーザー通知およびヒューマン・ワークフローでは、配信タイプ・プリファレンスに対してのみUser Messaging Preferencesを使用します。実際のアドレスは、アイデンティティ管理システムのユーザー・プロファイルから取得されます。

注意: アイデンティティ管理システムのユーザー・プロファイルからのアドレスは、事前定義のチャネル名(勤務先電子メール、業務用携帯電話番号、勤務先電話番号、インスタント・メッセージなど)を使用して、ユーザー・メッセージング・プリファレンスを介して使用可能です。BPELプロセス・ユーザー通知およびヒューマン・ワークフロー・ユースケースには、かわりにこれらの事前定義済メッセージング・チャネルを使用してください。

電子メール通知でOracle BPM Worklistリンクが表示されます。

これはデフォルトの動作です。デフォルトでは、電子メール通知にはOracle BPM Worklistが表示されます。

次の手順を実行します。

  1. ヒューマン・タスク・エディタの「通知」セクションで、「詳細」タブをクリックします。

  2. 「ワークリストURLを通知に表示」チェック・ボックスの選択を解除します。

グループ通知のパフォーマンスが遅いです。

グループ通知のパフォーマンスは、グループ内のメンバーの数(グループのサイズ)によって決まります。

  1. LDAPでグループ用の電子メールIDを設定します。この場合、ヒューマン・ワークフローは、各グループ・メンバーに対して個別の電子メールを送信するのではなく、グループの電子メールIDに1通の電子メールを送信します。

  2. ヒューマン・タスク・エディタの「通知」セクションで、「詳細」タブをクリックします。

  3. すべてのグループ・メンバーに対して1通の電子メールを送信する場合は、「グループ通知構成」 リストから「すべてのユーザー・アドレスを含む電子メールを送信」を選択します。このアクションによって、すべてのメンバーが宛先リストを確認できるようになり、すべてのメンバーに同じ内容が送信されます(ロケールなどは考慮されません)。

  4. 個別に電子メールを送信するが、内容を複数のメンバーで再利用する場合は、「グループ通知構成」リストから「電子メールを個別に送信」(デフォルトの選択)を選択し、「ロケールに基づいて個別のタスク・フォームを使用」の選択を解除します。このアクションによって、グループ・メンバーは、各自のロケールで個別のメールを受信できます。通知内容を作成するために生成されるタスク・フォームは、同じロケールのメンバーで再利用されます。


B.5.5 タスク・ビューの問題

表B-5に、タスク・ビューの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-5 タスク・ビューの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

カスタム(マップ済属性)列のビューへの表示

属性マッピングは、特定のタスク・タイプに対して作成されます。マップ済属性を使用するには、ビューを1つ以上のタスク・タイプに関連付ける必要があります。

Oracle BPM Worklist (表示、作成または編集UI)の「定義」タブで、ビューに対してタスク・タイプを指定します。そのタスク・タイプのマッピングで使用されている属性ラベルが、ビューで使用可能な列として「表示」タブで使用できるようになります。

1つのビューは複数のタスク・タイプと関連付けることができます。「タスク・タイプ」ブラウザから、複数のタスク・タイプを選択できます。複数のタスク・タイプを選択した場合は、それらのすべてのタスク・タイプの属性ラベルが、そのビューで使用できるようになります。

ビューの権限受領者が、ビューの所有者に属するタスクを表示したり編集できます。

ビューがデータとして共有されています。この共有タイプでは、権限受領者が、まるでビューの所有者であるかのようにビューを使用できるため、ビューの所有者のタスクを表示して操作できます。

Oracle BPM Worklist (表示または編集UI)の「定義」タブで、「ビューの共有」「定義のみ」に設定され、権限受領者がビューを自分のタスクに対して使用できるようになっていることを確認します。「ビューの共有」「データ」に設定すると、権限受領者は、ビューをそのビューの所有者のデータに対して使用できるようになります。

新規標準ビューの作成

標準ビューは、管理権限を持つユーザーのみが作成できます。

  1. ログインしているユーザーが管理権限を持っていることを確認します。

  2. 通常どおり、Oracle BPM Worklist (作成または編集UI)を使用して、ビューを定義します。

  3. 「標準ビューに追加」チェック・ボックスを選択します。

    ビューが、標準ビューとして作成されます。

標準ビュー名の国際化

標準ビューの名前フィールドに指定した値をリソース・キーとして使用して、WorkflowLabelsリソース・バンドルから表示名を参照できます。

WorkflowLabelsリソース・バンドルに新規リソース・キーを追加します。このキーは、STD_VIEW.の接頭辞が付く、ビューに使用した名前です。(接頭辞の末尾にはピリオドが必要です。)

あるインスタンスで作成したビューと標準ビューの別のSOAサーバーへの移行

テストから本番への移行ユーティリティを使用する必要があります。

テストから本番への移行ユーティリティを使用すると、ユーザー・ビューと標準ビューをXMLファイルにエクスポートして、そのXMLファイルのビューを別のインスタンスにインポートできます。このユーティリティの詳細は、「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。


B.5.6 タスクの属性マッピングの問題

表B-6に、タスクの属性マッピングの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-6 タスクの属性マッピングの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

Oracle BPM Worklistで、パブリック属性へのマッピングにペイロード属性を使用できません。

Oracle BPM Worklistは、単純なペイロード属性へのマッピングの作成のみをサポートしています。Oracle BPM Worklist.でのマッピングの作成では、タスク・ペイロードの単純な属性のみが表示されます。

  • ペイロードに単純な属性を追加します。

  • デザインタイムで保護付きのマッピングを作成します。Oracle JDeveloperのデザインタイムで、保護付きの属性マッピングにXPath式を使用することで、複雑なペイロード属性へのマッピングを作成できます。

  • RuntimeConfigServiceのAPIを使用して、XPath式を使用したパブリック・マッピングを作成します。

Oracle BPM Worklistで、保護付きの属性ラベルへのマッピングを作成できません。

保護付きのマッピングは、デザインタイムのタスク定義の中でのみ作成できます。実行時にOracle BPM WorklistRuntimeConfigServiceのAPIを使用して、保護付きのマッピングを作成したり更新することはできません。

  • マッピングにパブリック属性ラベルを使用します。

  • デザインタイムのタスク定義で、保護付きの属性ラベルへのマッピングを作成します。

Oracle JDeveloperで、マッピングの作成に使用する属性ラベルが表示されません。

デザインタイムのマッピングは、保護付きの属性ラベルに対してのみ作成できます。接続先のSOAインスタンスに保護付きの属性ラベルが作成されていることを確認してください。

  1. Oracle BPM Worklistに管理者としてログインします。

  2. 「管理」「保護フレックス・フィールド」の順に移動します。

  3. その保護付きの属性ラベルが存在することを確認します。

  4. 必要に応じて、保護付きの属性ラベルを作成します。

属性ラベルの名前の国際化

属性ラベル名をリソース・キーとして使用して、WorkflowLabelsリソース・バンドルから表示名を参照できます。

WorkflowLabelsリソース・バンドルに新規リソース・キーを追加します。このキーは、FLEX_LABEL.の接頭辞が付く、ラベルに使用した名前です(接頭辞の末尾のピリオドに注意してください)。

あるサーバーから別のサーバーへの属性ラベルとマッピングの移行

テストから本番への移行ユーティリティを使用します。

テストから本番への移行ユーティリティを使用すると、パブリック属性ラベル、パブリック属性マッピング、および保護付きの属性ラベルをXMLファイルにエクスポートして、そのXMLファイルのラベルとマッピングを別のインスタンスにインポートできます。

詳細は、「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。


B.5.7 タスク・レポートの問題

表B-7に、タスク・レポートの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-7 タスク・レポートの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次のエラー・メッセージが表示される場合です。

Null Pointer Exception when
running Task Productivity
Report

これは、ワークリストのクライアントのロケールとサーバーのデフォルト・ロケールが異なる場合に、日付の処理に関する問題が原因で発生します。

回避策としては、ワークリストのクライアントのロケールをサーバーと同じロケールに変更するか、日付を指定しないでレポートを実行します。


B.5.8 タスク履歴の問題

表B-8に、タスク履歴の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-8 タスク履歴の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

「参加者の追加」ボタンが無効になっています。

履歴表で、現在または過去の参加者が選択されています。

これは、設計されているとおりの動作です。現在または過去の参加者に対して、非定型参加者を追加することはできません。現在の参加者とは、その時点でタスクが割り当てられている参加者を意味します。

ページをリフレッシュすると、追加したすべての非定型参加者が消えてしまいます。

履歴表への変更が保存されていない可能性があります。

変更を保存してください。そうしない場合、すべての変更は失われます。変更を保存したはずであるのに失われている場合は、バグとして報告してください。

履歴表に予定承認者が表示されません。

予定承認者チェック・ボックスが選択されていない可能性があります。

Oracle BPM Worklist (タスク順序の表の構成)で、予定承認者チェック・ボックスを選択します。

履歴表に相関IDが渡されていないことを示すメッセージ、または相関IDに関連する例外が表示されます。

タスクが開始されていない場合、相関IDが渡されていない可能性があります。

開始されていないタスクに相関IDを渡していることを確認してください。

編集ツールバーが無効になっているか、または表示されません。

ユーザーが参加者を編集する権限を持っていない可能性があります。

  1. ヒューマン・タスク・エディタの「割当て」タブで、右上隅にある「タスクは開始参加者から最終参加者へ移行します」アイコンをクリックします。

    「割当ての構成」ダイアログが表示されます。

  2. 「参加者による新規参加者の編集を許可」チェック・ボックスと「起案者による参加者の追加を許可」チェック・ボックスを選択します。

次のエラー・メッセージが表示される場合です。

<Warning>
<oracle.adf.controller.intern
al.metadata.MetadataService>
 <BEA-000000><ADFc:
 /META-INF/adfc-config.xml: > 
  <Warning>
<oracle.adf.controller.intern
al.metadata.MetadataService><
ADFC-52024> <ADFc: Duplicate
 managed bean definition for
 'aleCompBindings' detected.> 

共有ライブラリoracle.soa.worklist.webappweblogic.xmlで参照され、JARファイルのadflibWorklistComponents.jaradflibTasklistTaskflow.jarがWebアプリケーション内にパッケージ化されています。

原則的には、これらのJARはWebアプリケーション内にパッケージ化すべきではありません。これらは、共有ライブラリとして参照のみ行います。これらのJARをWebアプリケーション内にパッケージ化しないでください。

次のエラー・メッセージが表示される場合です。

<Error> <Deployer>
 <BEA-149265> <Failure
 occurred in the execution of
 deployment request with ID
 '1297964056778' for task
 '3'. Error is:
 'weblogic.management.Deployme
ntException:
[J2EE:160149]Error while
processing library
references. Unresolved
application library
references, defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].'
weblogic.management.Deploymen
tException:
[J2EE:160149]Error while
processing library
references. Unresolved
application library
references, defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].

共有ライブラリoracle.soa.workflow.wcweblogic.xmlで参照されていますが、サーバー上でこの共有ライブラリを使用できません。

アプリケーションをデプロイしようとしているサーバーに、この共有ライブラリがデプロイされていることを確認します。共有ライブラリがデプロイされていても、ターゲットがそのサーバーでない可能性があります。

次のエラー・メッセージが表示される場合です。

java.lang.IllegalStateExcepti
on: Attempt to validate an
already invalid RegionSite: 

これは、サーバー・ログ(たとえば、AdminServer.log)に時々表示される汎用的な例外です。

診断ログ(たとえば、AdminServer-diagnostic.log)で実際の例外を確認して、その例外とバグの内容を報告してください。

次のエラー・メッセージが表示される場合です。

[AdminServer] [NOTIFICATION]
 [J2EE JSP-00008]
 [oracle.j2ee.jsp] [tid:
 [ACTIVE].ExecuteThread: '15'
 for queue:
 'weblogic.kernel.Default
 (self-tuning)'] [userId:
 weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e
3444eb1b:-8000-0000000000002f
0a,0] [APP: FederatedApp_
application1] unable to
 dispatch JSP page: The
 following exception
 occurred:.[[
java.lang.RuntimeException:
 Cannot find FacesContext
        at
javax.faces.webapp.UIComponen
tClassicTagBase.getFacesConte
xt(UIComponentClassicTagBase.
java:2122) 

これは、よくある間違いですが、使用しているコンポーネントとは関係ありません。URLへのfacesの入力を忘れています。例:

http://server:port/FederatedApp
/test.jspx

次のように、URLにfacesを入力します。

http://server:port/FederatedApp/fac
es/test.jspx

B.5.9 タスク・フォームおよびタスク・アクションの問題

表B-9に、タスク・フォームおよびタスク・アクションの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-9 タスク・フォームおよびタスク・アクションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

タスク・フォーム・アプリケーションに空のJSPXページがありません。

N/A

現在は、タスク・フォームはADFタスク・フローを使用して呼び出され、タスク・フローが完了すると、タスク・フォームのタスク・フローを開始したモジュールに制御が戻されるようになっています。そのため、空のJSPXは必要ありません。

タスク・フォームがMicrosoft Internet Explorerにロードされません。

Microsoft Internet Explorerでは、URLの長さに制限があります。

タスク・フォームのURLが長すぎます。

デプロイがclass not found例外で失敗します。

共有ライブラリのエントリがweblogic.xmlに存在しません。

次のエラーが表示される場合があります。

Caused By:
 java.lang.ClassNotFoundException:
oracle.bpel.services.datacontrol.ty
pes.Number 

タスク・フォームのデプロイ時に、共有ライブラリがweblogic.xmlに存在しないことが原因である可能性があります。weblogic.xmlに次の要素を追加します。

<library-ref>
 <library-name>oracle.soa.worklist.w
 ebapp</library-name>
 <specification-version>11.1.1</spec
 ification-version>
</library-ref> 

ホスト名を使用した場合に、タスク・フォームのデプロイおよびアクセスが失敗します。

DNSエントリが存在しません。

DHCPを設定したサーバーを使用している場合は、そのホストのDNSエントリが存在しない可能性があります。そのため、IPアドレスを使用したデプロイやアクセスは成功しても、ホスト名を使用したデプロイやアクセスは失敗することがあります。手動でホストとIPアドレスを追加して、クライアント・コンピュータを更新します。

  • Windowsオペレーティング・システムの場合、通常、これは%windir%\drivers\etc\lmhostsにあります。

  • LinuxまたはUNIXの場合、通常、これは/etc/hostsにあります。

タスク・フォームのURLプロトコル(HTTPまたはHTTPS)

HTTPSまたはHTTP経由でタスク・フォームにアクセスできません。

  • DefaultToDoTaskForm: ワークリストは、ランタイム構成サービスからgetServerInfoのAPIによって返されたポートとプロトコルを使用して、デフォルトのTo-Doタスク・フォームにアクセスします。このAPIは、クラスタ・サーバーまたは管理対象サーバーのフロントエンド・ホスト設定を使用します。HTTPSプロトコルが有効になっている場合は、このプロトコルが優先されます。これは動的な設定で、他のカスタム・タスク・フォームと同様に、Oracle Enterprise Manager Fusion Middleware Controlを使用して、デフォルトのTo-Doタスクの設定を変更できます。

  • CustomTaskForm: カスタム・タスク・フォームは、その設定からHTTPおよびHTTPSの情報を取得します。情報の取得には、JRFのAPIを使用します。これは、クラスタからフロントエンド・ホスト情報を取得し、さらにクラスタのフロントエンド・ホストが設定されていない場合は、管理対象サーバーから情報を取得します。管理対象サーバーのフロントエンド・ホストが設定されていない場合は、通常のポートを使用します。デプロイ時にユーザーがHTTPSポートを有効にした場合は、タスク・フォームによって、この情報がデータベースに保存されます。この発生以降に、ユーザーがOracle WebLogic Server管理コンソールを使用してHTTPSポートを無効にした場合、ユーザーはOracle Enterprise Manager Fusion Middleware Controlを使用して、タスク・フォームのHTTPSポートを削除する必要があります。


注意:

複数タスク・フォームのデプロイ時にjava.lang.OutOfMemoryError: PermGen spaceエラーが表示された場合は、PermGenメモリーを増やすことが必要な場合があります。詳細は、「複数のADFタスク・フォーム・デプロイメントのPermGenメモリー要件」を参照してください。

B.5.10 タスク・コメントと添付ファイルの問題

表B-10に、タスク・コメントと添付ファイルの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-10 タスク・コメントと添付ファイルの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ファイルがアップロードされません。

ファイルが大きすぎます

デフォルトでは、ADFには、各リクエストにつき、2000 KBのサイズ制限があります。次のパラメータをweb.xmlに追加して、アップロードするファイルのファイル・サイズと一時記憶域を調整します。

<context-param>
  <!-- Maximum memory per request
(in bytes) -->
<param-name>oracle.adf.view.faces.U
PLOAD_MAX_MEMORY</param-name>
  <!-- Use 500K -->
  <param-value>512000</param-value>
</context-param>
<context-param>
  <!-- Maximum disk space per
 request (in bytes) -->
<param-name>oracle.adf.view.faces.U
PLOAD_MAX_DISK_SPACE</param-name>
  <!-- Use 5,000K -->
 <param-value>5120000</param-value>
</context-param>
<context-param>
  <!-- directory to store temporary
 files -->
<param-name>oracle.adf.view.faces.U
PLOAD_TEMP_DIR</param-name>
  <!-- Use an ADFUploads
 subdirectory of /tmp -->
<param-value>/tmp/ADFUploads/</para
m-value>
</context-param>

タスク詳細アプリケーションにアップロードしたファイルが、同じタスク・フローに表示されません。

ファイルのアップロード後は、タスク・フォームに生成されている添付ファイルのリンクは無効になります。このリンクをクリックすると、空のストリームが返されます。

ファイルをアップロードする際には、表に添付ファイルのリンクが表示されます。ただし、このリンクは機能しません。タスク詳細をリロードして、ファイルを表示する必要があります。

ファイルの添付を追加すると新規タスク・バージョンが作成されますが、URLの添付を追加しても新規バージョンが作成されません。

URLの添付とファイルの添付では、動作が一致しません。

ファイルがアップロードされた場合、ファイルは永続的な記憶域にアップロードされるため、タスクが保存されます。これにより、新規タスク・バージョンが作成されます。URLの添付では、ユーザー・インタフェース・アプリケーションのローカル・タスク・オブジェクトのみが更新されます。そのため、タスク・バージョンは作成されません。


B.5.11 実行時のデザインタイムの問題

表B-11に、実行時のデザインタイムの問題に関する症状と考えられる原因、考えられる解決策を示します。次の2つの実行時のデザインタイム・ツールを使用できます。

  • Oracle SOA Composer

  • Oracle BPM Worklist「タスク構成」タブ


表B-11 実行時のデザインタイムUIの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

実行時のデザインタイム・ツールでタスクに行った変更が、そのタスクに表示されません。

実行時のデザインタイム・ツールを使用して、実際にタスクを編集したときよりも前に、そのタスクはインスタンス化されています。

実行時のデザインタイムの更新は、変更後に作成されたインスタンスにのみ反映され、変更前にすでに作成されていたインスタンスには反映されません。

そのため、実行時のデザインタイム・ツールを使用してタスクを編集した場合は、新しいタスクをインスタンス化して、行った変更を新しいタスク・インスタンスに反映します。

実行時のデザインタイム・ツールでタスクに行った変更が、そのタスクに表示されません。

行った変更が、MDSリポジトリにコミットされていない可能性があります。

「保存」ボタンでは、実行時のデザインタイム・ツールで行った変更がサンドボックスにのみ保存されます。これらの変更を操作中に表示するには、「コミット」をクリックして、変更内容をMDSリポジトリに送信します。


B.5.12 ヒューマン・ワークフローAPI (SOAPおよびEJBを含む)の使用の問題

表B-12に、ヒューマン・ワークフローAPI (SOAPおよびEJBを含む)の使用の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-12 ヒューマン・ワークフローAPIの使用の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ヒューマン・ワークフローAPIのJavaDocの場所

N/A

ドキュメント・ライブラリで入手可能なOracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンスを参照してください。

APIの使用方法の理解

N/A

  1. APIのドキュメントを参照してください。

.netを使用したAPIへのアクセス

N/A

SOAP WebサービスのAPIにアクセスする.netクライアントを記述できます。

Java APIクライアントを使用しようとすると、Class not foundのエラーが表示されます。

クライアント・クラスパスに、すべての必要なJARファイルが存在しません。

-

単純な承認タスクとあわせて使用したり、タスクの開始時にタスクを動的にルーティングするための、単純なパターン用のルーティング・スリップの作成

N/A

oracle.bpel.services.workflow.task.impl.SimpleApprovalTaskUtilを参照してください。

新規作成されたタスクはタスクUIに表示されません。

createTaskアクティビティにはSimpleWorkflowAppが必要です。これはSOAサーバーの設定時にはデプロイされていません。

Create Taskグローバル・アクティビティを使用してタスクを作成する前に、Simple Approvalをデプロイします。


B.5.13 Oracle JDeveloperのデータ・コントロールとフォームの生成の問題

表B-13に、Oracle JDeveloperのデータ・コントロールとフォームの生成の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-13 Oracle JDeveloperのデータ・コントロールとフォームの生成の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

タスク・フォームの作成時に、Empty1.jspxが生成されません。

XSD要素に基づいてイニシエータ・タスクを作成し、タスク・フォームを自動生成しようとしました。

このファイルは、BPMのイニシエータ・タスク以外では必要ありません。この問題が発生した場合は、adfc-config.xmlで参照しているディレクトリと同じディレクトリにEmpty1.jspxファイルを作成し、このファイルに次の内容を入力します。

<?xml version='1.0'
 encoding='UTF-8'?><jsp:root
xmlns:jsp="http://java.sun.com/JSP/
Page" version="2.1"xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/a
df/faces/rich">  <jsp:directive.page
contentType="text/html;charset=UTF-8"/>
  <f:view>
    <af:document id="d1">
      <af:form id="f1"></af:form>
    </af:document>
  </f:view>
</jsp:root>

B.5.14 ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題

表B-14に、ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-14 ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

よく使用するヒューマン・ワークフロー構成パラメータの設定

N/A

Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー・タスク・サービス」ページおよび「ワークフローの通知」ページを使用します。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOA管理」「ワークフロー構成」「メーラー」タブの順に選択して、通知プロパティにアクセスします。

  3. 「SOA管理」「ワークフロー構成」「タスク」タブの順に選択して、タスク・サービス・プロパティにアクセスします。

詳細は、「ヒューマン・ワークフロー通知プロパティの構成」「ヒューマン・ワークフロー・タスク・サービス・プロパティの構成」を参照してください。

Oracle Enterprise Manager Fusion Middleware Controlのプロパティ・ページで使用できないヒューマン・ワークフロー構成パラメータの設定

N/A

Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザを使用します。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

  3. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「サーバー」「WorkflowConfig」「human-workflow」の順に選択します。

  4. 単純なパラメータを設定するには、「属性」タブで適切なフィールドを編集して、「適用」をクリックします。

  5. 複雑なパラメータを変更するには(たとえば、新しいロケールの追加など)、「操作」タブに切り替えて、適切な操作を選択し、必須フィールドを入力して、「呼出し」をクリックします。

ヒューマン・ワークフロー構成MBeansを編集した後に、システムMBeanブラウザに変更が反映されません。

システムMBeanブラウザには、前にキャッシュされたバージョンのBeanが表示されています。

システムMBeanブラウザの「キャッシュされたツリー・データのリフレッシュ」ボタンをクリックします。

ワークフローのカスタマイズのクラスパスURLにあるリソース・バンドルまたはクラスが、ヒューマン・ワークフロー・サービスで見つかりません。

URLでプロトコルが指定されていないか、URLに末尾のスラッシュ(/)がありません。

構成されているURLが正しい形式で指定され、プロトコルを指定していることを確認します。クラスパスで(JARファイルでなく)ディレクトリを指定する場合は、URLの末尾にスラッシュ文字が必要です。例:

file:///home/wstallar/wfcustomizati
ons/

特定のタスク・コンポーネントのタスク詳細の表示に使用するURLの手動設定

N/A

そのヒューマン・タスク・サービス・コンポーネントに対して、Oracle Enterprise Manager Fusion Middleware Controlの「管理」ページを使用します。

手順は、「ヒューマン・ワークフロー・サービス・コンポーネントのタスク詳細アプリケーションのURI管理」を参照してください。

既存のタスク表示URLエントリを編集または削除したり、新規エントリを追加できます。Oracle BPM Worklistから使用するタスク表示URLの場合は、アプリケーション名をworklistに設定する必要があります。


B.5.15 AMX拡張の問題

表B-15に、AMX拡張の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-15 AMX拡張の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

動的承認グループ・クラスが見つかりません。

Oracle SOA Suiteのクラスパスで、このクラス・ファイルにアクセスできません。

動的承認グループ・クラスへのアクセスを可能にするには、次のディレクトリにクラス・ファイルを配置する必要があります。

$FMW_HOME/SOA_HOME/soa/modules/ora
cle.soa.ext_11.1.1/classes

このディレクトリは、SOAクラスパスの一部です。

Oracle WebLogic Serverを再起動する必要があります。

実行時のデザインタイム中に、承認グループ・リスト・ビルダーに基づいてルールを定義しているときに、グループが存在しないことを示すメッセージが継続して表示されます。

承認グループの名前が引用符(" ")で囲まれていません。

名前を引用符で囲みます(たとえば、"Sample Approval Group Name")。

ルールセット内で、定義されている複数のルールがトランザクションに該当します。正しい制約が適用されていないように思われます。その結果、生成された承認者リストが正しくありません。

ルールセット内のルールは、トランザクションに対して1つのみが該当する必要があります。

複数のルールが該当する場合は、最も高い優先度のルールに関連付けられているアクションが実行されます。

該当する複数のルールの優先度が同じ場合は、リスト内の最初のルールが選択され、そのアクションが実行されます。

ルールセット内のすべてのルールで、同じトランザクションに対して同じ優先度の複数のルールが該当しないように、優先度が定義されていることを確認してください。


B.5.16 Oracle BPM Worklistとタスク領域の問題

表B-16に、Oracle BPM Worklistとタスク領域の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-16 Oracle BPM Worklistとタスク領域の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次の例外メッセージがログに表示されます。

<Warning>
<oracle.adf.controller.internal.
metadata.MetadataService>
<BEA-000000><ADFc:
/META-INF/adfc-config.xml: >
<Warning>
<oracle.adf.controller.internal.
metadata.MetadataService><ADFC-5
2024> <ADFc: Duplicate managed
bean definition for
'aleCompBindings' detected.> 

共有ライブラリoracle.soa.worklist.webappweblogic.xmlファイルで参照されるとともに、JARファイルのadflibWorklistComponents.jaradflibTasklistTaskflow.jarがWebアプリケーション内にパッケージ化されています。

これらのJARはWebアプリケーション内にパッケージ化しないでください。これらは、共有ライブラリとして参照のみ行います。これらのJARをWebアプリケーション内にパッケージ化しないでください。

次の例外メッセージがログに表示されます。

Duplicate default server in
client configuration.
Configuration needs to have only
one default server in client
configuration.
Specify one default server in
client configuration. 

クライアント構成ファイル、またはタスク・フローに渡されたJAXBオブジェクトで、2つのデフォルト・サーバーが指定されています。

クライアント構成ファイルまたは渡されるJAXBオブジェクトで、1つのサーバーのみをデフォルトとしてマークします。

次の例外メッセージがログに表示されます。

The default server is not
specified 

クライアント構成ファイル、またはタスク・フローに渡されたJAXBオブジェクトで、デフォルト・サーバーが指定されていません。

クライアント構成ファイルまたはJAXBオブジェクトで、デフォルト・サーバーがマークされていることを確認します。

次の例外メッセージがログに表示されます。

Invalid display column.
The display column COLUMN NAME
is not a valid Task column.
Specify a valid column name.

タスク・フロー・パラメータdisplayColumnsListに渡された列名が正しくありません。

タスク・フロー・パラメータに正しい列名を渡していることを確認します。

次の例外メッセージがログに表示されます。

java.lang.IllegalStateException:
Attempt to validate an already
invalid RegionSite: 

これは、サーバー・ログ(たとえば、AdminServer.log)に時々表示される汎用的な例外です。

診断ログ(たとえば、AdminServer-diagnostic.log)の実際の例外を確認して、その例外とバグの内容を報告してください。

次の例外メッセージがログに表示されます。

Caused by:
oracle.adf.controller.Controller
Exception: ADFC-02001: The ADF
Controller cannot find
'/WEB-INF/taskList-task-flow-def
inition.xml'

Oracle BPM WorklistのJARは、共有ライブラリoracle.soa.worklist.webappを参照するか、これらをWebアプリケーション内にパッケージ化することによりクラスパスで指定しますが、いずれの方法でも指定されていません。

JARが、共有ライブラリによって参照されているか、アプリケーション内にパッケージ化されていることを確認します。

タスク・リストをリフレッシュすると、タスク・リストのフィルタが削除されます。

受信ボックスは永続的なビューではないため、受信ボックスに設定されているフィルタは、ページの再レンダリング時やタスク・リストのリフレッシュ時に削除されます。

タスク・リストにフィルタを設定するかわりに、必要なフィルタ・セットを設定したユーザー・ビューを作成し、そのビューのviewIdをパラメータViewFilterの値として渡します。これにより、そのビューがタスク・リストのデフォルト・ビューになります。

taskTypesFilterListパラメータを設定しましたが、割り当てたタスクではなく、すべてのタスクが表示されます。

taskTypesFilterListパラメータを指定している場合は、attributesFilterListパラメータの指定を忘れています。

両方のパラメータとAND演算子を使用する必要があります。例:

<parameter
id="taskTypesFilterList"
value="http://xmlns.oracle.com/H
elpDeskRequestSOAApp/HelpDeskReq
uestComposite/HelpDeskRequestHum
anTask,[
http://xmlns.oracle.com/Vacation
RequestApp/VacationRequest/Vacat
ionRequestTask]"/>

<parameter id=
"attributesFilterOperator"
value="and"/>
 <parameter id= "attributesFilterList"
 value="state=ASSIGNED"/>

次の例外メッセージがログに表示されます。

[AdminServer] [NOTIFICATION]
 [J2EE JSP-00008]
 [oracle.j2ee.jsp] [tid:
 [ACTIVE].ExecuteThread: '15'
 for queue:
 'weblogic.kernel.Default
 (self-tuning)'] [userId:
 weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e344
4eb1b:-8000-0000000000002f0a,0]
 [APP: FederatedApp_
application1] unable to dispatch
 JSP page: The following
 exception occurred:.[[
java.lang.RuntimeException:
 Cannot find FacesContext 
at
javax.faces.webapp.UIComponentCl
assicTagBase.getFacesContext(UIC
omponentClassicTagBase.java:2122)

これは、その性質から一般的によくある間違いですが、使用しているコンポーネントとは関係ありません。URLへのfacesの入力を忘れています。例:

http://server:port/FederatedApp/test.jspx

次のように、URLにfacesを入力します。

http://server:port/FederatedApp/
faces/test.jspx

次の例外メッセージがログに表示されます。

[AdminServer] [TRACE] [] []
[tid: [ACTIVE].ExecuteThread:
'5' for queue:
'weblogic.kernel.Default
(self-tuning)'] [userId:
weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e344
4eb1b:-8000-0000000000001d39,0]
[SRC_CLASS:
oracle.bpel.services.workflow.cl
ient.config.ClientConfigurationU
til] [APP: FederatedApp_
application1] [SRC_METHOD:
getClientConfiguration]
WorkflowServiceClientContext:
Cannot find client
configuration file: wf_client_
config.xml 

この問題には、次の3つの原因が考えられます。

  1. クライアント構成ファイルがクラスパスに指定されていません。

  2. JAXBオブジェクトがタスク・フローに渡されていません。

  3. 前述のいずれかを指定している場合は、リモート・クライアントまたはSOAPクライアントのポート番号が正しくありません。

クラスパスでクライアント構成ファイルwf_client_config.xmlが指定されているか、またはJAXBオブジェクトがタスク・フローに渡されていることを確認します。すでに行っている場合は、ポート番号でSOAサーバーが指定されていることを確認します。

次の例外メッセージがログに表示されます。

<Error> <Deployer> <BEA-149265>
<Failure occurred in the
execution of deployment request
with ID '1297964056778' for
task '3'. Error is:
'weblogic.management.DeploymentE
xception: [J2EE:160149]Error
while processing library
references. Unresolved
application library references,
defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].'
weblogic.management.DeploymentEx
ception: [J2EE:160149]Error
while processing library
references. Unresolved
application library references,
defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false]. 

共有ライブラリoracle.soa.workflow.wcweblogic.xmlで参照されていますが、サーバー上でこの共有ライブラリを使用できません。

アプリケーションをデプロイしようとしているサーバーに、この共有ライブラリがデプロイされていることを確認します。共有ライブラリがデプロイされていても、ターゲットがそのサーバーでない可能性があります。

列にマップされているマップ済属性が表示されません。

注意: リリース11g R1 (11.1.1.4)から、Oracle BPM Worklistフレックス・フィールドはマップ済属性と呼ばれるようになりました。

正しいパラメータのセットが、タスク・リストのタスク・フローに渡されていません。

正しいパラメータのセットを渡す方法は、次のとおりです。

<parameter id= "displayColumnsList"
value="assignees,creator,
assignedDate,state,
textAttribute1,textAttribute2"/>

textAttribute1,textAttribute2は、列名に値を渡すための正しい方法です。これらの値に関連付けられている'label name'(マッピングの名前)を指定しても、機能しません。

パラメータtaskTypesFilterListには、完全修飾の値を具体的に渡す必要があります。そうしない場合、列の作成は機能しません。

例:

<parameter
 id="taskTypesFilterList"
value="http://xmlns.oracle.com/Hel
pDeskRequestSOAApp/HelpDeskRequest
Composite/HelpDeskRequestHumanTask
"/>

B.5.17 テストから本番への移行の問題

表B-17から表B-20に、テストから本番への移行の問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-17 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

SOAサーバーのデフォルトのレルム名の検索

N/A

defaultRealmNameは、アイデンティティ構成サービスから取得できます。これは、SOAPサービスのテスト・ページから取得できます。

  1. ブラウザから、次のURLにアクセスします。

    http:host:port/integration/servic
    es/IdentityService/configuration
  2. 「操作」ドロップダウン・メニューから、「getDefaultRealmName」を選択します。

  3. 「起動」ボタンをクリックします。

これにより、デフォルトのレルム名が取得されます。次に、起動に対するサンプルの応答を示します。

<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap
/envelope/">
 <env:Header/>
 <env:Body>
  <realmName
xmlns="http://xmlns.oracle.com/bpel/servi
ces/IdentityService">jazn.com</realmName>
 </env:Body>
</env:Envelope>


表B-18 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次のユーザー認証エラー(次の例では、ユーザーはFMW_USERID、アイデンティティ・コンテキストはjazn.com)が表示されます。

[java] Error in workflow service Web
service operation invocation. The
error is ORA-30501:Error in
authenticating user.
[java] Error in authenticating and
creating a workflow context for
user jazn.com/FMW_USERID. [java]
Verify that the user credentials
and identity service configurations
are correct.

これは、指定されたユーザーがシードされておらず、LDAPプロバイダで使用できない場合に発生します。

ユーザーが適切にシードされているかどうかを識別するには、ブラウザからそのユーザーでOracle BPM Worklistにログインしてみます。そのユーザーでOracle BPM Worklistにログインできれば、ユーザーはシードされています。

Oracle Internet Directoryやその他のLDAPプロバイダを使用している場合は、LDAPプロバイダの構成が正しく完了していることを確認します。そうでない場合、このエラーは解決できません。

ターゲットSOAサーバーにタスク・ペイロード・マップ済属性マッピング(以前のフレックス・フィールド)をインポートしているときに、次のエラーがコンソール・ログに表示されることがあります。

[java] Caused by:
java.sql.SQLIntegrityConstrain
tViolationException: ORA-02291:
integrity constraint (UAT_
SOAINFRA.SYS_C0018364) violated -
parent key not found* * 

ターゲットSOAサーバーへのタスク・ペイロード・マップ済属性マッピングのインポートは、2つのステップの処理で構成されます。

ターゲットSOAサーバーへのタスク・ペイロード・マップ済属性マッピングのインポート操作を行う前に、実行が必要な前提条件のステップがあります。これは、ターゲットSOAサーバーへの属性ラベルのインポート操作です。

正常に完了するためには、ヒューマン・ワークフローのテストから本番への移行ツールを使用して、(正しい順序で)次の操作を実行します。

  1. ターゲットSOAサーバーに属性ラベルをインポートします。

  2. ターゲットSOAサーバーにペイロード・マッピングをインポートします。

詳細は、「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。



表B-19 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ルールの移行時に、次のエラーが発生したと仮定します。

[java]  Error encountered during
migration. [java] Exception in thread
"main"[java] 
UserConfigDataMigrationException:[java]
faultString:Invalid parameters for RULE.
[java] Invalid user and group: both
parameters can not have null
values.[java] To migrate User Rules,
provide the 'user' parameter only.
[java]  To migrate Group Rules, provide
the 'group' parameter only.[java]
oracle.bpel.services.workflow.util.
tools.wfUserConfigDataMigrator.
UserConfigDataMigrationE xception [java]
at oracle.bpel.services.workflow.
util.tools.wfUserConfigDataMigrator.
implhwfMigrator.parseParametersNode

migration.propertiesファイル内に、このエラーに関連する2つのプロパティがあります。

  • user

  • group

ルールの移行(エクスポートまたはインポート)操作時には、これらのいずれか(userまたはgroup)に値を設定する必要があります。つまり、usergroupの両方に、nullまたは空の値を設定することはできません。

これらのいずれかに値を設定します。ユーザー・ルールの移行を実行するには、userパラメータのみを設定します。グループ・ルールの移行を実行するには、groupパラメータのみを設定します。

ルールの移行時に、次のエラーが発生したと仮定します。

[java]  Error encountered during
migration.[java] Exception in
thread "main"[java] 
UserConfigDataMigrationExcepti
on: [java]  faultString:
Invalid parameters for RULE.
[java]  Invalid user and group: both
 parameters can not have values.
[java]  To migrate User Rules,
 provide the 'user'parameter only. 
[java]  To migrate Group Rules,
 provide the 'group' parameter only.
[java]  oracle.bpel.services. workflow.util.tools.wfUserConfigData
Migrator.UserConfigDataMigrationE
xception 

これはこの表の前述の説明と似ています。

ルールの移行(エクスポートまたはインポート)操作時に、usergroupの両方のパラメータに値を設定することはできません。

これらのいずれかに値を指定します。



表B-20 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

インストール後のサーバーのヘルスのテスト

N/A

テストから本番への移行を実行する前に、サーバーのヘルスをテストすることは有用です。

ブラウザから、いくつかのSOAPサービスをテストできます。次に、ヒューマン・ワークフロー・サービスのサブセットとOracle BPM Worklistを示します。

http://host:port/integration/worklistapp/

http://host:port/integration/services
/TaskQueryService/TaskQueryService

http://host:port/integration/services/IdentityService/configuration

http://host:port/integration/services/IdentityService/identity

http://host:port/integration/services/RuntimeConfigService/RuntimeConfigService

これらのサービスで任意の操作をテストして、その操作によって発生する結果を確認できます。同様に、Oracle BPM Worklistにユーザーとしてログインして、問題がないかどうかを確認できます。


テストから本番への移行の問題の詳細は、「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。

B.5.18 アイデンティティ・サービスの問題

表B-21表B-22に、アイデンティティ・サービスの問題に関する症状と考えられる原因、考えられる解決策を示します。


表B-21 アイデンティティ・サービスの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

クラスタ環境で、Oracle BPM Worklistの承認タスクを操作しようとすると、次のエラーが表示される場合があります。

Token Decryption Failed

LDAPベースのリポジトリではなく、ファイルベースのリポジトリを使用しています。これにより、アプリケーション・ロールがノード全体で同期されなくなっています。

クラスタ環境でのリポジトリ構成情報は、『Oracle SOA Suiteエンタープライズ・デプロイメント・ガイド』の手順に従ってください。

LDAPの一部のユーザーのみ、Oracle BPM Worklistにログインできます。

ユーザー・ベースDNが正しく構成されていません。

すべてのシード済グループにユーザー・ベースを指定します。これは、次の2つの方法で行うことができます。

すべての必要なシード済グループにベースDNを追加します。たとえば、次のようにユーザーがシードされている場合、

UserDN 1 : cn=users1,dc=us,dc=oracle,dc=com
UserDN 2 : cn=users2,dc=us,dc=oracle,dc=com
UserDN 3 : cn=users3,dc=us,dc=oracle,dc=com

グループ・ベースDNを次のように指定します。

dc=us,dc=oracle,dc=com

これは、共通のDNです。一部のユーザーDNのみが必要な場合は(たとえば、UserDN1UserDN2)、$DOMAIN_HOME/config/fmwconfig/jps-config.xmlファイル内の名前がidstore.ldapserviceInstanceに、次のプロパティを追加する必要があります。

<serviceInstance name="idstore.ldap"
 provider="idstore.ldap.provider">
 <property name="idstore.config.provider" 
value="oracle.security.jps.wls.internal.idstore.WlsLd
apIdStoreConfigProvider"/>
 <property name="CONNECTION_POOL_CLASS"
value="oracle.security.idm.providers.stdldap.JNDIPool"/>
 <extendedProperty>
   <name>user.search.bases</name>
   <values>
      <value>cn=users1,dc=us,dc=oracle,dc=com</value>
      <value>cn=users2,dc=us,dc=oracle,dc=com</value>
   </values>
 </extendedProperty>
</serviceInstance>

最初のオーセンティケータにシードされているユーザーとグループのみは表示されますが、他のオーセンティケータからは表示されません。

デフォルトでは、最初のオーセンティケータからのユーザーとグループが認可されます。

リリース11.1.1.4以降では、複数の認証者からのユーザーとグループを認可できます。詳細は、「複数の認証プロバイダの構成」を参照してください。



表B-22 アイデンティティ・サービスの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

アイデンティティ・サービスのAPIに、アイデンティティ・コンテキストへのパラメータとしてmyrealm (Oracle WebLogic Server管理コンソールの構成のデフォルト・レルム)を渡すと、次の例外が表示されます。

Exception seen :
 Service"
Unknown macro: {0}
"in configuration" 
Unknown macro: {1}
" could not be
initialized. Error
in initializing
service
"Authentication"
in configuration
"myrealm".

ヒューマン・ワークフローのアイデンティティ・サービスでは、Oracle WebLogic Serverの構成ではなく、WorkflowIdentityConfigファイルに設定されているアイデンティティ・コンテキスト(デフォルトでは、jazn.com)が使用されます。したがって、カスタム・コード内で、jazn.comがアイデンティティ・コンテキストとして渡されている場合は、認証APIは問題なく機能します。

レルム名を変更するために、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザで、WorkflowIdentityConfigファイルを編集できます。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

  3. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「サーバー」「WorkflowIdentityConfig」「human-workflow」「WorkflowIdentityConfig.ConfigurationType」の順に選択します。

  4. setRealmNameの操作を呼び出して、構成を選択し、名前を変更します。この変更では、サーバーの再起動が必要です。

Oracle WebLogic ServerでLDAPを構成すると、Oracle WebLogic Server管理コンソールにユーザーは表示されますが、次のエラーがスローされます。

No Role found
matching the
criteria

グループのベースDNが正しく構成されていません。参照されているグループが、LDAPに存在しないか、LDAPの構成時に設定されたグループ・ベースDNの外部にシードされている可能性があります。

すべてのシード済グループにグループ・ベースを指定します。これは、次の2つの方法で行うことができます。

すべての必要なシード済グループにベースDNを追加します。たとえば、次のようにグループがシードされている場合、

GroupDN 1 : cn=groups1,dc=us,dc=oracle,dc=com
GroupDN 2 : cn=groups2,dc=us,dc=oracle,dc=com
GroupDN 3 : cn=groups3,dc=us,dc=oracle,dc=com

グループ・ベースDNを次のように指定します。

dc=us,dc=oracle,dc=com

これは、共通のDNです。一部のグループDNのみが必要な場合は(たとえば、GroupDN1GroupDN2)、$DOMAIN_HOME/config/fmwconfig/jps-config.xmlファイル内の名前がidstore.ldapserviceInstanceに、次のプロパティを追加する必要があります。

<serviceInstance name="idstore.ldap"
 provider="idstore.ldap.provider">
   <property name="idstore.config.provider"
value="oracle.security.jps.wls.internal.idstore.WlsL
dapIdStoreConfigProvider"/>
 <property name="CONNECTION_POOL_CLASS"
value="oracle.security.idm.providers.stdldap.JNDIPool"/>
  extendedProperty>
  <name>group.search.bases</name>
  <values>
    <value>cn=groups1,dc=us,dc=oracle,dc=com</value>
    <value>cn=groups2,dc=us,dc=oracle,dc=com</value>
  </values>
 </extendedProperty>
</serviceInstance>

B.6 ビジネス・イベントおよびイベント配信ネットワークのトラブルシューティング

この項では、ビジネス・イベントおよびイベント配信ネットワーク(EDN)の問題をトラブルシューティングする方法について説明します。

B.6.1 JMSアダプタ接続プール・サイズの増加

EDNでは、JMSアダプタに表B-23に示す接続ファクトリを使用して、イベントの公開およびサブスクリプションについて基礎となるJMSトピックと通信します。


表B-23 JMSアダプタ用の接続ファクトリ

JMSタイプ JMSタイプに対するJMS接続ファクトリ

Oracle WebLogic Server JMS

  • eis/wls/EDNxaDurableTopic

  • eis/wls/EDNxaTopic

  • eis/wls/EDNLocalTxDurableTopic

  • eis/wls/EDNLocalTxTopic

AQ JMS

  • eis/aqjms/EDNxaDurableTopic

  • eis/aqjms/EDNxaTopic

  • eis/aqjms/EDNLocalTxDurableTopic

  • eis/aqjms/EDNLocalTxTopic


大量の同時イベント・パブリッシャまたは大量のイベント・サブスクライバ(あるいはその両方)が存在する環境では、JMSアダプタのデフォルトの接続プール・サイズ(200)を超える場合があります。これにより、次に示すようなResourceLimitExceptionエラーが発生します。

The JCA Binding Component was unable to establish an outbound JCA CCI connection
 due to the following issue: 
  javax.resource.spi.ApplicationServerInternalException:
    Unable to get a connection for pool = "eis/wls/EDNxaDurableTopic",
  weblogic.common.resourcepool.ResourceLimitException: 
    Configured maximum limit of (0) on number of threads allowed to wait for a
 resource reached for pool eis/wls/EDNxaDurableTopic
Please make sure that the JCA connection factory and any dependent connection
 factories have been configured with a sufficient limit for max connections.
Please also make sure that the physical connection to the backend EIS is available
 and the backend itself is accepting connections. 

このエラーが発生した場合は、Oracle WebLogic Server管理コンソールで、JMSアダプタに対応するJMS接続ファクトリの接続プールの「最大接続数」の値を増やす必要があります。表B-24に、JMSアダプタの各JMS接続ファクトリの使用を示します。


表B-24 JMSアダプタの各JMS接続ファクトリの使用

JMS接続ファクトリ アウトバウンド・イベント公開での使用 インバウンド・イベント・サブスクリプションでの使用

eis/wls/EDNxaDurableTopic

可。グローバル・トランザクションによるイベント公開の場合。

可。One And Only One (OAOO)一貫性が設定された永続サブスクリプションの場合。

eis/wls/EDNxaTopic

不可。

可。OAOO一貫性が設定された非永続サブスクリプションの場合。

eis/wls/EDNLocalTxDurableTopic

可。ローカル・トランザクションによるイベント公開の場合。

可。保証付き一貫性が設定された永続サブスクリプションの場合。

eis/wls/EDNLocalTxTopic

不可。

可。保証付き一貫性が設定された非永続サブスクリプションの場合。

eis/aqjms/EDNxaDurableTopic

可。グローバル・トランザクションによるイベント公開の場合。

可。OAOO一貫性が設定された永続サブスクリプションの場合。

eis/aqjms/EDNxaTopic

不可。

可。OAOO一貫性が設定された非永続サブスクリプションの場合。

eis/aqjms/EDNLocalTxDurableTopic

可。ローカル・トランザクションによるイベント公開の場合。

可。保証付き一貫性が設定された永続サブスクリプションの場合。

eis/aqjms/EDNLocalTxTopic

不可。

可。保証付き一貫性が設定された非永続サブスクリプションの場合。


対応するJMS接続ファクトリがイベント公開とイベント・サブスクリプションの両方に使用される場合は、使用された接続数の計算時に、イベント公開の数とイベント・サブスクリプションの数を合せる必要があります。

たとえば、グローバル・トランザクションでイベントを公開する同時BPELプロセス・イベント・パブリッシャが200あり、デフォルトのSOAInternalProcessing_maxThreads150に設定した場合、これらのパブリッシャでは150スレッド全部を使用するため、eis/wls/EDNxaDurableTopicから150接続を取得します。また、ThreadsPerSubscriber5に設定された合計12のSOAイベント・サブスクライバがあります。これらのサブスクライバは、12 x 5 = 60スレッドを使用するため、eis/wls/EDNxaDurableTopicから60接続を取得します。

150 + 60 = 210 > 200 (デフォルト設定)となるため、ResourceLimitExceptionエラーが発生します。

この場合、eis/wls/EDNxaDurableTopicの接続プールの「最大接続数」フィールドで、サイズを増やして大きい値(300など)にする必要があります。

接続プール・サイズを増やす手順は、次のとおりです。

  1. Oracle WebLogic Server管理コンソールにログインします。
  2. 「ドメイン構造」ウィンドウで、「環境」「デプロイメント」「JmsAdapter」「構成」「アウトバウンド接続プール」の順にクリックします。
  3. 「アウトバウンド接続プールの構成表」で、「oracle.tip.adapter.jms.IJmsConnectionFactory」を開きます。
  4. 表B-24の説明に従って、該当する接続ファクトリをクリックします。
  5. 「接続プール」をクリックします。
  6. 「最大接続数」フィールドで、値を(300などに)増やして「保存」をクリックします。

B.6.2 Oracle WebLogic Server JMSによる大量のBPELプロセス・イベントの公開に関するチューニング推奨事項

Oracle WebLogic Server JMSを使用して大量のBPELプロセス・イベント(100万など)を公開すると、EDNが適切にチューニングされていない場合、非常に多くのリカバリ可能なエラー(100万イベントの20%など)が発生する場合があります。たとえば、次のユースケースのシナリオがあるとします。

  • 200スレッド

  • 5000の繰返し

一定期間(40分など)の実行後、次に示すエラーが発生することがあります。

<Jan 8, 2014 10:08:33 AM PST> <Error> <oracle.soa.adapter.jms.outbound>
<BEA-000000> <JMSMessageProducer_produce: [default destination =
jms/fabric/EDNTopic]:weblogic.messaging.kernel.QuotaException: Quota blocking
time exceeded and no quota available>
<Jan 8, 2014 10:08:33 AM PST> <Error> <oracle.soa.adapter.jms.outbound>
<BEA-000000> <JMSMessageProducer_produce: [default destination =
jms/fabric/EDNTopic]:weblogic.messaging.kernel.QuotaException: Quota blocking
time exceeded and no quota available> 

さらに、サブスクリプションが低速で(データベース、コヒーレンス・キャッシュおよびEDNスレッドに対するトランザクション関連の操作が多数あります)、蓄積されたメッセージによって公開が遅くなります。

これが発生した場合は、次の領域をチューニングします。

  • EDN割当は、Oracle WebLogic Server JMSのデフォルトEDNトピックに自動的に定義されます。このEDN割当では、メッセージの上限が50,000です。ユースケースのシナリオに基づいて異なるメッセージの上限を設定した割当を定義する必要があります。詳細は、『Oracle WebLogic Serverのパフォーマンスのチューニング』のWebLogic JMSのチューニングに関する項を参照してください。

  • ユースケースのシナリオに基づいてEDN接続ファクトリの送信タイムアウト値をチューニングします。次のEDN JMS接続ファクトリには、送信タイムアウト値としてデフォルト値10,000 (ミリ秒)が設定されています。

    • EDNConnectionFactory

    • xaEDNConnectionFactory

    詳細は、『Oracle WebLogic Serverのパフォーマンスのチューニング』の割当条件内での送信者のブロックに関する項を参照してください。

  • 負荷が重い場合、JMSトピックにメッセージが蓄積します。EDNクライアントは、メッセージ数が割当の上限を超えると、QuoteExceptionを受信します。EDNクライアントが、BPELプロセス・サービス・コンポーネントが組み込まれているコンポジットの場合、BPELプロセスはエラー・ホスピタルでメッセージを保持します。サブスクライバへの配信が大きく遅延する可能性があります。エラー・ホスピタルのメッセージは、エラー・ホスピタルから手動でリカバリできます。またはBPELプロセス・サービス・エンジンの「リカバリ」タブから自動でリカバリできます。詳細は、「エラー・ホスピタルでのフォルトからのリカバリ」および「BPELプロセス・サービス・エンジンのメッセージ・リカバリの実行」を参照してください。

B.6.3 EDNイベント・バスと配信のチューニング

システムMBeanブラウザで次のEDNプロパティをカスタマイズできます。

  1. 「soa-infra」を右クリックします。
  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。
  3. 「検索」フィールドにEDNConfigと入力して「検索」アイコンをクリックするか、または「アプリケーション定義のMBean」「oracle.as.soainfra.config」「サーバー: soa_server「EDNConfig」「edn」の順に展開します。
  4. 属性をダブルクリックします。

    プロパティ Type 詳細

    JmsType

    WLJMS

    トピックのデフォルトのJMSタイプ。デフォルトでは、特定のSOAドメインで公開されたEDNイベントは、イベント・サブスクライバで消費されるようデフォルトのJMSトピックに(一時的に)格納されます。有効な値は次のとおりです。

    • WLJMS (Oracle WebLogic Server JMS)

    • AQJMS (Oracle Advanced Queuing JMS)

    NumberOfRetrys

    整数値

    再試行可能例外の場合に、イベント配信中にEDNが自動的に実行する配信試行回数。これは、保証付き一貫性レベルまたはOne and Only One一貫性レベルのいずれかのサブスクライバに適用されます。再試行がNumberOfRetrys値に達すると、イベントはエラー・ホスピタルに移動され、手動リカバリの対象となります。

    EDNがイベントを配信して再試行不可例外で失敗した場合、再試行はなく、イベントはすぐにエラー・ホスピタルに移動されます。

    GlobalTxMaxRetry = 0である場合、再試行は無効になります。

    Paused

    ブール値

    一時的にイベントの配信を停止します。

    値はtrueまたはfalseです。trueの場合、各Oracle SOA SuiteサブスクライバのJMSコンシューマ・スレッドは削除されます。結果として、非永続サブスクライバの公開済イベントは失われ、永続サブスクライバの公開済イベントはJMSサーバーに保持されます。

    QueueWaitTime

    30,000

    次の再試行まで待機する時間(ミリ秒)。この値は1000以上にする必要があります。デフォルト値は30,000 (30秒)です。

    ThreadsPerSubscriber

    1

    各SOAサブスクライバでイベントの処理に使用する必要があるインバウンド・ポーラー・スレッドの数。イベントをサブスクライブするコンポジットをデプロイするとき、EDNによってこの値に基づいた数のインバウンドJMSコンシューマ・スレッドが初期化されます。「サービス・コンポーネント・レベルでのローカル・インバウンド・ポーラー・スレッド番号の値の更新」の手順に従ってローカル・スレッド番号を構成することで、スレッド番号をカスタマイズできます。ローカルでカスタマイズすると、スレッド番号はこのグローバルなThreadsPerSubscriber値での変更に左右されません。


    注意:

  5. 値を入力して、「適用」をクリックします。

B.6.4 イベントが同じコンポジットの複数リビジョンによって使用される

設計によって、異なるコンポジットで同じイベントをサブスクライブできます。ただし、同じコンポジットの複数のリビジョンで同じイベントをサブスクライブする場合はエラーです。これが発生するのは、コンポジットのアクティブ・バージョンが複数ある場合で、これはパッチ失敗の結果の可能性があります。

次の手順を実行して、同じコンポジットの複数のアクティブ・リビジョンが存在するかどうかを判別し、アクティブである必要のないコンポジット・リビジョンをリタイアさせます。

  1. Oracle Enterprise Manager Fusion Middleware Controlに移動します。
  2. 「SOA」「soa-infra」の順にクリックします。

    「ダッシュボード」タブの「デプロイ済コンポジット」セクションに、デプロイ済コンポジットの名前、リビジョンおよびモード(例: アクティブ)のリストが表示されます。

  3. 同じ名前でアクティブ・モードであるが、リビジョンが異なるコンポジットを識別します。
  4. アクティブである必要のないコンポジット・リビジョンをクリックします。
  5. 「リタイア」ボタンをクリックします。

B.6.5 ビジネス・イベントがSOAサーバーによって2回(以上)取得される

ビジネス・イベントがJ2EEアプリケーションから発生し、複数回取得される場合があります。予期される動作は、それらが1回のみ取得されることです。

パッチが失敗すると、特定のコンポジットの2つのバージョンがアクティブになる可能性があります(つまり、古い方のバージョンがリタイアされていません)。コンポジットの複数のバージョンがアクティブである場合、これらはすべてサブスクライバになり、イベントが複数回取得されます。これは通常のシナリオでは発生しないようにする必要があります。パッチを再適用し、デプロイ済コンポジットのアクティブ・バージョンが1つのみであることを確認します。

B.6.6 EDNとコンポジットまたはクラスタ全体のコンポジット間でメッセージが一部失われる

メッセージは主に、次の理由で失われます。

  1. EDNメッセージが配信されなかった。

  2. ターゲットの非同期サービスが応答しなかった。

  3. メッセージがロールバックされた(メッセージは失われなかったが、引き続きOracle Enterprise Manager Fusion Middleware Controlに表示される)。

この問題では通常、メッセージの宛先を識別し、パスを診断する必要があります。

  • Oracle Web Services Manager Policy Managerセキュリティ構成を確認して、クライアントがSOAコンポジットを起動できるかどうかを調べます。

  • トランザクションが一時(非永続)でないことを確認します。

    Oracle BPEL Process Managerは、非同期コールバックの待機中、デハイドレーション・ストア・データベースを使用して、長期間にわたる非同期プロセスとその現在の状態の情報をデータベースに保持します。データベースにプロセスを格納することにより、プロセスを維持し、システムの停止やネットワークの問題が発生した場合の状態や信頼性の低下を防ぎます。Oracle BPEL Process Managerには、2つのタイプのプロセスがあります。これらのプロセスは、デハイドレーション・ストア・データベースに様々な方法で影響を与えます。

    • 一時プロセス: このプロセス・タイプでは、プロセス実行時に中間デハイドレーション・ポイントは発生しません。未処理のフォルトがある場合、またはプロセス実行時にシステム停止時間がある場合、一時プロセスのインスタンスはトレースをシステムに残しません。一時プロセスのインスタンスは、(正常終了または異常終了に関係なく)処理中に保存できません。一時プロセスは通常、短期間のリクエスト/レスポンス形式のプロセスです。Oracle JDeveloperで設計する同期プロセスは、一時プロセスの例です。

    • 永続プロセス: このプロセス・タイプでは、次のアクティビティのために、実行時にデータベースで1つ以上のデハイドレーション・ポイントが発生します。

      • receiveアクティビティ

      • pickアクティビティのOnMessageブランチ

      • pickアクティビティのOnAlarmブランチ

      • waitアクティビティ

      永続プロセスのインスタンスは、(正常終了または異常終了に関係なく)処理中に保存できます。これらのプロセスは通常長期間存続し、一方向呼出しを介して開始されます。メモリー不足およびシステム停止時間の問題があるため、永続プロセスはメモリーについて最適化できません。

  • ビジネス・フロー・インスタンスがOracle Enterprise Manager Fusion Middleware Controlに表示されず、SOAインフラストラクチャが実行中の場合は、「SOAインフラストラクチャの共通プロパティ」ページで、「監査レベル」「オフ」に設定されていないことを確認します。これは、Oracle Enterprise Manager Fusion Middleware Controlで確認できます。

    1. 「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「共通プロパティ」の順に選択します。

  • ビジネス・フロー・インスタンスが使用可能な場合は、oneWayDeliveryPolicy BPELプロパティの値を確認します。値をOracle Enterprise Manager Fusion Middleware Controlで確認できます。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を展開します。

    2. パーティションを展開し、コンポジットを選択します。

      コンポジットに対する「ダッシュボード」ページが表示されます。

    3. 右上隅にある「XML定義の表示」アイコンをクリックします。

      そのコンポジットに対するcomposite.xmlの内容が表示されます。

    これがasync.cacheに設定されている場合は、メッセージが失われる可能性があります。信頼性の高いメッセージのためには、async.persistに設定します。これは通常、composite.xmlファイルのBPELプロセス・サービス・コンポーネントのセクションで指定します。したがって、これはカスタム・コンポジットに設定できます。値がcomposite.xmlに設定されていない場合は、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザのoneWayDeliveryPolicyの値が使用されます。次の値を指定できます。

    • async.persist: メッセージは、データベース・ハッシュ・マップに保持されます。

    • async.cache: メッセージはメモリーに格納されます。

    • sync: 同じスレッドで直接起動が発生します。

    これらの設定の詳細は、『Oracle SOAスイートでのSOAアプリケーションの開発』の「デプロイメント・ディスクリプタのプロパティ」および「BPELプロセスでのトランザクションおよびフォルト伝播のセマンティクス」を参照してください。

    システムMBeanブラウザにおけるoneWayDeliveryPolicyプロパティの設定の詳細は、「BPELプロセス・サービス・エンジン・プロパティの構成」を参照してください。

    トランザクションによって、応答が返されないターゲット非同期サービスが起動されている可能性もあります。この場合、ビジネス・フロー・インスタンスには、ターゲット非同期サービスへのコールが表示されます。

  • インスタンスがロールバックされ、メッセージがリカバリ中であることを確認します。

    1. Oracle Enterprise Manager Fusion Middleware Controlにログインします。

    2. 「soa-infra」(SOA_cluster_name)を右クリックし、「サービス・エンジン」「BPEL」の順に選択します。

    3. 「リカバリ」タブをクリックします。

    これは、メッセージを受信する外部参照にアクセスできない場合に発生する可能性があります(たとえば、外部Webサービス、Siebelなどのエンタープライズ・アプリケーションなど)。

B.7 パフォーマンスのトラブルシューティング

この項では、パフォーマンスの問題をトラブルシューティングする方法について説明します。

B.7.1 BPELコンパイラが終了せず、例外も報告されないという問題の解決

多数のBPELプロセス・サービス・コンポーネントを含む大規模なSOAコンポジット・アプリケーションがコンパイルされると、BPELコンパイラが終了せず、例外も報告されない場合があります。この場合は、ant-sca-compile.xmlファイルで次のようにJVMヒープ・サイズを増やします。

  • <jvmarg value="-Xmx1024m"/>

  • <jvmarg value="-Xmx4g"/>に変更します。

次のコード・サンプルは、詳細を示します。

   <scac input="${scac.input}" outXml="${scac.output}"
       error="${scac.error}" appHome="${scac.application.home}"
       failonerror="true" displayLevel="${scac.displayLevel}"
       reportErrors="${scac.reportSchemaValidationErrors}">
       <jvmarg
value="-Djavax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom=oracle.
 xml.xpath.JXPathFactory"/>
       <jvmarg value="-Xms128m"/>
       <jvmarg value="-Xmx4g"/>    
       <jvmarg value="-XX:PermSize=32m"/>
       <jvmarg value="-XX:MaxPermSize=256m"/>
       <jvmarg value="-Doracle.xdkjava.compatibility.version=11.1.1"/>
       <jvmarg value="-Doracle.soa.compatibility.version=11.1.1"/>
       <!-- jvmarg
 value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/ -->
     </scac>
   </target>  

B.7.2 開いているファイルが多すぎることが原因で発生したメッセージの失敗の解決

使用中のJARファイル数、またはJDK 6/JREによるファイル記述子の使用(あるいはその両方)によっては、実行時またはコンパイル時に、次のエラーが発生する可能性があります。

Message send failed: Too many open files 

このエラーを解決するには、ファイル記述子の数を少なくとも4096に増やします。

  1. descriptorsの値を識別するには、limitコマンド(C shellの場合)またはulimitコマンド(Bash shellの場合)を使用します。通常、1024の値は低すぎます(特にJDK 6の場合)。
    % limit
    
    cputime      unlimited
    filesize     unlimited
    datasize     unlimited
    stacksize    10240 kbytes
    coredumpsize unlimited
    memoryuse    unlimited
    vmemoryuse   unlimited
    descriptors  1024
    memorylocked 500000 kbytes
    maxproc      46720
    
  2. rootユーザーでオペレーティング・システムにログインします。
  3. /etc/security/limits.confファイルを編集してdescriptorsの値を大きくします。

    この例の場合、すべてのユーザーについて制限を4096に増やすと、limits.confファイルは、次のようになります。

    #<domain>      <type>  <item>         <value>
    #
    
    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #@student        -       maxlogins       4
    
    # End of file
    @svrgroup    soft    memlock         500000
    @svrgroup    hard    memlock         500000
    *           soft    nofile          4096
    *           hard    nofile          4096
    
  4. 端末を閉じてから再度開き、変更内容を有効にします。システムの再起動は不要です。

B.7.3 ペイロードが大きいことによって発生するMaxMessageSizeExceededExceptionエラーの解決

MaxMessageSizeExceededExceptionエラーは、デプロイ済のSOAコンポジット・アプリケーションに指定したペイロードが大きい場合に発生します(たとえば、100,000件のリクエストに該当する200vu*500iterなど)。MaxMessageSize構成はその負荷に基づいて構成する必要があります。ペイロードを表示し、MaxMessageSizeExceededExceptionエラーをチェックするには、監査証跡で「XML文書の表示」をクリックします。エラーを解決するには、MaxMessageSizeを80000000に増やすか、session-flush-threasholdを50に減らします。

注意:

この値は負荷によって異なります。MaxMessageSizeのデフォルト値は10000000です。負荷に応じて値を変更します。

MaxMessageSizeの増加

MaxMessageSizeを増加するには、次のとおり実行します。

  1. 管理コンソールにログインします。

  2. 「サーバー」「プロトコル」「一般」「最大メッセージ・サイズ」に移動します。

  3. 値を80000000に変更します。(adminとsoaの両方について)。

  4. 「サーバー」「構成」「サーバーの起動」「引数」に移動し、-Dweblogic.MaxMessageSize = 80000000と設定します。

また、weblogic.MaxMessageSizeプロパティを追加して、-Dweblogic.MaxMessageSizeの値を変更できます。プロパティを追加して値を変更する手順は、次のとおりです。
  1. 次のファイルを開きます。

    • UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME/user_projects/domains/domain_name/bin/setDomainEnv.shを開きます。

    • Windowsオペレーティング・システムでは、MIDDLEWARE_HOME\user_projects\domains\domain_name\bin\setDomainEnv.batを開きます。

  2. 次の値を指定してweblogic.MaxMessageSizeプロパティを追加します。

    EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES}
    -Dweblogic.MaxMessageSize=80000000"
    export EXTRA_JAVA_PROPERTIES 
    
  3. サーバーを再起動します。

session-flush-threasholdの減少

コンソール・クラスタ「soa_cluster」「構成」「レプリケーション」「拡張」に移動し、「セッション・フラッシュのしきい値」の値を「50」(小さい値)に変更します。

B.7.4 表領域の拡張による実行時の問題の回避

データベース表領域が拡張されていない場合は、実行時処理に影響を与える可能性があります。メッセージが処理または保持されず、次の例1および例2のような例外エラーがログ・ファイルに表示される可能性があります。これは、Oracle BPEL Process Managerではインスタンス・データの格納をデータベースに依存しているためです。データベースが使用可能でない場合は、実行時処理に影響を与えます。

例1

INFO: MediatorServiceEngine returning after processing the request for 
operation = processResponse 

[EL Warning]: 2009.01.14 11:46:16.783--UnitOfWork(32372128)--Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 1.1 (Build 
SNAPSHOT-20081007)): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.BatchUpdateException: ORA-01691: unable to 
extend lob segment SH_SOAINFRA.SYS_LOB0000145067C00007$$ by 1024 in 
tablespace SH_SOAINFRA 

Error Code: 1691 
Query: InsertObjectQuery(com.collaxa.cube.persistence.dto.AuditTrail@199b33d) 
[EL Warning]: 2009.01.14 11:46:16.782--UnitOfWork(32372128)--Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 1.1 (Build 
SNAPSHOT-20081007)): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.BatchUpdateException: ORA-01691: unable to 
extend lob segment SH_SOAINFRA.SYS_LOB0000145067C00007$$ by 1024 in 
tablespace SH_SOAINFRA 
. . .
. . .

例2

<bpelFault><faultType>0</faultType><subLanguageExecutionFault
xmlns="http://schemas.oracle.com/bpel/extension"><part
name="summary"><summary>XPath expression failed to execute.
An error occurs while processing the XPath expression; the expression is
ora:readBinaryFromFile('/scratch/vbasaval/dropbox/LFile/PO_5Gig.zip').
The XPath expression failed to execute; the reason was:
java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in
 tablespace DEV12_IAS_TEMP

表領域は、サイズ制限に達したときに、それ自体が指定のサイズだけ拡張するように設定してください。自動拡張を有効にしない場合は、表領域がクリティカルまたは警告のしきい値サイズに達したことを示すアラートが生成されたときに、必ず対応してください。サイズのアラートに対応するには、表領域のサイズを手動で増やします。

SQL*Plusに手動でデータ・ファイルを追加する手順は、次のとおりです。

SQL> alter tablespace SOA12_SOAINFRA add datafile
'/scratch/db12101/Oracle/oradata/SOA12_soainfra2.dbf' size 1000M autoextend on
next 30M maxsize unlimited;

ALTER DATABASE TEMPFILE '/scratch/db12101/Oracle/oradata/SOA12_iastemp.dbf' RESIZE
 100M;
ALTER DATABASE TEMPFILE '/scratch/db12101/Oracle/oradata/SOA12_iastemp.dbf'
 AUTOEXTEND ON NEXT 30M MAXSIZE UNLIMITED;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_mds.dbf' RESIZE
 100M;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_mds.dbf' AUTOEXTEND
 ON NEXT 50M MAXSIZE UNLIMITED;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_soainfra.dbf'
 RESIZE 2048M;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_soainfra.dbf'
 AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_svctbl.dbf' RESIZE
 100M;
ALTER DATABASE DATAFILE '/scratch/db12101/Oracle/oradata/SOA12_svctbl.dbf'
 AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
 
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA1.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA2.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA3.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA4.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA5.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA6.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA7.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA8.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRA9.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAA.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAB.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAC.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAD.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAE.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAF.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAG.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAH.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAI.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAJ.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;
ALTER TABLESPACE "C0123_SOAINFRA" ADD DATAFILE
 '/scratch/db12101/Oracle/oradata/SOA12_SOAINFRAK.dbf' SIZE 100M AUTOEXTEND ON
 NEXT 30M MAXSIZE UNLIMITED;

B.7.5 大量のトランザクションによるデータベース増大の問題の解決

Oracle SOA Suiteトランザクションが失敗して、データベースの領域不足がログに示されている場合は、大量のトランザクションによってデハイドレーション・ストアまたはMDSストアの領域が不足している可能性があります。後者の場合は、次のようなエラーが表示されます。

java.sql.SQLException: ORA-01653: unable to extend table SH_MDS.CUBE_INSTANCE by
16 in tablespace FUSION_TS_TOOLS 

これは、表領域が満杯で、データベースがこれを拡張できないことを示します。

次のタスクを実行します。

  1. 適切なレコード保存ポリシーを考慮して、アプリケーションがランタイム・データに依存していないことを確認しながら、デハイドレーション・ストア表を定期的にパージします。

    パージの後で、領域を結合するコマンドを実行する必要があります。パージ戦略を機能させるためには、どれくらいの期間データをデータベースに保持する必要があるかを理解することが重要です。保存ポリシーは、次のような要因から決定されます。

    • 法律的な要件

    • ライン・オブ・ビジネスの要件

    • データの保存に関する全般的な会社のポリシー

    保存ポリシーが長くなるほど、格納する必要があるデータの量が増加し、それに応じて必要なディスク容量も多くなります。

    パージ戦略の作成の詳細は、「データベース増分管理戦略の策定」および「データベース増分の管理」を参照してください。

  2. パーティション化するために表を構成する前に、Oracleデータベースのパーティション化の需要に対処するための十分なリソースがデータベース・ハードウェアにあることを確認します。

    デハイドレーション・ストアに対しては、レンジ・パーティション化とハッシュ・パーティション化を使用するデータベース・パーティション化が最適なソリューションです。パーティション化は、複数の表にデータを格納することで大きなデータ・セットをより小さく管理しやすいデータ・セットにすることと定義されます。パーティション化戦略は、メンテナンス・オーバーヘッド(パーティションの削除とプルーニング)を軽減してパフォーマンスを改善するうえで大きな役割を担います。パーティション化は、少なくとも、アクティビティが活発な表について行う必要があります。これは、ディスクI/Oを分散させてホット・ディスクを防止するうえで大きな役割を果たします。パーティション化のために表を構成する前に対応することが必要な重要な要件は、Oracleデータベースのパーティション化の需要に対処するための十分なリソースがデータベース・ハードウェアにあることを確認することです。本番前のテストでインストールが大規模であると示された場合は、パーティション化機能を利用するために環境(CPU、メモリーおよびディスク領域)を正しくサイズ調整していることが期待されます。

  3. 最大限のパフォーマンスが得られるように、メモリー、表領域およびパーティションに対してデータベース・パラメータを調整します。詳細は、パフォーマンスのチューニングのデータベース・パラメータのチューニングに関する項を参照してください。
  4. 領域不足の他の表領域について、次の問合せを使用して空き表領域をチェックします。
    SELECT TOTAL.TABLESPACE_NAME "TABLESPACE NAME", FREE_SPACE, (TOTAL_SPACE-FREE_
    SPACE) USED_SPACE, TOTAL_SPACE, ROUND((FREE_SPACE*100/TOTAL_SPACE),2) "FREE %"
    FROM (SELECT TABLESPACE_NAME, SUM(BYTES/1024/1024) FREE_SPACE FROM SYS.DBA_
    FREE_SPACE GROUP BY TABLESPACE_NAME) FREE,
    (SELECT TABLESPACE_NAME, SUM(BYTES/1024/1024) TOTAL_SPACE FROM SYS.DBA_DATA_
    FILES GROUP BY TABLESPACE_NAME) TOTAL
    WHERE FREE.TABLESPACE_NAME = TOTAL.TABLESPACE_NAME AND TOTAL.TABLESPACE_NAME =
     '<TABLESPACENAME>'
    ORDER BY 5;
    
  5. 表領域設定を増やすには、管理者アカウントを使用します。次に例を示します。
    ALTER TABLESPACE TABLESPACE_NAME ADD DATAFILE 'DATAFILE_NAME' SIZE 500M
    AUTOEXTEND ON;
    

B.7.6 ページ表示やトランザクション終了に長時間かかるといったアプリケーションの低速パフォーマンスの観察

ときによって、低速なアプリケーション・パフォーマンスやメモリー・トラッシュが観察される場合があります。たとえば、ページのロードと表示やコンポジット・トランザクションの完了に時間がかかる場合があります。レスポンスが通常より遅く感じられる場合があります。

低速パフォーマンスは様々な原因で発生します。たとえば、多数のサーバーが同じホスト上で実行されている状況や、多数のレコード、セッションまたはロックがデータベースに存在する状況が、原因として考えられます。スレッド競合もパフォーマンス不良の原因になる可能性があります。

注意:

この問題が発生すると、Oracle Enterprise Manager Fusion Middleware Controlでの構成の変更は一切できなくなる可能性があります。

この問題を診断する手順は次のとおりです。

  1. CPU使用率をチェックして、CPU容量に対して負荷やプロセスが過大または過多なためにCPUが飽和していないかどうかを調べます。

    通常の負荷でCPU使用率が100%の場合(目標は70-80%)、ピーク負荷を処理する容量はなく、ハードウェア・リソースは不十分です。追加の負荷を処理できるようにスケールアウト・サーバーを追加してください。

  2. パフォーマンスについてレポートするOracle Enterprise Manager Fusion Middleware Controlを使用してアプリケーションをチェックします。BPELプロセスの監査証跡で、サービス、起動時間およびレスポンス時間のパフォーマンスをチェックします。

  3. パフォーマンスを最大化するために、ロギング・レベルをデフォルトの「INFO」レベルより高く設定しないことをお薦めします。

    デバッグを行う場合は、ロギング・レベルをFINESTレベルに設定する必要があります。ただし、問題が解決されたら、最善のパフォーマンスを得るために、ロギング・レベルをデフォルト・レベルにリセットしてください。また、「SOAインフラストラクチャの共通プロパティ」ページで「監査レベル」「本番」に設定することもお薦めします。これはOracle Enterprise Manager Fusion Middleware Controlで次のように設定できます。

    1. 「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「共通プロパティ」の順に選択します。

    3. 「監査レベル」「本番」に設定します。

  4. サービス・レベル合意(SLA)を維持するために、保存要件に基づいて定期的にパージします。

    データの増加によってパフォーマンスの問題が発生する可能性がある表を識別するには、パフォーマンスのチューニングのインスタンス・データ増加の影響を受ける表の識別に関する項を参照してください。

    パージ・スクリプトの使用の詳細は、「データベース増分の管理」を参照してください。

  5. TopやGlanceなどのモニタリング・ツールを使用して、メモリー、IO、ページング、スワッピング、CPU使用率の負荷の統計をチェックします。

  6. フル・ガベージ・コレクションまたはメモリー不足エラーを避けるために、JVMを最適化します。

    頻繁なガベージ・コレクションは、高いメモリー使用率またはメモリー・リークのいずれかが原因で発生する可能性があります。

    1. オペレーティング・システム・レベルのページング・アクティビティを回避するために、システムで実行されている全JVMの最大ヒープ・サイズの合計が、使用可能な物理RAMの量を超えないようにします。

    2. JRockit Mission Controlメモリー・プロファイリング・ツールを使用して、スレッド・ ダンプとメモリー・スナップショットを取得します。これはOracleサポート・サービスがコードの問題をデバッグする一助となります。スレッド・ダンプの詳細は、「SOAコンポジット・アプリケーションに関する問題の診断」を参照してください。

  7. 競合を回避するためにスレッドを最適化します。調査のためのスレッド・ダンプを取得して、Oracleサポート・サービスにこれを送信します。

  8. JVMとスレッド・ ダンプでデータベースの起動方法をチェックして、データベースのパフォーマンスがボトルネックになっているかどうかを識別します。

  9. データベースAWRスナップショットを実行して、データベース・パフォーマンスの問題の原因を識別します。

  10. データベースの統計が定期的に更新されていることと、メモリー、表領域およびパーティションのチューニング可能な他のパラメータが最大限のパフォーマンスが得られるように効果的に使用されていることを確認します。

    チューニング上の一般的な推奨事項を次に示します。詳細は、パフォーマンスのチューニングのデータベース・パラメータのチューニングに関する項を参照してください。

    • 可能であれば、物理的に別個のディスク領域に索引と表を配置します。

    • ロールバック・セグメントは、データ・セグメントや索引セグメントと一緒に配置しないでください。

    • 非常にアクティブな表や索引は、各自の表領域に分離します。

    • ディスクI/Oを分散させてホット・ディスクを防止するために、非常にアクティブな表や索引をパーティション化します。

    • データベース表の統計を定期的に生成するためのプロセスを配備します。

  11. 大きなオブジェクトの高水位標(HWM)競合を抑制するために、データベース表をチューニングします。HWM競合を抑制し、AQのメッセージを生成および使用する際に一貫したパフォーマンスを確保できるように、データベース・アドバンスト・キュー(AQ)をチューニングします。

    知っておく必要があるEDN AQ名は、EDN_EVENT_QUEUE_TABLEEDN_OAOO_DELIVERY_TABLEです。

  12. オーバーヘッドを削減するようにBPELプロセス・プロパティをチューニングします(たとえば、不要な場合は、Oracle Enterprise Manager Fusion Middleware Controlの「BPELサービス・エンジン・プロパティ」ページの「ValidateXML」および「StatsLastN」(バッチ・サイズを収集する統計)プロパティを無効にします)。

  13. パッケージ化されたアプリケーション(Siebelなど)と統合している場合は、レガシー・アプリケーションに問題がないかどうかをチェックします。

各種コンポーネントのパフォーマンス・チューニングの詳細は、パフォーマンスのチューニングの「トップ・パフォーマンス領域」およびSOA Suiteコンポーネントに関する項を参照してください。

「BPELサービス・エンジン・プロパティ」ページでのプロパティの設定の詳細は、「BPELプロセスのサービス・コンポーネントとエンジンの構成」を参照してください。

B.7.7 送信メッセージ速度を超える受信メッセージ速度の観察

メッセージの受信速度がメッセージの処理速度(送信速度)を超えると、次のような警告メッセージが表示されます。

[2012-04-09T16:49:40.342-04:00] [Soa_server1] [WARNING] []
 [oracle.soa.bpel.engine.dispatch] [tid:
 weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@e3d0e3d
] [userId: <anonymous>] [ecid: 0000JSnNKVTBh4Z5ln1FiZ1Fdnmd001gWL,0] [APP:
soa-infra] BPEL service engine is overloaded, the inflow is higher than the
outflow, there are "100000" invoke messages pending in the dispatcher in-memory
cache, the configured threshold is "102",the new incoming invoke messages will not
be dispatched or processed immediately, they are going to be persisted in the
dehydration store and can be recovered later using recovery.

この問題を解決するには、処理速度を上げるか、受信速度を下げます(受信を絞ります)。受信速度より処理速度が低速な状態は、次の1つまたは全部の問題が原因となって発生する可能性があります。

  • 呼出しスレッドが不足している

  • JVM容量が不足している

  • BPELプロセスがコールしている外部パートナが拡張できないため、BPELプロセスでメッセージのバックアップが実行されている

正確な原因を識別してそれらを解決するには、次の手順を実行します。

  1. composite.xmlファイルのoneWayDeliveryPolicyプロパティ値をチェックします。これはasync.persistasync.cacheまたはsyncに設定されていますか。このプロパティの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のデプロイメント・ディスクリプタのプロパティに関する付録を参照してください。
  2. BPELプロセスから外部サービスへの送信呼出しが、外部サービスのスケーラビリティが低いためにバックアップされていないことを確認します。外部サービスにボトルネックがある場合は、Oracle SOA Suiteで実行するチューニング(つまり、手順3)はまったく効果がありません。最初にこのボトルネックを解決することが必要です。
  3. JVMガベージ・コレクション(GC)を監視します。GCが頻繁に通常以上になってJVMがほぼ容量満杯になっている場合は、JVMヒープ・サイズを大きくします。

B.8 サーバーのトラブルシューティング

この項では、サーバーの問題をトラブルシューティングする方法について説明します。

サーバー起動の問題の詳細は、「管理対象サーバーとSOAインフラストラクチャの停止と起動」を参照してください。

B.8.1 管理対象サーバーの起動および停止のベスト・プラクティス

次の(両方ではなく)いずれかの方法で管理対象サーバーを起動および停止することをベスト・プラクティスとしてお薦めします。管理対象サーバーをコマンドラインから起動して、Oracle Enterprise Manager Fusion Middleware Controlから停止する(または、その逆)など、これらの方法を組み合せないでください。

  • Oracle Enterprise Manager Fusion Middleware Control。

    この方法を使用する場合は、ノード・マネージャが起動され実行中である必要があります。Oracle Enterprise Manager Fusion Middleware Controlから実行される管理対象サーバーのすべての起動および停止は、ノード・マネージャによって追跡されます。この方法では、サーバーの状態は問題にはなりません。

  • コマンドライン

    この方法を使用する場合、サーバーの状態はノード・マネージャによって追跡されません。このため、サーバーをコマンドラインから起動し、Oracle Enterprise Manager Fusion Middleware Controlから停止すると、Oracle WebLogic管理サーバーはステータスを判断するためにノード・マネージャにアクセスしますが、「不明」という状態が返されます。

Oracle Enterprise Manager Fusion Middleware Controlからサーバーを停止および起動する手順は、次のとおりです。

  1. 「WebLogicドメイン」を展開します。
  2. 管理対象サーバー(例: soa_server1という名前のサーバー)を選択します。
  3. 「制御」「停止」の順に選択します。
  4. 「制御」「起動」の順に選択します。

コマンド行からの管理対象サーバーの起動および停止の詳細は、Oracle SOA SuiteおよびBusiness Process Managementのインストールと構成に関する項を参照してください。

B.8.2 SOAサーバー起動の問題の診断

SOAサーバー(soa_infra)が起動しない場合、サーバー起動の問題には様々な原因が考えられます。検出によるアプローチを使用して根本原因を見つける必要があります。問題を診断する最初の試みとして、サーバーと診断ログをチェックします。さらに、次をチェックしてください。

サーバー起動の問題を診断する手順は次のとおりです。

  1. データベースが使用できないかどうか、または使用可能な接続が不足しているかどうかをチェックします。Oracle SOA Suite実行時の一部の障害は、データベースの停止や接続の問題によって発生します。次の手順を実行します。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」で、「サービス」「データ・ソース」「SOADatasource」「モニタリング」「テスト」の順に選択してデータ・ソースをテストして、ステータスを表示します。これはSQLプロンプトからもチェックできます。

  2. ポートの競合がないかどうか、使用されているポートのリストをチェックします。

  3. MDSリポジトリが共有ドキュメントをロードできないかどうかをチェックします(不正なMDS構成またはMDSスキーマを保持するデータベースが到達不可能)。

  4. Oracle SOA Suiteクラスタを使用している場合は(ユニキャストまたはマルチキャストの使用)、Oracle Coherenceの構成をチェックします。

    この問題はプロビジョニングの完了後のみ適用されます。ポートの競合がある場合(Oracle Coherenceによって使用されている場合)、SOAサーバーのクラスタリングは失敗する場合があります。たとえば、一方のSOAサーバーがデプロイメントを取得できても、もう一方のサーバーが取得できない可能性があります。ときによって、これは次のエラーのみを示す場合があります。

    [soa_server1] [ERROR] [] [Coherence] [tid: Logger@352821903 3.6.0.4] 
    [ecid: 46f620208907e045:63f295ec:12dd091ec2e:-8000-0000000000000003,1:27187] 
    [APP: soa-infra] 2011-01-28 23:06:19.463/414.816 Oracle Coherence GE 3.6.0.4 
    <Error> (thread=[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default
     (self-tuning)', member=n/a): 
    Error while starting cluster: com.tangosol.net.RequestTimeoutException: Timeout
     during service start: ServiceInfo(Id=0, Name=Cluster, Type=Cluster[[...
    

    この例では、Oracle Coherenceタイムアウトが重要な役割を果たしています。ただし、次のように無関係のエラーを示す場合もあります。

    Error creating bean with name 'SensorManager' defined in ServletContext
    resource
    

    この根本原因も、主としてOracle Coherenceの構成に関係しています。

  5. 管理サーバーと管理対象サーバーの両方のポートがオープンでアクセス可能であるかどうかをチェックします。

  6. 管理サーバーに到達できないために管理対象サーバーの起動が失敗したかどうかをチェックします。

  7. ネットワークの問題をチェックします(たとえば、問題の原因となっている可能性があるIPルーティングのフィルタやルール)。

  8. Oracle WebLogic Server LDAPセキュリティの破損をチェックします。

    管理対象サーバーは、アプリケーションのシステムMBeanブラウザのポリシーがすでに存在しているかどうかをレポートする場合があります。

B.8.3 プロキシ・サーバーの指定

システム・プロパティを使用してプロキシ・サーバーを指定するには、クライアント・アプリケーションを通常の方法で記述し、クライアント・アプリケーションを実行するとき、Javaシステム・プロパティを指定します。次のコード・サンプルは、詳細を示します。

setenv PROXY_SETTINGS "-DproxySet=true
-Dhttp.proxyHost=www-myproxy.us.mycompany.com -Dhttp.proxyPort=80
 -Dhttp.nonProxyHosts=localhost|*.us.mycompany.com
  |0:0:0:0:0:0:0:1|fe80:0:0:0:250:56ff:fe31"

注意:

http.proxyHostおよびhttp.proxyPortなどのプロキシ・プロパティの値を指定する場合は、http.nonProxyHostsプロパティも指定します。

B.8.4 一部のローエンドのホストで、フロー・ダイアグラムが初回に表示されない

Oracle Enterprise Manager Fusion Middleware Controlで、一部のローエンドのホストにおいて、デプロイ済のSOAコンポジット・アプリケーションのインスタンスIDのフロー・ダイアグラムが、初回に表示されない場合があります。かわりに、リソースのロードに失敗しましたというメッセージを受信します。

このことを回避するには、フローのトレース・ページを閉じ、インスタンスIDをクリックして、フローのトレース・ページに戻ります。

B.8.5 IPv4とIPv6をサポートするデュアル・スタック・ホスト上のOracle Enterprise Manager Fusion Middleware Controlへのアクセス

IPv4とIPv6の両方がサポートされているデュアル・スタック・ホスト上でOracle SOA Suiteを実行する場合は、Oracle Enterprise Manager Fusion Middleware Controlで、IPv4クライアントがIPv6のURLにアクセスするように、表B-25に従ってetc/hostsファイルを更新する必要があります。


表B-25 etc/hostsファイルのIPv4とIPv6の設定

クライアント etc/hostsファイルを次のように編集します

IPv4クライアント上で:

xx.xxx.xxx.xxx myhost10-ipv6 

ここで、xx.xxx.xxx.xxxはIPv6のIPアドレスです。

IPv6クライアント上で:

2001:0db8:db0a::0:1  myhost10-ipv6 myhost10-ipv6.us.example.com

注意: 2001:0db8:db0a::0:1は、使用するホスト環境に適した値に置き換えます。


B.9 ブラウザのトラブルシューティング

この項では、ブラウザの問題をトラブルシューティングする方法について説明します。

B.9.1 Safariブラウザを使用してWSDLファイルの内容を表示する場合の制限

Safariブラウザを使用する場合は、Oracle Enterprise Manager Fusion Middleware ControlでのWSDLファイルの内容の表示に関する、次の制限と回避策に留意してください。Mozilla Firefoxは正常に動作するため、この回避策は必要ありません。

  1. SOAコンポジット・アプリケーションのホーム・ページに移動します。
  2. ページの上部にある「WSDLおよびエンドポイントURIの表示」リンクをクリックします。
  3. 表示されている「WSDL」リンクをクリックします。

    選択したWSDLの内容が表示されていない空白ページが開きます。

    回避策として、次の追加の手順を実行します。

  4. このページの右上隅にある現在のページのメニューを表示するアイコンをクリックします。
  5. 表示されたメニューから「ソースの表示」を選択します。

    これにより、選択したWSDLの内容が別のページに表示されます。

B.10 その他のトラブルシューティングのドキュメント

表B-26に、その他のトラブルシューティングの問題について参照するドキュメントを示します。


表B-26 その他のトラブルシューティングのドキュメント

参照内容 参照先

SOAインフラストラクチャの起動とシャットダウンの問題

管理対象サーバーとSOAインフラストラクチャの停止と起動

WebLogic診断フレームワーク(WLDF)および診断フレームワーク(DFW)を使用した、Oracle SOA Suiteの問題の診断

SOAコンポジット・アプリケーションに関する問題の診断

大規模ドキュメントとメタデータの管理、および多数のインスタンスを含む環境の管理

『Oracle SOAスイートでのSOAアプリケーションの開発』の「大規模ドキュメントおよび大量のインスタンスの管理」

デプロイメント・エラーとコンパイル・エラー

『Oracle SOAスイートでのSOAアプリケーションの開発』のテストおよびトラブルシューティングに関する項

Oracle Web Services Managerポリシー・マネージャ・エラー

Webサービスの管理の「問題の診断」

Oracle Business Rules

Oracle Business Process Managementを使用したビジネス・ルールの設計の付録「Oracle Business Rulesのトラブルシューティング」