2.10.2. Sequencingエンジン

Sequencing SEはコンシューマからのメッセージ受信の延長で、定義したサービスリストに登録されているサービス(エンドポイント)を順番に実行します。呼び出し先のサービスからError/Faultが返却された場合の動作は、Seqencing SEの送信先エンドポイント内のフォルトサービスによって設定します。この設定により、処理を打ち切り受け取ったError/Faultをコンシューマに返却することも、処理を継続させることもできます。サービスリストには、サービス呼び出し定義以外にも開発者が作成したハンドラを呼び出すことができます。ハンドラ内でメッセージの内容に応じてメッセージのルーティングを変更することができます。
Sequencing SE動作概要


図2.10.2-1

2.10.2.1. エンドポイントの設定

SAエディタを使用してSequencing SEの基本的な設定をする方法を説明します。
Sequencing SEの定義は、パレット、およびプロパティビューを使用して行います。
操作方法の詳細については、 [ 2.5.7. Sequencingエンジンの作成 ] をご覧下さい。

Memo
バージョン8.42 以降、Sequencing SE の SU エディタの機能は、SAエディタのプロパティビューに 統合されています。

複数の送信先エンドポイントまたはハンドラ・チェーンまたはブロードキャスト項目を指定することで、サービスリストを定義します。サービスリストには、少なくとも一つの送信先エンドポイントまたはハンドラ・チェーンまたはブロードキャストを指定しなければなりません。Sequencing SEはシーケンシングSUで定義したサービスリストを順番に呼び出します。Error/Faultを受信した場合、送信先エンドポイントまたはハンドラ・チェーンのハンドラにフォルトサービス定義することで、Error/Fault受信時にフォルトサービスを呼び出して、処理を続けることができます。フォルトサービスに対して、詳細は [ 製品構成と提供機能 > 4. ESB > 4.3. サービスエンジン > 4.3.2. Sequencing SE > 4.3.2.1. 異常処理 ] を参照してください。


図2.10.2.1-1

エンドポイントの属性情報
エンドポイントを選択すると、プロパティー・ビューに、エンドポイントの情報が表示されます。
ここで、属性が編集できます。


図2.10.2.1-2

表2.10.2.1-1
設定項目
説明

基本設定
エンドポイントロール
プロバイダに固定。変更は出来ません。 プロバイダ
エンドポイント名
提供するエンドポイント名を指定します。
文字列[必須]
サービス名
提供するサービス名を指定します。
QName(名前空間、ローカル名) [必須]
インタフェース名
提供するインタフェース名を指定します。[必須]
QName(名前空間、ローカル名) [必須]
ESBインスタンス名
分散ESB機能を使用する場合にのみESBインスタンス名を指定します。 その他の場合は空欄にします。
文字(A-Z、a-z)、数字(0-9)、ハイフン(-)、点(.)、下線(_)の組み合わせ [任意]
説明
このエンドポイントが提供する機能についての説明を記述します。
【マルチバイト文字列指定可】
文字列[任意]
その他
オプション一覧
オプションを設定します。
[2.7.5. オプション一覧の設定] を参照して下さい。
Sequencing SEにおいて設定できるオプション一覧は下記の通りです。
項目
説明

BroadcastErrorNoWait
同報通知応答待つモードが all の場合で最初にFault/Errorが返却されたら、全ての応答を待たず、
その時点ですぐにそのFault/Errorを返却するかを指定します。
true/false
 

Caution
  エンドポイントのサービス名とエンドポイント名の設定は他のエンドポイントと重複しないようにしてください。

オペレーションの属性情報


図2.10.2.1-3


図2.10.2.1-4


図2.10.2.1-5

表2.10.2.1-2
設定項目
説明

一般
オペレーション
提供するオペレーション名を指定します。
QName(名前空間、ローカル名)[必須]
メッセージ交換方式
提供するメッセージ交換方式を指定します。
in-only、 in-out、robust-in-only から選択 [必須]
ルーティング
入力メッセージの名前
送信元からのinメッセージの名前を指定します。 【マルチバイト文字列指定可】
呼び出し元へのoutメッセージの名前
outメッセージとして呼び出し元への返信メッセージの名前を指定します。 【マルチバイト文字列指定可】
すべての「list-inName」と「outName」に設定した名前から選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
非同期応答かどうか
inを送信した後、Consumerへ非同期応答をするかどうかを指定します。 下記の値から選択。
  • true
  • false
デフォルト値:false
スキーマ
スキーマファイル インプット/アウトプット 対象SUフォルダのMETA-INFフォルダのschemaフォルダ配下にあるスキーマファイルの相対パスを指定します。
指定したスキーマファイルは、XSLT SE による変換の定義の際のインプット/アウトプットスキーマとして利用することができます。    [メッセージ交換方式を指定した場合のみ設定可能]
参照(B)
(インプット/アウトプット)
スキーマファイルの選択ダイアログを開きます。
スキーマファイルを選択すると、その相対パスがインプットおよびアウトプット のファイルのテキストボックスに表示されます。
利用方法については、[2.7.7. スキーマファイルの設定] を参照して下さい。
※ 妥当性チェックで問題がある項目名は、プロパティビュー上で赤く表示されます。 詳細は、2.8. 妥当性チェックを参照してください。

