メッセージ送信の定義について説明します。
ルーティングなし
ルーティング機能を使用しないで、指定したサービスエンドポイントにメッセージ送信するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SendMessage)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SendMessageの呼出し情報(メソッド(send)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント“com.fujitsu.esi.endpoint.outbound2”にメッセージ送信しています。
: <StepInformation stepname="SendMessage1"> <MediatorFunction name="SendMessage"> <Method type="init" name="init" /> <Method type="execute" name="send"> <ParameterList> <Parameter name="esi.SendMessage.endpoint" valuetype="esi.header">com.fujitsu.esi.endpoint.outbound2</Parameter> </ParameterList> </Method> <Method type="cancel" name="cancel" /> <Method type="destroy" name="destroy" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SendMessage1 | |
MediatorFunction | |||
name | メディエータファンクション名“SendMessage”を指定します。 | SendMessage | |
Method | |||
type | 実行種別“init”を指定します。 | init | |
name | SendMessageのメソッド名“init”を指定します。 | init | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | SendMessageのメソッド名“send”を指定します。 | send | |
Parameter | |||
1 | サービスエンドポイント名を指定します。 | ||
name | “esi.SendMessage.endpoint”を指定します。 | esi.SendMessage.endpoint | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のペイロード) | |
値 | サービスエンドポイント名を指定します。 | com.fujitsu.esi.endpoint.outbound2 | |
Method | |||
type | 実行種別“cancel”を指定します。 | cancel | |
name | SendMessageのメソッド名“cancel”を指定します。 | cancel | |
Method | |||
type | 実行種別“destroy”を指定します。 | destroy | |
name | SendMessageのメソッド名“destroy”を指定します。 | destroy |
ルーティングあり(ルーティング定義を利用しない)
ルーティング機能を使用して、条件に合ったサービスエンドポイントにメッセージ送信するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SendMessage)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SendMessageの呼出し情報(メソッド(sendWithRouting)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、“$price == 1000”の条件に合えばサービスエンドポイント“endpointA”に転送し、“$company @EQUAL@ "Fujitsu"”の条件に合えばサービスエンドポイント“endpointB”に転送し、その他の場合には、“com.fujitsu.esi.endpoint.outbound2”に転送しています。
: <StepInformation stepname="SendMessage2"> <MediatorFunction name="SendMessage"> <Method type="init" name="init" /> <Method type="execute" name="sendWithRouting"> <ParameterList> <ParameterArray name="esi.SendMessage.endCondition"> <Parameter valuetype="direct">$price == 1000</Parameter> <Parameter valuetype="direct">$company @EQUAL@ "Fujitsu"</Parameter> <Parameter valuetype="direct">*</Parameter> </ParameterArray> <ParameterArray name="esi.SendMessage.endpoint"> <Parameter valuetype="direct">endpointA</Parameter> <Parameter valuetype="direct">endpointB</Parameter> <Parameter valuetype="esi.header">com.fujitsu.esi.endpoint.outbound2</Parameter> </ParameterArray> </ParameterList> </Method> <Method type="cancel" name="cancel" /> <Method type="destroy" name="destroy" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SendMessage2 | |
MediatorFunction | |||
name | メディエータファンクション名“SendMessage”を指定します。 | SendMessage | |
Method | |||
type | 実行種別“init”を指定します。 | init | |
name | SendMessageのメソッド名“init”を指定します。 | init | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | SendMessageのメソッド名“sendWithRouting”を指定します。 | sendWithRouting | |
ParameterArray | |||
name | “esi.SendMessage.endCondition”を指定します。条件リストの配列です。 | esi.SendMessage.endCondition | |
1 | Parameter | ||
条件式を指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $price == 1000 | |
2 | Parameter | ||
条件式を指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $company @EQUAL@ "Fujitsu" | |
3 | Parameter | ||
条件式を指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | * | |
ParameterArray | |||
name | “esi.SendMessage.endpoint”を指定します。サービスエンドポイントリストの配列です。 | esi.SendMessage.endpoint | |
1 | Parameter | ||
条件式1のサービスエンドポイントを指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | サービスエンドポイントを指定します。 | endpointA | |
2 | Parameter | ||
条件式2のサービスエンドポイントを指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | サービスエンドポイントを指定します。 | endpointB | |
3 | Parameter | ||
条件式3のサービスエンドポイントを指定します。 | |||
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | サービスエンドポイントを指定します。 | com.fujitsu.esi.endpoint.outbound2 | |
Method | |||
type | 実行種別“cancel”を指定します。 | cancel | |
name | SendMessageのメソッド名“cancel”を指定します。 | cancel | |
Method | |||
type | 実行種別“destroy”を指定します。 | destroy | |
name | SendMessageのメソッド名“destroy”を指定します。 | destroy |
条件式
ここでは、条件式で使用できる演算子と文法について説明します。
条件式で使用できる演算子を以下に示します。
演算子 | 説明 |
---|---|
> | 数値比較を行います。左辺の値が右辺の値よりも大きい場合に真となります。 |
< | 数値比較を行います。左辺の値が右辺の値よりも小さい場合に真となります。 |
>= | 数値比較を行います。左辺の値が右辺の値以上の場合に真となります。 |
<= | 数値比較を行います。左辺の値が右辺の値以下の場合に真となります。 |
== | 数値比較を行います。左辺の値が右辺の値と等しい場合に真となります。 |
!= | 数値比較を行います。左辺の値が右辺の値と異なる場合に真となります。 |
@EQUAL@ | 文字列比較を行います。左辺の文字列が右辺の文字列と等しい場合に真となります。 |
@NOTEQUAL@ | 文字列比較を行います。左辺の文字列が右辺の文字列と異なる場合に真となります。 |
条件式には、以下の文法があります。
文字列を表す場合は、“ " ”(ダブルクォーテーション)でくくります。
“ " ”がない場合は、数値とみなされます。
条件式に括弧は使用できません。
論理演算子は、ANDだけ使用でき、“&&”と記述します。
共通メッセージのヘッダパラメタを指定する場合は、ヘッダパラメタキー名の先頭に“$”を付けます。
比較対象値、比較演算子、および論理演算子の間には、デリミタとして必ず半角スペースを入れます。
条件式に“*”(半角のアスタリスク)だけを指定すると、無条件に判定結果が真となります。
XML文書中には直接“ " ”、“&”、“<”および“>”を記述することができません。条件式でこれらの文字を使用する場合は、CDATAセクションまたは実体参照を使用して記述してください。
$price >= 1000を定義する場合
CDATAセクションを使用する場合の定義例
<![CDATA[$price >= 1000]]>
実体参照を使用する場合の定義例
$price >= 1000
ルーティングあり(ルーティング定義を利用)
送信するメッセージ内の値や条件によって、動的に送信先サービスエンドポイントを設定するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SendMessage)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SendMessageの呼出し情報(メソッド(sendWithContentsRouting)やパラメタ)を定義します。
パラメタにOUTBOUND用のルーティング定義名を指定します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、OUTBOUND用のルーティング定義“routingA”にメッセージを送信しています。
: <StepInformation stepname="SendMessage3"> <MediatorFunction name="SendMessage"> <Method type="init" name="init" /> <Method type="execute" name="sendWithContentsRouting"> <ParameterList> <Parameter name="esi.SendMessage.routing.definition">routingA</Parameter> </ParameterList> </Method> <Method type="cancel" name="cancel" /> <Method type="destroy" name="destroy" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | ||
---|---|---|---|---|
StepInformation | ||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SendMessage3 | ||
MediatorFunction | ||||
name | メディエータファンクション名“SendMessage”を指定します。 | SendMessage | ||
Method | ||||
type | 実行種別“init”を指定します。 | init | ||
name | SendMessageのメソッド名“init”を指定します。 | init | ||
Method | ||||
type | 実行種別“execute”を指定します。 | execute | ||
name | SendMessageのメソッド名“sendWithContentsRouting”を指定します。 | sendWithContentsRouting | ||
Parameter | ||||
1 | ルーティング定義名を指定します。 | |||
name | “esi.SendMessage.routing.definition”を指定します。 | esi.SendMessage.routing.definition | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | ルーティング定義名を指定します。 | routingA | ||
Method | ||||
type | 実行種別“cancel”を指定します。 | cancel | ||
name | SendMessageのメソッド名“cancel”を指定します。 | cancel | ||
Method | ||||
type | 実行種別“destroy”を指定します。 | destroy | ||
name | SendMessageのメソッド名“destroy”を指定します。 | destroy |
ルーティング定義名で指定するルーティング定義は、送信メッセージルーティング(OUTBOUND)を指定してください。
同報送信
複数の送信側サービスエンドポイントや複数のシーケンスに同報送信するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SendMessage)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SendMessageの呼出し情報(メソッド(multicast)やパラメタ)を定義します。
パラメタに送信先のサービスエンドポイント名を複数指定します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント“endpointA”、“endpointB”、“endpointC”に同報でメッセージを送信しています。
: <StepInformation stepname="SendMessage3"> <MediatorFunction name="SendMessage"> <Method type="init" name="init" /> <Method type="execute" name="multicast"> <ParameterList> <Parameter name="esi.SendMessage.error.send.action">continue</Parameter> <Parameter name="esi.SendMessage.error.sequence.action">break</Parameter> <ParameterArray name="esi.SendMessage.endpoint"> <Parameter>endpointA</Parameter> <Parameter>endpointB</Parameter> <Parameter>endpointC</Parameter> </ParameterArray> </ParameterList> </Method> <Method type="cancel" name="cancel" /> <Method type="destroy" name="destroy" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | ||
---|---|---|---|---|
StepInformation | ||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SendMessage3 | ||
MediatorFunction | ||||
name | メディエータファンクション名“SendMessage”を指定します。 | SendMessage | ||
Method | ||||
type | 実行種別“init”を指定します。 | init | ||
name | SendMessageのメソッド名“init”を指定します。 | init | ||
Method | ||||
type | 実行種別“execute”を指定します。 | execute | ||
name | SendMessageのメソッド名“multicast”を指定します。 | multicast | ||
Parameter | ||||
1 | エラー発生時に同報送信を継続するかどうかを指定します。 | |||
name | “esi.SendMessage.error.send.action”を指定します。 | esi.SendMessage.error.send.action | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | エラー発生時に同報送信を継続するかどうかを指定します。
| continue | ||
2 | エラー発生時にシーケンス処理を継続するかどうかを指定します。 | |||
name | “esi.SendMessage.error.sequence.action”を指定します。 | esi.SendMessage.error.sequence.action | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | エラー発生時にシーケンス処理を継続するかどうかを指定します。
| continue | ||
ParameterArray | ||||
name | “esi.SendMessage.endpoint”を指定します。サービスエンドポイントリストの配列です。 | esi.SendMessage.endpoint | ||
1 | Parameter | |||
送信先1のサービスエンドポイント名を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointA | ||
2 | Parameter | |||
送信先2のサービスエンドポイント名を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointB | ||
3 | Parameter | |||
送信先3のサービスエンドポイント名を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointC | ||
Method | ||||
type | 実行種別“cancel”を指定します。 | cancel | ||
name | SendMessageのメソッド名“cancel”を指定します。 | cancel | ||
Method | ||||
type | 実行種別“destroy”を指定します。 | destroy | ||
name | SendMessageのメソッド名“destroy”を指定します。 | destroy |
SOAP Gatewayを使用するには、以下のようにします。
シーケンス定義のシーケンスブロックに、SOAP Gatewayのメディエータファンクションの呼出しを定義します。
シーケンス定義の実行ステップ情報に、SOAP Gatewayの呼出し情報(メソッドやパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、共通メッセージ本体をパラメタに指定して、メディエータファンクション“ESISoapGw”のメソッド“sendMessage”を呼び出しています。
: <StepInformation stepname="GwStep"> <MediatorFunction name="ESISoapGw"> <Method type="execute" name="sendMessage"> <ParameterList> <Parameter name="esi.SoapGateway.endpoint" valuetype="direct">endpoint01</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 |
---|---|---|
StepInformation | ||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | GwStep |
MediatorFunction | ||
name | SOAP Gatewayのメディエータファンクション名“ESISoapGw”を指定します。 | ESISoapGw |
Method | ||
type | 実行種別“execute”を指定します。 | execute |
name | ESISoapGwのメソッド名“sendMessage”を指定します。 | sendMessage |
Parameter | ||
name | “esi.SoapGateway.endpoint”を指定します。 | esi.SoapGateway.endpoint |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct |
値 | サービスエンドポイント名を指定します。 | endpoint01 |
Parameterの“esi.SoapGateway.endpoint”を省略した場合は、ESIHeaderのパラメタ“com.fujitsu.esi.endpoint.outbound”の値が使用されます。
JCA Adapterを使用するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(JCAAdapter)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、JCAAdapterの呼出し情報(メソッド(execute)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント名“esi.JcaAdapter.endpoint”に定義されたアダプタ製品または企業情報システムを呼び出します。
: <StepInformation stepname="JcaAdapter1" monitoring="false"> <MediatorFunction name="JCAAdapter"> <Method type="execute" name="execute"> <ParameterList> <Parameter name="esi.JcaAdapter.payload" valuetype="esi.payload">@current</Parameter> <Parameter name="esi.JcaAdapter.endpoint" valuetype="direct">jca_endpoint</Parameter> <Parameter name="esi.JcaAdapter.charcode" valuetype="direct">UTF-8</Parameter> <Parameter name="esi.JcaAdapter.isTransaction">true</Parameter> </ParameterList> <Return valuetype="esi.payload"></Return> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | JcaAdapter1 | |
MediatorFunction | |||
name | メディエータファンクション名“JCAAdapter”を指定します。 | JCAAdapter | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | JCAAdapterのメソッド名“execute”を指定します。 | execute | |
Parameter | |||
1 | ペイロードを指定します。 | ||
name | “esi.JcaAdapter.payload”を指定します。 | esi.JcaAdapter.payload | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.payload(共通メッセージ内のペイロード) | |
値 | JCAアダプタで渡すペイロードを指定します。 | @current | |
2 | サービスエンドポイント名を指定します。 | ||
name | “esi.JcaAdapter.endpoint”を指定します。 | esi.JcaAdapter.endpoint | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | サービスエンドポイント名を指定します。 | jca_endpoint | |
3 | ペイロードの文字コードを指定します。 | ||
name | “esi.JcaAdapter.charcode”を指定します。 | esi.JcaAdapter.charcode | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | ペイロードの文字コードを指定します。 | UTF-8 | |
4 | トランザクション制御を指定します。 | ||
name | “esi.JcaAdapter.isTransaction”を指定します。 | esi.JcaAdapter.isTransaction | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | トランザクション制御を指定します。
| true | |
Method | |||
type | 実行種別“cancel”を指定します。 | cancel | |
name | JCAAdapterのメソッド名“cancel”を指定します。 | cancel | |
Method | |||
type | 実行種別“destroy”を指定します。 | destroy | |
name | JCAAdapterのメソッド名“destroy”を指定します。 | destroy |