ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA Suiteヘルスケア統合ユーザーズ・ガイド
11g リリース1 (11.1.1.7)
E59383-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

C メッセージ順序付けの管理

この付録では、Oracle SOA Suite for healthcare integrationで提供される、メッセージ順序付けをモニターおよび管理するためのコマンド行ツールとJavaベース・ツールについて説明します。これらの機能は、カスタム・クライアントで使用できます。

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

C.1 順序メッセージ管理の概要

Oracle SOA Suite for healthcare integrationを介して処理されたメッセージは、B2B順序マネージャを介して順序付けされます。メッセージ順序付けの情報は、メッセージの正しい順序を保持するためにB2B_SEQUENCE_MANAGERデータベース表に格納されます。場合によっては、メッセージの順序付けのプロセスを管理する必要があります。たとえば、エンドポイントの1つのメッセージが停滞して処理できない場合、そのエンドポイントの他のすべてのメッセージの処理がブロックされることがあります。この場合、メッセージを削除または再発行して順序付けを再開するために、手動の操作を行う必要があります。

Oracle SOA Suite for healthcare integrationに付属の、メッセージ順序付けをモニターおよび管理するためのツールを使用すると、次の操作を実行できます。


注意:

順序付けされたメッセージは、Oracle SOA Suite for healthcare integrationコンソールで表示できます。詳細は、8.5項「順序付けされたメッセージの使用」を参照してください。


C.2 順序メッセージを管理するためのJavaメソッド

順序メッセージ管理用に提供されているJavaメソッドを使用して、B2B_SEQUENCE_MANAGER表内のメッセージをモニターおよび管理するための独自のクライアントを作成できます。

これらのJavaメソッドを使用するには、jndi.propertiesファイルをパラメータとして使用して、SequenceManagerUtilityのインスタンスを作成します。例:

private static Properties getProperties(String s) throws IOException {
   Properties properties;
   FileInputStream fileinputstream = new FileInputStream(s);
   properties = new Properties();
   properties.load(fileinputstream);
   return properties;             }
 
SequenceManagerUtility seqUtil = new SequenceManagerUtility(getProperties("/tmp/jndi.properties"));
 
seqUtil.listSequenceTargets();

jndi.propertiesファイルの作成の詳細は、C.3.1項「コマンド行ツールを実行するための前提条件」を参照してください。

C.2.1 エンドポイントおよび状態のリスト

特定のエンドポイントに対して順序表で保留中になっているメッセージが特定の状態とともにリストされたレポートを生成できます。生成されたレポートには、メッセージIDおよびそれぞれに対応する状態が含まれます。

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> listSequenceTargets() 
     throws java.lang.Exception

C.2.2 保留中の順序メッセージのリスト

保留中の順序メッセージのレポートを、状態とエンドポイント、状態のみ、またはエンドポイントのみに基づいて生成できます。このコマンドでは、順序表で保留中になっているメッセージが、指定したオプションに基づいてリストされます。生成されたレポートには、メッセージIDおよびそれぞれに対応する状態が含まれます。使用する基準に応じて、順序メッセージをリストするために使用できるメソッドは4つあります。

状態とエンドポイントに基づいた保留中の順序メッセージのリスト

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> getSequenceMessagesByTargetAndState(java.lang.String target, java.lang.String state)
     throws java.lang.Exception
パラメータ 説明

target

メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。例:

seqUtil.getSequenceMessagesByTargetAndState("TCP://111.34.121.22:2025","STACKED")

state

レポートに含めるメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。


状態に基づいた保留中の順序メッセージのリスト

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> getSequenceMessagesByTarget(java.lang.String state)
     throws java.lang.Exception
パラメータ 説明

state

レポートに含めるメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。


エンドポイントに基づいた保留中の順序メッセージのリスト

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> getSequenceMessagesByTarget(java.lang.String target)
     throws java.lang.Exception
パラメータ 説明

target

メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。


C.2.3 メッセージの破棄

次の基準の組合せに基づいて、順序メッセージをB2B_SEQUENCE_MANAGER表から削除できます。

  • メッセージの状態とエンドポイント

  • メッセージの状態

  • メッセージのエンドポイント

  • エンドポイントの方向(インバウンドとアウトバウンドが両方あるエンドポイント・ペアの場合)

  • メッセージID

  • エンドポイントの最初のメッセージのみ