2.10.2.2. サービスの定義

Sequencing SEから送信先エンドポイントについて定義します。
「送信先エンドポイント」の属性情報
「送信先エンドポイント」を選択すると、プロパティー・ビューに、「送信先エンドポイント」の情報が表示されます。
ここで、送信先エンドポイントの属性が編集できます。


図2.10.2.2-1

表2.10.2.2-1
設定項目
説明

一般
エンドポイント名
Sequencing 送信先エンドポイントユニットのエンドポイント名を指定します。サービスユニット選択時に自動で設定されます。
文字列[必須]
サービス名
Sequencing 送信先エンドポイントユニットのサービス名を指定します。サービスユニット選択時に自動で設定されます。
QName(名前空間、ローカル名) [必須]
インタフェース名
Sequencing 送信先エンドポイントユニットのインタフェース名を指定します。 サービスユニット選択時に自動で設定されます。
QName(名前空間、ローカル名) [必須]
ESBインスタンス名
ESBインスタンス名を表示します。変更する必要はありません。(変更しても保存されません。)
文字(A-Z、a-z)、数字(0-9)、ハイフン(-)、点(.)、下線(_)の組み合わせ [任意]
オペレーション名
Sequencing 送信先エンドポイントユニットのオペレーション名を指定します。サービスユニット選択時に自動で設定されます。
QName(名前空間、ローカル名)[必須]
メッセージ交換方式
Sequencing 送信先エンドポイントのメッセージ交換方式を指定します。サービスユニット選択時に自動で設定されます。
   ※ブロードキャストにある場合、設定できないようにする。(ブロードキャストメッセージ交換方式の値を利用する、もしブロードキャストメッセージ交換方式がない場合、in-onlyに固定)
in-only、 in-out、robust-in-onlyから選択 [必須]
ルーティング
繰り返し送信の回数
同じ呼び出し先へ繰り返し送信の回数を指定します。
ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
数値(1〜2147483647)[任意]
   デフォルトは"1"
inメッセージ
固定的にinメッセージとして呼び出し先へ送信するのメッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前が指定できない。
?"in"、"out"(小文字)が指定できない。
?ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
【マルチバイト文字列指定可】
選択
すべての入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
送信先からのoutメッセージの名前
outメッセージとして呼び出し元への返信メッセージの名前を指定します。
?"in"、"out"(小文字)が指定できない。
?ブロードキャスト送信先エンドポイント/ハンドラに該当設定できる。
?繰り返し送信の回数の値が1より大きい場合、設定した送信先からのoutメッセージの名前の後ろに自動的に順番を付けます。
例えば、送信先からのoutメッセージの名前に"response"、繰り返し送信の回数に3が設定された場合、選択時に、"response1"、"response2"、"response3"を選択できます。
【マルチバイト文字列指定可】
"in"、"out"(小文字)以外の文字列(Name)[任意]
保持メッセージの名前一覧
保持メッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない
?ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
【マルチバイト文字列指定可】
選択
すべての「入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
その他
説明
Sequencing SEが送信先エンドポイントの説明を記述します。
【マルチバイト文字列指定可】
文字列[任意]
セッションのクローズ
定義されているサービスリストの呼び出しが完了した際にSessionのクローズを通知するかを指定します。

セッションクローズ通知をサポートする、
   ・RMI BC
   ・CORBA BC
   ・JDBC BC
に対してのみ、設定が意味を持ちます。それ以外の場合、false 固定で変更はできません。
   RMI BCのサービスユニットでStatefulSessionBeanを使用している場合は指定してください。
true、falseから選択[任意]
   デフォルトは"false"
タイムアウト
Service呼び出し時のタイムアウト値を指定します。 0 以下の値を指定した場合、タイムアウトは発生しません。
   ※ブロードキャストにある場合無効
非負整数[任意]
   単位[ミリ秒]
   デフォルトは"180000"
オプション一覧
オプションを設定します。
[2.7.5. オプション一覧の設定]を参照して下さい。
 
※ 妥当性チェックで問題がある項目名は、プロパティビュー上で赤く表示されます。 詳細は、2.8. 妥当性チェックを参照してください。

2.10.2.3. ハンドラの定義

ハンドラチェーンはユーザが指定したサービスハンドラを順番に行うものです。ハンドラチェーンには、複数のサービスハンドラを含むことができます。
キャンパス上のhandlerオブジェクトを選定して、プロパティビューにハンドラ情報を設定します。
ハンドラの属性情報
ハンドラを選択すると、プロパティー・ビューに、情報が表示されます。
プロパティー・ビューで、ハンドラの情報が編集できます。


