D メッセージ順序付けの管理
この付録では、Oracle SOA Suite for healthcare integrationで提供される、メッセージ順序付けをモニターおよび管理するためのコマンド行ツールとJavaベース・ツールについて説明します。これらの機能は、カスタム・クライアントで使用できます。
この付録の内容は次のとおりです。
D.1 順序メッセージ管理の概要
Oracle SOA Suite for healthcare integrationに付属の、メッセージ順序付けをモニターおよび管理するためのツールを使用すると、次の操作を実行できます。
-
すべてのエンドポイントおよびその現在の状態の表示
-
状態またはエンドポイント(あるいはその組合せ)によるメッセージの表示
-
状態、エンドポイント、メッセージID、または状態とエンドポイントによるメッセージの破棄
-
エラーのあるメッセージの再発行
-
エンドポイントのメッセージ順序付けの休止および再開
ノート:
順序付けされたメッセージは、Oracle SOA Suite for healthcare integrationコンソールで表示できます。詳細は、「順序付けされたメッセージの使用」を参照してください。
D.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
ファイルの作成の詳細は、「コマンド行ツールを実行するための前提条件」を参照してください。
D.2.1 エンドポイントおよび状態のリスト
特定のエンドポイントに対して順序表で保留中になっているメッセージが特定の状態とともにリストされたレポートを生成できます。生成されたレポートには、メッセージIDおよびそれぞれに対応する状態が含まれます。
このメソッドの構文は次のとおりです。
public java.util.List<java.lang.String> listSequenceTargets() throws java.lang.Exception
D.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アドレスとポート番号)。たとえば:
|
state |
レポートに含めるメッセージの状態。次のいずれかの状態を指定します。
|
状態に基づいた保留中の順序メッセージのリスト
このメソッドの構文は次のとおりです。
public java.util.List<java.lang.String> getSequenceMessagesByTarget(java.lang.String state) throws java.lang.Exception
パラメータ | 説明 |
---|---|
state |
レポートに含めるメッセージの状態。次のいずれかの状態を指定します。
|
エンドポイントに基づいた保留中の順序メッセージのリスト
このメソッドの構文は次のとおりです。
public java.util.List<java.lang.String> getSequenceMessagesByTarget(java.lang.String target) throws java.lang.Exception
パラメータ | 説明 |
---|---|
target |
メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。 |
D.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 |
削除するメッセージの状態。次のいずれかの状態を指定します。
|
direction |
メッセージを破棄するエンドポイント・ペアのメッセージの方向。INBOUNDまたはOUTBOUNDを指定します。このオプションは、エンドポイント・ペアの一方向のメッセージを削除する場合にのみ使用してください。 |
状態に基づいた順序メッセージの破棄
このメソッドの構文は次のとおりです。
public java.util.List<java.lang.String> discardSequencedMessageByState(java.lang.String state) throws java.lang.Exception
パラメータ | 説明 |
---|---|
state |
破棄するメッセージの状態。次のいずれかの状態を指定します。
|
エンドポイントに基づいた順序メッセージの破棄
このメソッドの構文は次のとおりです。
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アドレスとポート番号)。 |
D.2.4 メッセージの再処理
メッセージの再処理は、エンドポイントに関する問題が発生した後(たとえば、エンドポイントが停止してから処理が再開された場合など)にメッセージを確実に順番どおりに処理するために有用なオプションです。
このメソッドの構文は次のとおりです。
public boolean processSequenceMessageByMessageId(java.lang.String messageId) throws java.lang.Exception
パラメータ | 説明 |
---|---|
messageId |
再処理するメッセージのメッセージID。 |
D.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を指定します。このオプションは、エンドポイント・ペアの一方向を再開する場合にのみ使用してください。 |
D.3 順序メッセージを管理するためのコマンド行ツール
コマンド行ツールは、Apache antを使用して実行します。
これらのツールは管理者専用です。ログイン・ユーザーによるデータの表示や破棄を防止するためのセキュリティ・チェックまたは権限チェックは実行されません。
D.3.1 コマンド行ツールを実行するための前提条件
コマンド行ツールを実行するには、事前に環境が正しく構成されていることを確認する必要があります。コマンドを実行する前に、次の操作を実行してください。
ノート:
-
コマンド行ツールを実行した後は、ヘルスケア統合ユーザー・インタフェースまたはB2Bコンソールを再起動してください。これは、インタフェースによって一部のメタデータがキャッシュに入れられ、コマンド行アクションによってメタデータが更新されると、キャッシュ内のデータが無効になる場合があるためです。
-
すべてのコマンド行ツールは、JNDI資格証明がなくても実行できます。匿名ユーザーによるコマンド行ツールの使用を制限するには、
jndi.properties
ファイルに次の情報を入力します。java.naming.security.principal=weblogic java.naming.security.credentials=weblogic_password
D.3.2 エンドポイントおよび状態のリスト
各エンドポイントの状態を判別するために、すべてのエンドポイントとそれぞれの状態がリストされたレポートを生成できます。
このコマンドの構文は次のとおりです。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=listTargets
オプション | 説明 |
---|---|
-Dmode |
コマンドを実行するモード。この目的で、このオプションをlistTargetsに設定します。 |
D.3.3 保留中の順序メッセージのリスト
保留中の順序メッセージのレポートを、状態とエンドポイント、状態のみ、またはエンドポイントのみに基づいて生成できます。このコマンドでは、順序表で保留中になっているメッセージが、指定したオプションに基づいてリストされます。生成されたレポートには、メッセージIDおよびそれぞれに対応する状態が含まれます。
このコマンドの構文は次のとおりです。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dstate=message_state -Dendpoint=endpoint_name
オプション | 説明 |
---|---|
-Dmode |
コマンドを実行するモード。この目的で、このオプションをreportに設定します。 |
-Dstate |
レポートに含めるメッセージの状態。次のいずれかの状態を指定します。
すべての状態が含まれるレポートを生成するには、コマンドの実行時にこのオプションを使用しないでください。 |
-Dendpoint |
メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。すべてのターゲットに対するレポートを生成するには、コマンドの実行時にこのオプションを使用しないでください。 |
例 - 状態とエンドポイントに基づいた順序メッセージのリスト
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dstate=STACKED -Dendpoint=Pharmacy01
例 - 状態のみに基づいた順序メッセージのリスト
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dstate=PROCESSED
例 - エンドポイントのみに基づいた順序メッセージのリスト
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=report -Dendpoint=Pharmacy01
D.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 |
破棄するメッセージの状態。次のいずれかの状態を指定します。
すべての状態のメッセージを破棄するには、コマンドの実行時にこのオプションを使用しないでください。 |
-Dendpoint |
メッセージをリストするエンドポイントの名前(またはIPアドレスとポート番号)。すべてのターゲットに対するメッセージを破棄するには、コマンドの実行時にこのオプションを使用しないでください。 |
-Dmsgid |
削除する特定のメッセージのメッセージID。このオプションを使用する場合、指定する必要があるのはモードのみであり、ターゲットや状態を指定する必要はありません。 |
例 - 状態とエンドポイントに基づいた順序メッセージの破棄
この例では、Pharmacy01エンドポイントで状態がPROCESSEDであるすべてのメッセージを順序マネージャから削除します。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dendpoint=Pharmacy01 -Dstate=PROCESSED
例 - 状態に基づいた順序メッセージの破棄
この例では、状態がPROCESSEDであるすべてのメッセージを順序マネージャから削除します。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dstate=PROCESSED
例 - エンドポイントに基づいた順序メッセージの破棄
この例では、Pharmacy01エンドポイントのすべてのメッセージを順序マネージャから削除します。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dendpoint=Pharmacy01
例 - エンドポイントの最初の順序メッセージの破棄
この例では、Pharmacy 01エンドポイントの最初のメッセージを順序マネージャから削除します。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discardFirst -Dendpoint=Pharmacy01
例 - メッセージIDに基づいた順序メッセージの破棄
この例では、メッセージIDで指定された単一のメッセージを順序マネージャから削除します。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=discard -Dmsgid=OAE851ED131B3D6103A00000152F97E9
D.3.5 メッセージの再処理
hcfpsequencemanager
ユーティリティを使用して、順序メッセージを再処理できます。
このコマンドの構文は次のとおりです。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dmsgid=message_id
オプション | 説明 |
---|---|
-Dmode |
コマンドを実行するモード。この目的で、このオプションをreprocessに設定します。 |
-Dmsgid |
再処理する特定のメッセージのメッセージID。このオプションを使用する場合、指定する必要があるのはモードのみであり、ターゲットや状態を指定する必要はありません。 |
例 - メッセージの再処理
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=reprocess -Dmsgid=32797717
D.3.6 エンドポイントの休止および再開
外部システムに障害が発生した場合など、特定のエンドポイントに対してメッセージの順序付け処理を休止する必要があることがあります。この場合、システムがリストアされるまでエンドポイントを休止できます。システムがリストアされた後は、エンドポイントの処理を再開できます。
このコマンドの構文は次のとおりです。
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=command_mode -Dendpoint=endpoint_name
オプション | 説明 |
---|---|
-Dmode |
コマンドを実行するモード。この目的で、このオプションをpauseまたはresumeに設定します。 |
-Dendpoint |
休止するエンドポイントの名前(またはIPアドレスとポート番号)。 |
例 - エンドポイントの一時停止
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=pause -Dendpoint=Pharmacy01
例 - エンドポイントの再開
ant -f ant-hcfp-util.xml hcfpsequencemanager -Dmode=resume -Dendpoint=Pharmacy01