サービス呼出しの定義について説明します。
同期でサービスを呼び出す場合、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SyncServiceCall)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SyncServiceCallの呼出し情報(メソッド(send)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント"endpoint01"で定義されているサービス呼出しを行います。
: <StepInformation stepname="SyncServiceCall1" monitoring="false"> <MediatorFunction name="SyncServiceCall"> <Method type="execute" name="send"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <Parameter name="endpoint" valuetype="direct">endpoint01</Parameter> <Parameter name="use_fault_message">false</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SyncServiceCall1 | |
MediatorFunction | |||
name | メディエータファンクション名“SyncServiceCall”を指定します。 | SyncServiceCall | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | SyncServiceCallのメソッド名“send”を指定します。 | send | |
Parameter | |||
1 | パラメタとして渡すメッセージを指定します。 | ||
name | “message”を指定します。 | name | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | |
2 | サービスエンドポイント名を指定します。 | ||
name | “endpoint”を指定します。 | name | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct | |
値 | サービスエンドポイント名を指定します。 | endpoint01 | |
3 | 呼出し先サービスからのエラーメッセージをエラーシーケンスに通知するかどうかを指定します。 | ||
name | “use_fault_message”を指定します。 | use_fault_message | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct | |
値 | trueまたはfalseを指定します。 | false |
ルーティング機能を使用して、条件に合った同期サービス呼出しを行うには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SyncServiceCallWithRouting)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SyncServiceCallWithRoutingの呼出し情報(メソッド(sendWithConditionRouting)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、“$price == 1000”の条件に合えばサービスエンドポイント“endpointA”に転送し、“$company @EQUAL@ "Fujitsu"”の条件に合えばサービスエンドポイント“endpointB”に転送し、その他の場合には、“endpointC”に転送しています。
: <StepInformation stepname="SyncServiceCallWithRouting1"> <MediatorFunction name="SyncServiceCallWithRouting"> <Method type="execute" name="sendWithConditionRouting"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <ParameterArray name="condition_list"> <Parameter valuetype="direct">$price == 1000</Parameter> <Parameter valuetype="direct">$company @EQUAL@ "Fujitsu"</Parameter> <Parameter valuetype="direct">*</Parameter> </ParameterArray> <ParameterArray name="endpoint_list"> <Parameter valuetype="direct">endpointA</Parameter> <Parameter valuetype="direct">endpointB</Parameter> <Parameter valuetype="direct">endpointC</Parameter> </ParameterArray> <Parameter name="use_fault_message">false</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | ||
---|---|---|---|---|
StepInformation | ||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SyncServiceCallWithRouting1 | ||
MediatorFunction | ||||
name | メディエータファンクション名“SyncServiceCallWithRouting”を指定します。 | SyncServiceCallWithRouting | ||
Method | ||||
type | 実行種別“execute”を指定します。 | execute | ||
name | SyncServiceCallWithRoutingのメソッド名“sendWithConditionRouting”を指定します。 | sendWithConditionRouting | ||
Parameter | ||||
1 | パラメタとして渡すメッセージを指定します。 | |||
name | “message”を指定します。 | name | ||
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | ||
ParameterArray | ||||
name | “condition_list”を指定します。条件リストの配列です。 | condition_list | ||
1 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $price == 1000 | ||
2 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $company @EQUAL@ "Fujitsu" | ||
3 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | * | ||
ParameterArray | ||||
name | “endpoint_list”を指定します。サービスエンドポイントリストの配列です。 | endpoint_list | ||
1 | Parameter | |||
条件式1のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointA | ||
2 | Parameter | |||
条件式2のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointB | ||
3 | Parameter | |||
条件式3のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointC | ||
Parameter | ||||
1 | 呼出し先サービスからのエラーメッセージをエラーシーケンスに通知するかどうかを指定します。 | |||
name | “use_fault_message”を指定します。 | use_fault_message | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct | ||
値 | trueまたはfalseを指定します。 | false |
条件式
ここでは、条件式で使用できる演算子と文法について説明します。
条件式で使用できる演算子を以下に示します。
演算子 | 説明 |
---|---|
> | 数値比較を行います。左辺の値が右辺の値よりも大きい場合に真となります。 |
< | 数値比較を行います。左辺の値が右辺の値よりも小さい場合に真となります。 |
>= | 数値比較を行います。左辺の値が右辺の値以上の場合に真となります。 |
<= | 数値比較を行います。左辺の値が右辺の値以下の場合に真となります。 |
== | 数値比較を行います。左辺の値が右辺の値と等しい場合に真となります。 |
!= | 数値比較を行います。左辺の値が右辺の値と異なる場合に真となります。 |
@EQUAL@ | 文字列比較を行います。左辺の文字列が右辺の文字列と等しい場合に真となります。 |
@NOTEQUAL@ | 文字列比較を行います。左辺の文字列が右辺の文字列と異なる場合に真となります。 |
条件式には、以下の文法があります。
文字列を表す場合は、“ " ”(ダブルクォーテーション)でくくります。
“ " ”がない場合は、数値とみなされます。
条件式に括弧は使用できません。
論理演算子は、ANDだけ使用でき、“&&”と記述します。
共通メッセージのヘッダパラメタを指定する場合は、ヘッダパラメタキー名の先頭に“$”を付けます。
比較対象値、比較演算子、および論理演算子の間には、デリミタとして必ず半角スペースを入れます。
条件式に“*”(半角のアスタリスク)だけを指定すると、無条件に判定結果が真となります。
XML文書中には直接“ " ”、“&”、“<”および“>”を記述することができません。条件式でこれらの文字を使用する場合は、CDATAセクションまたは実体参照を使用して記述してください。
$price >= 1000を定義する場合
CDATAセクションを使用する場合の定義例
<![CDATA[$price >= 1000]]>
実体参照を使用する場合の定義例
$price >= 1000
ルーティング機能を使用して、条件に合った同期サービス呼出しを行うには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(SyncServiceCallWithRouting)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、SyncServiceCallWithRoutingの呼出し情報(メソッド(sendWithDefinitionRouting)やパラメタ)を定義します。
パラメタにOUTBOUND用のルーティング定義名を指定します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、OUTBOUND用のルーティング定義“routingA”にメッセージを送信しています。
: <StepInformation stepname="SyncServiceCallWithRouting1"> <MediatorFunction name="SyncServiceCallWithRouting"> <Method type="execute" name="sendWithDefinitionRouting"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <Parameter name="routing">routingA</Parameter> <Parameter name="use_fault_message">false</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | ||
---|---|---|---|---|
StepInformation | ||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | SyncServiceCallWithRouting1 | ||
MediatorFunction | ||||
name | メディエータファンクション名“SyncServiceCallWithRouting”を指定します。 | SyncServiceCallWithRouting | ||
Method | ||||
type | 実行種別“execute”を指定します。 | execute | ||
name | SyncServiceCallWithRoutingのメソッド名“sendWithDefinitionRouting”を指定します。 | sendWithDefinitionRouting | ||
Parameter | ||||
1 | パラメタとして渡すメッセージを指定します。 | |||
name | “message”を指定します。 | name | ||
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | ||
2 | ルーティング定義名を指定します。 | |||
name | “routing”を指定します。 | routing | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | ルーティング定義名を指定します。 | routingA | ||
3 | 呼出し先サービスからのエラーメッセージをエラーシーケンスに通知するかどうかを指定します。 | |||
name | “use_fault_message”を指定します。 | use_fault_message | ||
valuetype | パラメタに指定する値のタイプを指定します。 | direct | ||
値 | trueまたはfalseを指定します。 | false |
ルーティング定義名で指定するルーティング定義は、送信メッセージルーティング(OUTBOUND)を指定してください。
非同期でサービスを呼び出す場合、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(AsyncServiceCall)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、AsyncServiceCallの呼出し情報(メソッド(send)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント"endpoint01"で定義されているサービス呼出しを行います。
: <StepInformation stepname="AsyncServiceCall1" monitoring="false"> <MediatorFunction name="AsyncServiceCall"> <Method type="execute" name="send"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <Parameter name="endpoint" valuetype="direct">endpoint01</Parameter> </ParameterList> </Method> <Method type="cancel" name="cancel" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | AsyncServiceCall1 | |
MediatorFunction | |||
name | メディエータファンクション名“AsyncServiceCall”を指定します。 | AsyncServiceCall | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | AsyncServiceCallのメソッド名“send”を指定します。 | send | |
Parameter | |||
1 | パラメタとして渡すメッセージを指定します。 | ||
name | “message”を指定します。 | name | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | |
2 | サービスエンドポイント名を指定します。 | ||
name | “endpoint”を指定します。 | name | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct | |
値 | サービスエンドポイント名を指定します。 | endpoint01 | |
Method | |||
type | 実行種別“cancel”を指定します。 | cancel | |
name | AsyncServiceCallのメソッド名“cancel”を指定します。 | cancel |
ルーティング機能を使用して、条件に合った同期サービス呼出しを行うには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(AsyncServiceCallWithRouting)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、AsyncServiceCallWithRoutingの呼出し情報(メソッド(sendWithConditionRouting)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、“$price == 1000”の条件に合えばサービスエンドポイント“endpointA”に転送し、“$company @EQUAL@ "Fujitsu"”の条件に合えばサービスエンドポイント“endpointB”に転送し、その他の場合には、“endpointC”に転送しています。
: <StepInformation stepname="AsyncServiceCallWithRouting1"> <MediatorFunction name="AsyncServiceCallWithRouting"> <Method type="execute" name="sendWithConditionRouting"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <ParameterArray name="condition_list"> <Parameter valuetype="direct">$price == 1000</Parameter> <Parameter valuetype="direct">$company @EQUAL@ "Fujitsu"</Parameter> <Parameter valuetype="direct">*</Parameter> </ParameterArray> <ParameterArray name="endpoint_list"> <Parameter valuetype="direct">endpointA</Parameter> <Parameter valuetype="direct">endpointB</Parameter> <Parameter valuetype="direct">endpointC</Parameter> </ParameterArray> </ParameterList> </Method> <Method type="cancel" name="cancel" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | ||
---|---|---|---|---|
StepInformation | ||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | AsyncServiceCallWithRouting1 | ||
MediatorFunction | ||||
name | メディエータファンクション名“AsyncServiceCallWithRouting”を指定します。 | AsyncServiceCallWithRouting | ||
Method | ||||
type | 実行種別“execute”を指定します。 | execute | ||
name | AsyncServiceCallWithRoutingのメソッド名“sendWithConditionRouting”を指定します。 | sendWithConditionRouting | ||
Parameter | ||||
1 | パラメタとして渡すメッセージを指定します。 | |||
name | “message”を指定します。 | name | ||
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | ||
ParameterArray | ||||
name | “condition_list”を指定します。条件リストの配列です。 | condition_list | ||
1 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $price == 1000 | ||
2 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | $company @EQUAL@ "Fujitsu" | ||
3 | Parameter | |||
条件式を指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | 条件式を指定します。詳細は、“条件式”を参照してください。 | * | ||
ParameterArray | ||||
name | “endpoint_list”を指定します。サービスエンドポイントリストの配列です。 | endpoint_list | ||
1 | Parameter | |||
条件式1のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointA | ||
2 | Parameter | |||
条件式2のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointB | ||
3 | Parameter | |||
条件式3のサービスエンドポイントを指定します。 | ||||
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | ||
値 | サービスエンドポイントを指定します。 | endpointC | ||
Method | ||||
type | 実行種別“cancel”を指定します。 | cancel | ||
name | AsyncServiceCallWithRoutingのメソッド名“cancel”を指定します。 | cancel |
ルーティング機能を使用して、条件に合った非同期サービス呼出しを行うには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(AsyncServiceCallWithRouting)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、AsyncServiceCallWithRoutingの呼出し情報(メソッド(sendWithDefinitionRouting)やパラメタ)を定義します。
パラメタにOUTBOUND用のルーティング定義名を指定します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、OUTBOUND用のルーティング定義“routingA”にメッセージを送信しています。
: <StepInformation stepname="AsyncServiceCallWithRouting1"> <MediatorFunction name="AsyncServiceCallWithRouting"> <Method type="execute" name="sendWithDefinitionRouting"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <Parameter name="routing">routingA</Parameter> </ParameterList> </Method> <Method type="cancel" name="cancel" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | AsyncServiceCallWithRouting1 | |
MediatorFunction | |||
name | メディエータファンクション名“AsyncServiceCallWithRouting”を指定します。 | AsyncServiceCallWithRouting | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | AsyncServiceCallWithRoutingのメソッド名“sendWithDefinitionRouting”を指定します。 | sendWithDefinitionRouting | |
Parameter | |||
1 | パラメタとして渡すメッセージを指定します。 | ||
name | “message”を指定します。 | name | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | |
2 | ルーティング定義名を指定します。 | ||
name | “routing”を指定します。 | routing | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | ルーティング定義名を指定します。 | routingA | |
Method | |||
type | 実行種別“cancel”を指定します。 | cancel | |
name | AsyncServiceCallWithRoutingのメソッド名“cancel”を指定します。 | cancel |
ルーティング定義名で指定するルーティング定義は、送信メッセージルーティング(OUTBOUND)を指定してください。
複数の非同期サービス呼出しを行うには以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(AsyncServiceMulticast)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、AsyncServiceMulticastの呼出し情報(メソッド(multicast)やパラメタ)を定義します。
パラメタに送信先のサービスエンドポイント名を複数指定します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、サービスエンドポイント“endpointA”、“endpointB”、“endpointC”に同報でメッセージを送信しています。
: <StepInformation stepname="AsyncServiceMulticast1"> <MediatorFunction name="AsyncServiceMulticast"> <Method type="execute" name="multicast"> <ParameterList> <Parameter name="message" valuetype="esi.esimessage"></Parameter> <ParameterArray name="endpoint_list"> <Parameter valuetype="direct">endpointA</Parameter> <Parameter valuetype="direct">endpointB</Parameter> <Parameter valuetype="direct">endpointC</Parameter> </ParameterArray> </ParameterList> </Method> <Method type="cancel" name="cancel" /> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |||
---|---|---|---|---|---|
StepInformation | |||||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | AsyncServiceMulticast1 | |||
MediatorFunction | |||||
name | メディエータファンクション名“AsyncServiceMulticast”を指定します。 | AsyncServiceMulticast | |||
Method | |||||
type | 実行種別“execute”を指定します。 | execute | |||
name | SendMessageのメソッド名“multicast”を指定します。 | multicast | |||
Parameter | |||||
1 | パラメタとして渡すメッセージを指定します。 | ||||
name | “message”を指定します。 | name | |||
valuetype | パラメタに指定する値のタイプを指定します。 | esi.esimessage(固定値) | |||
ParameterArray | |||||
name | “endpoint_list”を指定します。サービスエンドポイントリストの配列です。 | endpoint_list | |||
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 |