図2.10.2.3-1

表2.10.2.3-1
項目
説明

一般
ハンドラクラス
ハンドラのクラス名を指定します。
   指定したクラスをclassファイルとしてサービスユニットのMETA-INF\classesに配置するか、または、jarファイルとしてMETA-INF\libフォルダに配置します。
クラス名 「必須」
ハンドラID
ハンドラに一意のidを割り当てます。
任意の文字列 [必須]
ハンドラ名
ハンドラに一意の名前を割り当てます。
任意の文字列 [任意]
ルーティング
繰り返し送信の回数
同じ呼び出し先へ繰り返し送信の回数を指定します。
ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
数値(1〜2147483647)[任意]
   デフォルトは"1"
inメッセージ
固定的にinメッセージとして呼び出し先へ送信するのメッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない。
?ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
【マルチバイト文字列指定可】
選択
すべての入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
送信先からのoutメッセージの名前
outメッセージとして呼び出し元への返信メッセージの名前を指定します。
?"in"、"out"(小文字)が指定できない。
?ブロードキャストに該当要素がない。
しかし、ブロードキャスト送信先エンドポイント/ハンドラに該当設定できるようにする。
?繰り返し送信の回数の値が1より大きい場合、設定した送信先からのoutメッセージの名前の後ろに自動的に順番を付けます。
例えば、送信先からのoutメッセージの名前に"response"、繰り返し送信の回数に3が設定された場合、 ユーザが選択時に、"response1"、"response2"、"response3" を選択できます。
【マルチバイト文字列指定可】
"in"、"out"(小文字)以外の文字列(Name)[任意]
保持メッセージの名前一覧
保持メッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない
?ブロードキャスト送信先エンドポイント/ハンドラにある場合、該当項目が無効
【マルチバイト文字列指定可】
選択
すべての「入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
その他
説明
ハンドラの説明を記述します。
【マルチバイト文字列指定可】
任意の文字列 [任意]
セッションのクローズ
定義されているサービスリストの呼び出しが完了した際にSessionのクローズを通知するかを指定します。

セッションクローズ通知をサポートする、
   ・RMI BC
   ・CORBA BC
   ・JDBC BC
に対してのみ、設定が意味を持ちます。それ以外の場合、false 固定で変更はできません。
   RMI BCのサービスユニットでStatefulSessionBeanを使用している場合は指定してください。
true、falseから選択[任意]
   デフォルトは"false"
タイムアウト
ハンドラに指定するエンドポイントの呼び出し時のタイムアウト値を指定します。 0 以下の値を指定した場合、タイムアウトは発生しません。
   ※ブロードキャストにある場合無効
非負整数[任意]
   単位[ミリ秒]
   デフォルトは"180000"
※ 妥当性チェックで問題がある項目名は、プロパティビュー上で赤く表示されます。 詳細は、2.8. 妥当性チェックを参照してください。
パラメータの属性情報
ハンドラ関数に渡すパラメータを定義します。
パラメータを選択すると、プロパティー・ビューに、属性の情報が表示されます。
ここで、パラメータの属性が編集できます。


図2.10.2.3-2

表2.10.2.3-2
項目
説明
パラメータ名
パラメータの名前を指定します。
パラメータ値
パラメータの値を指定します。

2.10.2.4. ブロードキャストの定義

ブロードキャスト機能は同じメッセージを複数の宛先へ送信する機能です。下記の設定項目でブロードキャスト処理を定義します。
ブロードキャストの属性情報
ブロードキャストを選択すると、プロパティー・ビューに選択されたブロードキャストの属性情報が表示され、 編集することができます。


図2.10.2.4-1

表2.10.2.4-1
設定項目
説明

一般
タイムアウト
ブロードキャスト先からの応答待ち時間を指定します。0 以下の値を指定した場合、タイムアウトは発生しません。
非負整数[任意]
   単位[ミリ秒]
   デフォルトは"180000"
応答待ちモード
同じメッセージを複数宛先へ送信した後、以下の三つの選択によって応答の待ちを行って、サービスからのメッセージ転送を続けます。
   ・all (全てのメッセージからの応答受信後)
   ・none (応答を待たず即時通知)
all、noneから選択[任意]
   デフォルトは"none"
メッセージ交換方式
ブロードキャストのメッセージ交換方式を指定します。ブロードキャスト作成時に自動で設定されます。
in-only、 in-out、robust-in-onlyから選択[必須]
   デフォルトは"in-only"
ルーティング
inメッセージ
固定的にinメッセージとして呼び出し先へ送信するのメッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない。
【マルチバイト文字列指定可】
選択
すべての入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
保持メッセージの名前一覧
保持メッセージの名前を指定します。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない
【マルチバイト文字列指定可】
選択
すべての「入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
ブロードキャスト下のサービスの属性情報
[「送信先エンドポイント」の属性情報] を参照して下さい。
ブロードキャスト下のハンドラの属性情報
[ハンドラの属性情報] を参照して下さい。
ブロードキャスト下のフォルトの属性情報
[フォルトの属性情報] を参照して下さい。