破棄メソッドを使用すると、B2B_SEQUENCE_MANAGER表内のメッセージを管理できます。これは、メッセージが停滞して他のメッセージの処理をブロックしている場合や、特定のメッセージに問題があるためにそのメッセージを順番どおりに処理できない場合などに有用です。


注意:

順序マネージャ表からメッセージを破棄しても、ビジネス・メッセージはいずれも削除されません。


状態とエンドポイントに基づいた順序メッセージの破棄

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> discardSequencedMessageByStateAnDendpoint(java.lang.String target, java.lang.String state) throws java.lang.Exception

または

public java.util.List<java.lang.String> discardSequencedMessageByStateAnDendpoint(java.lang.String target, java.lang.String state, java.lang.String direction) throws java.lang.Exception
パラメータ 説明

target

削除するメッセージと関連付けられているエンドポイントの名前(またはIPアドレスとポート番号)。

state

削除するメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。

direction

メッセージを破棄するエンドポイント・ペアのメッセージの方向。INBOUNDまたはOUTBOUNDを指定します。このオプションは、エンドポイント・ペアの一方向のメッセージを削除する場合にのみ使用してください。


状態に基づいた順序メッセージの破棄

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> discardSequencedMessageByState(java.lang.String state)
     throws java.lang.Exception
パラメータ 説明

state

破棄するメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。


エンドポイントに基づいた順序メッセージの破棄

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> discardSequencedMessageByTarget(java.lang.String target)
     throws java.lang.Exception

または

public java.util.List<java.lang.String> discardSequencedMessageByTarget(java.lang.String target, java.lang.String direction)
     throws java.lang.Exception
パラメータ 説明

target

メッセージを破棄するエンドポイントの名前(またはIPアドレスとポート番号)。

direction

メッセージを破棄するエンドポイント・ペアのメッセージの方向。INBOUNDまたはOUTBOUNDを指定します。このオプションは、エンドポイント・ペアの一方向のメッセージを削除する場合にのみ使用してください。


メッセージIDに基づいた順序メッセージの破棄

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> discardSequencedMessageByMessageId(java.lang.String msgId)
     throws java.lang.Exception
パラメータ 説明

msgId

破棄するメッセージのメッセージID。


エンドポイントの最初のメッセージの破棄

このメソッドの構文は次のとおりです。

public java.util.List<java.lang.String> discardFirstSequemceMessageByTarget(java.lang.String target)
     throws java.lang.Exception
パラメータ 説明

target

最初のメッセージを破棄するエンドポイントの名前(またはIPアドレスとポート番号)。


C.2.4 メッセージの再処理

メッセージの再処理は、エンドポイントに関する問題が発生した後(たとえば、エンドポイントが停止してから処理が再開された場合など)にメッセージを確実に順番どおりに処理するために有用なオプションです。

このメソッドの構文は次のとおりです。

public boolean processSequenceMessageByMessageId(java.lang.String messageId)
     throws java.lang.Exception
パラメータ 説明

messageId

再処理するメッセージのメッセージID。


C.2.5 エンドポイントの休止および再開

外部システムに障害が発生した場合など、特定のエンドポイントに対してメッセージの順序付け処理を休止する必要があることがあります。この場合、システムがリストアされるまでエンドポイントを休止できます。システムがリストアされた後は、エンドポイントの処理を再開できます。エンドポイント・ペアの場合、インバウンド・エンドポイントとアウトバウンド・エンドポイントの両方、インバウンド・エンドポイントのみ、またはアウトバウンド・エンドポイントのみを休止または再開できます。

エンドポイントの休止

このメソッドの構文は次のとおりです。

public boolean pauseSequenceTarget(java.lang.String target)
     throws java.lang.Exception

または

public boolean pauseSequenceTarget(java.lang.String target, java.lang.String direction)
     throws java.lang.Exception
パラメータ 説明

target

休止するエンドポイントの名前(またはIPアドレスとポート番号)。

direction