2.10.2.5. フォルト定義

呼び出し先のサービスからError/Faultが返却された場合の動作をFault処理と呼び出す。下記の設定項目でFault処理を定義します。
フォルトの属性情報
フォルトを選択すると、プロパティー・ビューに、選択されたフォルトの属性情報が表示され、 編集することができます。


図2.10.2.5-1

表2.10.2.5-1
設定項目
説明

一般
エンドポイント名
Sequencing SEが呼び出すフォルトサービスのエンドポイント名を指定します。サービスユニット選択時に自動で設定されます。
文字列[必須]
サービス名
Sequencing SEが呼び出すフォルトサービスのサービス名を指定します。サービスユニット選択時に自動で設定します。
QName(名前空間、ローカル名) [必須]
インタフェース名
Sequencing SEが呼び出すフォルトサービスのインタフェース名を指定します。サービスユニット選択時に自動で設定します。
QName(名前空間、ローカル名) [必須]
ESBインスタンス名
ESBインスタンス名を表示します。変更する必要はありません。(変更しても保存されません。)
文字(A-Z、a-z)、数字(0-9)、ハイフン(-)、点(.)、下線(_)の組み合わせ [任意]
オペレーション名
Sequencing SEが呼び出すフォルトサービスのオペレーション名を指定します。サービスユニット選択時に自動で設定します。
QName(名前空間、ローカル名)[必須]
メッセージ交換方式
Sequencing SEが呼び出すオペレーションのメッセージ交換方式を指定します。サービスユニット選択時に自動で設定します。
in-only、 in-out、robust-in-only
から選択 [必須]
次の処理
フォルトサービスを呼び出し完了した後の動作を指定します。
   HANDLER:続けて「ハンドラ・チェーン」の次のハンドラを呼び出します。ハンドラのみ、この項目が設定できます。
   SERVICE:該当サービスまたは「ハンドラ・チェーン」を実行しないで、サービスリストに次のサービスまたは「ハンドラ・チェーン」を呼び出します。
   NOTHING:ServiceListの処理を中断して、フォルトサービスの返信をシーケンシングの返却として、シーケンシングを終了します。
HANDLER、SERVICE、NOTHINGから選択 [必須]
フォルトエンドポイント名
Faultエンドポイント名を指定します。
Error/Faultを受信したとき、Handler、Serviceの呼び出しエンドポイント名によってどのFault処理を呼び出すか決定します。呼び出しエンドポイント名が「フォルトエンドポイント名」と一致した場合、該当Fault処理を呼び出します。一致するものが見つからない場合、「フォルトエンドポイント名」を指定してしないFault処理を実行します。
文字列[任意]
   デフォルトは””
ルーティング
inメッセージ Fault処理のinメッセージとしてどのメッセージを利用するのを指定します。 エラー、親のinメッセージ、メッセージから選択 [任意]
inメッセージ
固定的にinメッセージとして呼び出し先へ送信するのメッセージの名前を指定します。
?メッセージを選択の場合だけで設定できる。
?まだ呼び出されていないサービスに関連するメッセージの名前を指定できない。
?"in"、"out"(小文字)が指定できない。
【マルチバイト文字列指定可】
選択
すべての入力メッセージの名前、送信先からのoutメッセージの名前に設定した名前と前段Sequencingから保持した名前から一つを選択[任意]
または入力:
"in"、"out"(小文字)以外の文字列(Name)[任意]
   ※同じ名前を重複して入力できません
その他
説明
Fault処理の説明を記述します。
【マルチバイト文字列指定可】
文字列[任意]
セッションのクローズ
定義されているサービスリストの呼び出しが完了した際にSessionのクローズを通知するかを指定します。

セッションクローズ通知をサポートする、
   ・RMI BC
   ・CORBA BC
   ・JDBC BC
に対してのみ、設定が意味を持ちます。それ以外の場合、false 固定で変更はできません。
   RMI BCのサービスユニットでStatefulSessionBeanを使用している場合は指定してください。
true、falseから選択[任意]
   デフォルトは"false"
タイムアウト
Fault呼び出し時のタイムアウト値を指定します。 0 以下の値を指定した場合、タイムアウトは発生しません。
非負整数[任意]
   単位[ミリ秒]
   デフォルトは"180000"
※ 妥当性チェックで問題がある項目名は、プロパティビュー上で赤く表示されます。 詳細は、2.8. 妥当性チェックを参照してください。

2.10.2.6. 要素のコピーと削除