休止するエンドポイント・ペアのメッセージの方向。INBOUNDまたはOUTBOUNDを指定します。このオプションは、エンドポイント・ペアの一方向を休止する場合にのみ使用してください。


エンドポイントの再開

このメソッドの構文は次のとおりです。

public boolean resumeSequenceTarget(java.lang.String target)
     throws java.lang.Exception

または

public boolean resumeSequenceTarget(java.lang.String target, java.lang.String direction)
     throws java.lang.Exception
パラメータ 説明

target

再開するエンドポイントの名前(またはIPアドレスとポート番号)。

direction

再開するエンドポイント・ペアのメッセージの方向。INBOUNDまたはOUTBOUNDを指定します。このオプションは、エンドポイント・ペアの一方向を再開する場合にのみ使用してください。


C.3 順序メッセージを管理するためのコマンド行ツール

コマンド行ツールは、Apache antを使用して実行します。これらのツールは管理者専用です。ログイン・ユーザーによるデータの表示や破棄を防止するためのセキュリティ・チェックまたは権限チェックは実行されません。

C.3.1 コマンド行ツールを実行するための前提条件

コマンドライン・ツールを実行するには、事前に環境が正しく構成されていることを確認する必要があります。コマンドを実行する前に、次の操作を実行してください。

  1. ORACLE_HOMEANT_HOMEおよびJAVA_HOMEの各環境変数を設定します。

    ORACLE_HOMEは、Oracle Fusion Middlewareのインストール・ディレクトリです。例:

    set ORACLE_HOME=C:\oracle\Middleware
    set ANT_HOME=%ORACLE_HOME%\modules\org.apache.ant_1.7.1 
    set JAVA_HOME=%ORACLE_HOME%\jdk160_18 
    
  2. jndi.propertiesファイルを作成します。

    cd $ORACLE_HOME\Oracle_SOA\bin
    ant -f ant-hcfp-util.xml b2bcreate-prop
    
  3. jndi.propertiesファイルを編集して、weblogicパスワードを組み込みます。


注意:

  • コマンド行ツールを実行した後は、ヘルスケア統合ユーザー・インタフェースまたはB2Bコンソールを再起動してください。これは、インタフェースによって一部のメタデータがキャッシュに入れられ、コマンド行アクションによってメタデータが更新されると、キャッシュ内のデータが無効になる場合があるためです。

  • すべてのコマンド行ツールは、JNDI資格証明がなくても実行できます。匿名ユーザーによるコマンド行ツールの使用を制限するには、jndi.propertiesファイルに次の情報を入力します。

    java.naming.security.principal=weblogic
    java.naming.security.credentials=weblogic_password
    

C.3.2 エンドポイントおよび状態のリスト

各エンドポイントの状態を判別するために、すべてのエンドポイントとそれぞれの状態がリストされたレポートを生成できます。

このコマンドの構文は次のとおりです。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=listTargets
オプション 説明

-Dmode

コマンドを実行するモード。この目的で、このオプションをlistTargetsに設定します。


C.3.3 保留中の順序メッセージのリスト

保留中の順序メッセージのレポートを、状態とエンドポイント、状態のみ、またはエンドポイントのみに基づいて生成できます。このコマンドでは、順序表で保留中になっているメッセージが、指定したオプションに基づいてリストされます。生成されたレポートには、メッセージIDおよびそれぞれに対応する状態が含まれます。

このコマンドの構文は次のとおりです。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dstate=message_state -Dendpoint=endpoint_name
オプション 説明

-Dmode

コマンドを実行するモード。この目的で、このオプションをreportに設定します。

-Dstate

レポートに含めるメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。

すべての状態が含まれるレポートを生成するには、コマンドの実行時にこのオプションを使用しないでください。

-Dendpoint

メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。すべてのターゲットに対するレポートを生成するには、コマンドの実行時にこのオプションを使用しないでください。


例C-1 状態とエンドポイントに基づいた順序メッセージのリスト

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dstate=STACKED -Dendpoint=Pharmacy01

例C-2 状態のみに基づいた順序メッセージのリスト

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dstate=PROCESSED

例C-3 エンドポイントのみに基づいた順序メッセージのリスト

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dendpoint=Pharmacy01

C.3.4 メッセージの破棄