各要素の、コピーおよび削除については、 [2.5.7.3. 送信先エンドポイントに対する操作]、 [2.5.7.4. ハンドラ・チェーンに対する操作]、 [2.5.7.5. ブロードキャストに対する操作]、 [2.5.7.6. ハンドラに対する操作]、 [2.5.7.7. フォルトに対する操作]、 [2.5.7.8. パラメータに対する操作] をご覧下さい。

2.10.2.7. ハンドラの実装

Sequencing SE用ハンドラでは、開発者が作成したハンドラ関数を呼び出すことができます。開発者はハンドラ関数内でメッセージ内容に応じたServiceを呼び出したり、メッセージの内容を編集することが可能です。
加えて、Fault処理機能では、サービスからError/Faultメッセージが返却された場合の動作について定義できます。

2.10.2.8. ハンドラクラスの作成

Sequeincing SE用ハンドラを開発するには <WebOTXインストールフォルダ>/jbi/lib/jbi.jar, <WebOTXインストールフォルダ>/jbi/components/sequencing/sequencingengine.jar内のlib/sequencingengine_rt.jar を参照しています。ハンドラを開発する場合、これらのJARファイルをクラスパスに追加してください。Developers' Studio を使用している場合は、プロジェクトのプロパティで「外部JARの追加」にこれらのJARファイルを追加します。
SequencingSE用ハンドラのハンドラクラスは「com.nec.webotx.jbi.engine.sequencing.handler.SequenceHandler」インタフェースを実装します。このインタフェースには、サポートしているMEPのタイプおよび宛先サービス設定メソッドが定義されています。以下を参照してください。
public interface SequenceHandler {
  public static String MEP_IN_ONLY = "http://www.w3.org/2004/08/wsdl/in-only";
  public static String MEP_IN_OUT = "http://www.w3.org/2004/08/wsdl/in-out";
  public static String MEP_ROBUST_IN_ONLY = 
     "http://www.w3.org/2004/08/wsdl/robust-in-only";
  public static String MEP_IN_ONLY_2006 = "http://www.w3.org/2006/01/wsdl/in-only";
  public static String MEP_IN_OUT_2006 = "http://www.w3.org/2006/01/wsdl/in-out";
  public static String MEP_ROBUST_IN_ONLY_2006 =
     "http://www.w3.org/2006/01/wsdl/robust-in-only";
 
  /** initialize parameter. */
  public void init(java.util.Map initParam);
 
  /** generate the new MessageExchange. */
  public HandlerTargetInfo handleMessageExchange(
    javax.jbi.messaging.NormalizedMessage nm, HandlerTargetInfo target,
    Logger logger);
}

・  初期化メソッド (init)
このメソッドで、配備の時に設定した初期化パラメータをinitParamから取得できます。
・  宛先サービス設定メソッド (handleMessageExchange)
引数のNormalizedMessageおよび他の情報を基づいて、ユーザがロジックニーズによって、つづけて実行するサービスが設定できます。
このメソッドの戻り値はHandlerTargetInfoです。HandlerTargetInfoはSequencing SE内部でルーティングに使う情報を持ち、これを返却することで設定したサービスを呼び出します。ハンドラの開発者は、引数のHandlerTargetInfoオブジェクトに対し、以下に示す「set」メソッドで、サービスルーティングに必要な情報を設定することが出来ます。
HandlerTargetInfoオブジェクトに設定できる情報は次のとおりです。
表2.10.2.8-1
メソッド
説明
備考
public void setServiceLocalpart
(String serviceLocalpart)
サービス名のLocalpart属性情報を設定します。
サービス名のNamespace属性と一緒にサービス名を指定します。
必須
public void setServiceNamespace
(String serviceNamespace)
サービス名のNamespace属性情報を設定します。
サービス名のLocalpart属性と一緒にサービス名を指定します。
必須
public void setInterfaceLocalpart
(String interfaceLocalpart)
インタフェース名のLocalpart属性情報を設定します。
インタフェース名のNamespace属性と一緒にインタフェース名を指定します。
オプション
public void setInterfaceNamespace
(String interfaceNamespace)
インタフェース名のNamespace属性情報を設定します。
インタフェース名のLocalpart属性と一緒にインタフェース名を指定します。
オプション
public void setOperationLocalpart
(String operationLocalpart)
操作名のLocalpart属性情報を設定します。
操作名のNamespace属性と一緒に操作名を指定します。
必須
public void setOperationNamespace
(String operationNamespace)
操作名のNamespace属性情報を設定します。
操作名のLocalpart属性と一緒に操作名を指定します。
必須
public String getEndpoint
()
エンドポイント名を設定します。
--
public void setMep
(String mep)
MEのタイプを設定します。設定できる文字列は次のとおりです。
    http://www.w3.org/2004/08/wsdl/in-only
    http://www.w3.org/2004/08/wsdl/robust-in-only
    http://www.w3.org/2004/08/wsdl/in-out
    http://www.w3.org/2006/01/wsdl/in-only
    http://www.w3.org/2006/01/wsdl/robust-in-only
    http://www.w3.org/2006/01/wsdl/in-out