次の基準の組合せに基づいて、順序メッセージをSEQUENCE_MANAGERデータベース表から削除できます。

  • メッセージの状態とエンドポイント

  • メッセージの状態

  • メッセージのエンドポイント

  • メッセージID

  • エンドポイントの最初のメッセージのみ

破棄モードを使用すると、B2B_SEQUENCE_MANAGER表内のメッセージを管理できます。これは、メッセージが停滞して他のメッセージの処理をブロックしている場合や、特定のメッセージに問題があるためにそのメッセージを順番どおりに処理できない場合などに有用です。


注意:

順序マネージャ表からメッセージを破棄しても、ビジネス・メッセージはいずれも削除されません。


このコマンドの構文は次のとおりです。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dstate=message_state -Dendpoint=endpoint_name -Dmsgid=message_id
オプション 説明

-Dmode

コマンドを実行するモード。メッセージを破棄する場合は、このオプションをdiscardに設定します。エンドポイント内の最初のメッセージのみを破棄する場合は、このオプションをdiscardFirstに設定し、エンドポイントを指定します。

-Dstate

破棄するメッセージの状態。次のいずれかの状態を指定します。

  • PROCESSED: メッセージの処理は完了し、配信のために保留されています。

  • STACKED: メッセージの処理を妨げるエラーが発生しました。

  • PAUSED: エンドポイントは休止されています。

すべての状態のメッセージを破棄するには、コマンドの実行時にこのオプションを使用しないでください。

-Dendpoint

メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。すべてのターゲットに対するメッセージを破棄するには、コマンドの実行時にこのオプションを使用しないでください。

-Dmsgid

削除する特定のメッセージのメッセージID。このオプションを使用する場合、指定する必要があるのはモードのみであり、ターゲットや状態を指定する必要はありません。


例C-4 状態とエンドポイントに基づいた順序メッセージの破棄

この例では、Pharmacy01エンドポイントで状態がPROCESSEDであるすべてのメッセージを順序マネージャから削除します。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dendpoint=Pharmacy01 -Dstate=PROCESSED

例C-5 状態に基づいた順序メッセージの破棄

この例では、状態がPROCESSEDであるすべてのメッセージを順序マネージャから削除します。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dstate=PROCESSED

例C-6 エンドポイントに基づいた順序メッセージの破棄

この例では、Pharmacy01エンドポイントのすべてのメッセージを順序マネージャから削除します。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dendpoint=Pharmacy01

例C-7 エンドポイントの最初の順序メッセージの破棄

この例では、Pharmacy 01エンドポイントの最初のメッセージを順序マネージャから削除します。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discardFirst -Dendpoint=Pharmacy01

例C-8 メッセージIDに基づいた順序メッセージの破棄

この例では、メッセージIDで指定された単一のメッセージを順序マネージャから削除します。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dmsgid=OAE851ED131B3D6103A00000152F97E9

C.3.5 メッセージの再処理

hcfpsequencemanagerユーティリティを使用して、順序メッセージを再処理できます。

このコマンドの構文は次のとおりです。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dmsgid=message_id
オプション 説明

-Dmode

コマンドを実行するモード。この目的で、このオプションをreprocessに設定します。

-Dmsgid

再処理する特定のメッセージのメッセージID。このオプションを使用する場合、指定する必要があるのはモードのみであり、ターゲットや状態を指定する必要はありません。


例C-9 メッセージの再処理

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=reprocess -Dmsgid=32797717

C.3.6 エンドポイントの休止および再開

外部システムに障害が発生した場合など、特定のエンドポイントに対してメッセージの順序付け処理を休止する必要があることがあります。この場合、システムがリストアされるまでエンドポイントを休止できます。システムがリストアされた後は、エンドポイントの処理を再開できます。

このコマンドの構文は次のとおりです。

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dendpoint=endpoint_name
オプション 説明

-Dmode

コマンドを実行するモード。この目的で、このオプションをpauseまたはresumeに設定します。

-Dendpoint

休止するエンドポイントの名前(またはIPアドレスとポート番号)。


例C-10 エンドポイントの休止

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=pause -Dendpoint=Pharmacy01

例C-11 エンドポイントの再開

ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=resume -Dendpoint=Pharmacy01