必須
引数の NormalizedMessage nm を操作してメッセージを変更することができます。 nm.getContent()メソッドにより入力メッセージ(javax.xml.transform.Source型)を取得することができます。その後、 次のサービスに渡すメッセージを nm.setContent(javax.xml.transform.Source)メソッドにより設定してください。 ここで nm.getContents() で取得したメッセージの型が javax.xml.transform.StreamSource および javax.xml.transform.SAXSource の場合は、一度メッセージを読み出したら再度読み出せなくなるので、読みだした場合はSourceを生成して nm.setContent() で必ず 設定し直す必要があるのでご注意ください。

Sequencing SE用ハンドラの詳細なAPIは以下を参照してください。
[リファレンス集 開発編(Enterprise Service Bus) >1. APIリファレンス ]

2.10.2.9. ハンドラクラスのロード

作成したハンドラをコンパイルし、JARファイルにアーカイブします。該当SUのMETA-INF\lib配下におき、SAを起動させると該当クラスがロードされます。
例)SA名がSampleSA, SU名がSampleSU, JARファイルがsample.jarの場合
SampleSA.zip に SampleSA\SampleSU\META-INF\lib\sample.jar を追加

2.10.2.10. 利用のヒント

・  選択


図2.10.2.10-1

選択機能を実現することができます。 HandlerがNormalizedMessageの内容によりルーティングを決定します。Handler内部でEndpointなどの情報をHandlerTargetInfoに設定して返却します。
・  省略


図2.10.2.10-2

経路1…→A→B→… 
経路2…→B→…
経路2のように、Handlerからの呼び出しを省略したい場合、Handlerでnullを返却します。

2.10.2.11. メッセージ転送ルール

呼び出し元からのメッセージの転送

呼び出し元からのメッセージの転送は、呼び出し元のMEPと呼び出し先のMEPと関係がありません。
表2.10.2.11-1
呼び出し元からのメッセージタイプ
動作の説明
in
即時返信が有効の場合、呼び出し元へdoneを返信します。
新たなメッセージエクスチェンジを生成して、呼び出し元からのメッセージエクスチェンジに格納されたinデータを新たに生成したメッセージエクスチェンジに入れて、定義した呼び出し順の一番目のサービスへ送信します。
done
何もしません。
Error
何もしません。

Memo
即時返信を利用する時、トランザクションをサポートしません。 即時返信を利用する時、呼び出し元とのMEPをIn-onlyに限定します。


ブロードキャストと繰り返し以外のサービスからのメッセージの転送

サービスリスト中のサービス、ハンドラ、フォルトは、呼び出し順により、前の方は上流サービスとよび、後の方は下流サービスと呼びます。
例えば、サービスリストの呼び出し順が、
service1->handler1->fault1->service2->broadcast1->repeat1
である場合、service2 の上流サービスは fault1 で、下流サービスは broadcast1 となります。
サービスから受信したメッセージをメッセージエクスチェンジに格納して下流サービスに転送します。下流サービスがない場合は、メッセージを呼び出し元に返信してサービスリストの実行を完了します。
サービスから Error または Fault を受信した場合、フォルト処理が定義していないか一致するフォルト処理を見つけられなければ、呼び出し元に Error および Fault を返信します。 フォルト処理があれば、そのフォルト処理で指定したサービスを下流サービスとしてメッセージを送信します。もし、フォルト処理の呼び出しでさらに Error または Fault を受信した場合は、呼び出し元に返信します。フォルト処理の返信が Done または out の場合、フォルト処理の設定「次の処理」で nothing を指定すると呼び出し元に返信し、handler/serviceを指定すると次のhandler/serviceを下流サービスとして送信します。
表2.10.2.11-2
ブロードキャストと繰り返し
以外のサービスから
のメッセージ
下流サービスへの転送
呼び出し元への転送
(即時返信が有効の場合転送しない)
done
  • 下流サービスで「保持メッセージ」が指定されている
    指定されたメッセージを保持メッセージとする。
  • 下流サービスで「inメッセージ」が指定されている
    指定されたメッセージをinとする。
  • 下流サービスで「inメッセージ」が指定されない
    サービスリストの実行中で受信した最後のout。
    outを受信したことがない場合は呼び出し元のinメッセージ。
  • 呼び出し元のMEPがIn-Only/Robust In-Only
    done
  • 呼び出し元のMEPがIn-Out
    • サービスリストの<list-outName>を指定している
      指定されたメッセージをoutとする。
    • サービスリストの<list-outName>を指定していない
      サービスリスト実行中で最後に受信したout。outを受信したことが場合はError。
error
下流サービスがフォルトサービスであれば転送し、フォルトサービスでなければ呼び出し元へ転送する。
フォルトサービスへのメッセージ転送のルールは表2.10.2.10-3の通りです。
error
Fault
下流サービスがフォルトサービスであれば転送し、フォルトサービスでなければ呼び出し元へ転送する。
フォルトサービスへのメッセージ転送のルールは表2.10.2.10-3の通りです。
  • 呼び出し元のMEPがIn-Only
    Error
  • 呼び出し元のMEPがRobust In-Only/In-Out
    Fault
out
  • 下流サービスで「保持メッセージ」が指定されている
    指定されたメッセージを保持メッセージとする。
  • 下流サービスで「inメッセージ」が指定されている
    指定されたメッセージをinとする。
  • 下流サービスで「inメッセージ」が指定されていない
    outをinとする。
  • 呼び出し元のMEPがIn-Only/Robust In-Only
    done
  • 呼び出し元のMEPがIn-Out
    • サービスリストの「保持メッセージの名前一覧」が指定されている
      指定されたメッセージをoutとする。
    • サービスリストの「保持メッセージの名前一覧」が指定されてない
      out

表2.10.2.11-3
フォルトサービスのinput type
フォルトサービスに送信するinメッセージ
error
Error または Faultの例外メッセージ
in
フォルトサービスの親サービスの in
retention
<name>で指定されたメッセージ

ブロードキャストからのメッセージの転送

ブロードキャストにあるサービスに対して、ブロードキャストの次のサービスを下流サービスとします。
例えば、呼び出し順が、
service1->broadcast1(handler1 / service2)->handler2
である場合、handler1の上流サービスは service1 で、下流サービスは handler2 です。
ブロードキャストにあるサービスから Error または Fault を受信した場合、フォルト処理があれば送信します。このとき、フォルト処理の応答を待たず、フォルト処理の応答は破棄します。

応答待ちタイプがnoneの場合、メッセージを受信すると下表のように動作します。
表2.10.2.11-4
タイプ
動作の説明
in
inを同時にブロードキャストにあるすべての送信先に送信します。応答を待たずに続けて下記の処理を行います。
・下流サービスがある場合の下流サービスへの転送
    ・下流サービスで「保持メッセージの名前一覧」を指定している
        指定されたメッセージを保持メッセージとする。
    ・下流サービスで「inメッセージ」が指定された
        指定されたメッセージをinとする。
    ・下流サービスで「inメッセージ」が指定されていない
        サービスリストの実行中で受信した最後のout。
        outを受信したことがない場合は呼び出し元のinメッセージ。
・下流サービスがない、かつ、即時返信ではない場合の呼び出し元への転送
   ・呼び出し元のMEPがIn-Only/Robust In-Only
       done
   ・呼び出し元のMEPがIn-Out
       ・サービスリストの<list-outName>を指定している
          指定されたメッセージをoutとする。
       ・サービスリストの<list-outName>を指定していない
          サービスリストの実行中で受信した最後のout。outを受信したことがないとError。
done
doneを破棄します。
Error/Fault
Error/Faultをログに出力します。Faultの場合doneを返却します。
・該当サービスがフォルトサービス
   Error/Faultを破棄
・該当サービスがフォルトサービスではない、かつ、フォルトサービスが見つからない
   Error/Faultを破棄
・該当サービスがフォルトサービスではない、かつ、フォルトサービスがある
   フォルトサービスへのメッセージ転送は表2.10.2.10-3の通り
out
doneを返却します。outを破棄します。

応答待ちタイプがallの場合、メッセージを受信すると下表のように動作します。
表2.10.2.11-5
タイプ
動作の説明
in
inを同時にブロードキャストにあるすべての送信先に送信します。in を下流サービス、および呼び出し元にはメッセージ転送を行いません。
done
doneを破棄します。
ブロードキャストにあるサービス(フォルトサービス除外)の最後の応答の場合、表2.10.2.10-6のように動作します。
Error/Fault
Error/Faultをログに出力します。Faultの場合doneを返却します。
該当サービスがフォルトサービスではない、かつ、フォルトサービスがある場合、フォルトサービスへのメッセージ送信は表2.10.2.10-3の通りです。
また、下記のようにメッセージを転送します。
   ・ブロードキャストにあるサービス(フォルトサービスは除外)の最後の応答
       表2.10.2.10-6のように動作します。
   ・オプション BroadcastErrorNoWait が true に設定されている場合、最初のError/Fault応答
       Error/Faultを呼び出し元に返信します。
out
doneを返却します。
ブロードキャストにあるサービス(フォルトサービス除外)の最後の応答の場合、表2.10.2.10-6のように動作します。

表2.10.2.11-6
ブロードキャストにある
サービスの応答のタイプ
下流サービスへの転送
呼び出し元への転送
(即時返信が有効の場合転送しない)
全てdone/全てout
・下流サービスで「保持メッセージの名前一覧」が指定されている
    指定されたメッセージを保持メッセージとする。
・下流サービスで「inメッセージ」が指定されている
    指定されたメッセージをinとする。
・下流サービスの「inメッセージ」が指定されていない
    サービスリストの実行中で受信した最後のout。
    outを受信したことがない場合は呼び出し元のinメッセージ。
・呼び出し元のMEPがIn-Only/Robust In-Only
    done
・呼び出し元のMEPがIn-Out
    ・サービスリストの<list-outName>が指定されている
       指定されたメッセージをoutとする。
    ・サービスリストの<list-outName>が指定されていない
       サービスリストの実行中で受信した最後のout。
       outを受信したことがない場合は Error。
errorあり
- マージしたerror
errorなし、Faultあり
- 最後のFault

Memo
・ブロードキャストのサービス/ハンドラに、繰り返しを設定しても無効です。
・ブロードキャストのサービス/ハンドラに、timeout、message-retentionのinNameとretention-namesを設定しても無効で、ブロードキャストの設定に従います。
・ブロードキャストのサービス/ハンドラのFault処理に、nextを設定しても無効であり、NOTHINGとして動作します。timeoutの設定も無効で、ブロードキャストの設定に従います。
・ブロードキャストを利用する時、トランザクションをサポートしません。


繰り返しのサービスからのメッセージの転送

繰り返しのサービスに対して、繰り返しのサービスの次のサービスを下流サービスとします。
たとえば、呼び出し順は
service1->repeat1(service2 / fault1)->handler2
とした場合、service2の下流サービスはhandler2となります。
繰り返しが終了すると、下流サービスあるいは呼び出し元へメッセージを転送します。繰り返し終了の条件については、 [ 製品構成と提供機能 > 4. ESB > 4.3. サービスエンジン > 4.3.2. Sequencing SE > 4.3.2.4. 繰り返し ] を参照してください。

繰り返しの場合、メッセージを受信すると下表のように動作します。
表2.10.2.11-7
タイプ
動作の説明
in
inを繰り返しの送信先に一回目送信します。
done/out
outの場合doneを返却します。
下記のようにメッセージを転送します。
   ・繰り返しの終了条件を満たす
      表2.10.2.10-2の通りメッセージ転送
   ・繰り返しの終了条件を満たさない
      同じinを繰り返しの送信先にもう一回送信
error/Fault
error/Faultをログに出力します。Faultの場合doneを返却します。
下記のようにメッセージを転送します。
   ・該当サービスがフォルトサービス
      呼び出し元にerror/Faultを返信
   ・該当サービスがフォルトサービスではない、かつ、フォルトサービスが見つからない
      呼び出し元にerror/Faultを返信
   ・該当サービスがフォルトサービスではない、かつ、フォルトサービスがある
      フォルトサービスへのメッセージ転送は表2.10.2.10-3の通り

Memo
繰り返し先に対して、SESSION_CLOSEは一回のみ送信します。

2.10.2.12. ハンドラ間のプロパティ伝播

メッセージエクスチェンジのプロパティを利用して複数のハンドラ間で情報の共有を行います。
プロパティを伝播させる場合はハンドラ処理中に、initメソッドで渡されるMapオブジェクトに接頭辞がUSER_で始まる値にしたプロパティ名のプロパティを追加します。
ハンドラ処理実行後の呼び出しの際に生成するメッセージエクスチェンジのプロパティに追加されます。他のハンドラから参照する場合はinitメソッドで渡されるMapオブジェクトから、設定したプロパティ名で取得します。
プロパティを追加する側のハンドラから参照する側のハンドラの間に、呼び出しがない場合は参照できないので注意してください。
既に同じ名前のプロパティが設定されている場合は新しい値で上書きされますので、注意してください。 Sequencing SE用ハンドラ間だけでなく、メッセージエクスチェンジハンドラともプロパティの共有が可能です。

2.10.2.13. 動的ルーティング

Sequencing SEでは、ServiceListに定義した順番にSerivceUnitを実行する機能に加え、動的ルーティングを行うための仕組みである、Fault処理機能、ハンドラ関数呼び出し機能を提供しています。
Fault処理機能では、ServiceUnitからError/Faultが返却された場合の動作について定義できます。
ハンドラ関数呼び出し機能では、開発者が作成したハンドラ関数を呼び出すことができます。開発者はハンドラ関数内でMessageContentの内容により呼び出すServiceを変更したり、MessageContentの内容を編集することが可能です。
以下に、Fault、ハンドラ関数の使用例を示します。


図2.10.2.13-1

Sequencing SEはコンシューマから受け取ったMessageExchangeをHandler1に通知します。Handler1では、メッセージの内容を判断し、呼び出すServiceを切り替えます。Handler1でService呼び出し時にError/Faultが発生した場合、Fault1で定義されたServiceを呼び出します。
Error/Fault発生時の動作について、以下が選択できます。
表2.10.2.13-1
項目
説明
HANDLER
次の処理を呼び出します。
SERVICE
ハンドラ・チェーンの処理を中断し、次のServiceを実行します。
NOTHING
ServiceListの処理を中断し、コンシューマにエラーのMEを返却します