5.5.2 例外ハンドリングの仕様
商品手配システム(フォルトハンドリング編)では,次の3つの例外をハンドリングします。
-
サービスリクエスタからのJSON電文の内容が不正である例外(入力値検証例外)
-
InventoryManagementアダプタと在庫管理サービスの間の通信が失敗した例外(在庫引当例外)
-
DeliveryReceiptアダプタと配送受付サービスの間の通信が失敗した例外(配送手配例外)
それぞれの例外について次に示します。
- 〈この項の構成〉
(1) サービスリクエスタからのJSON電文の内容が不正である例外(入力値検証例外)
サービスリクエスタからのJSON電文の内容を検証します。内容が不正な場合,その原因と対処方法を含んだメッセージを作成し,サービスリクエスタに返却します。
検証する内容を次に示します。
|
項目 |
検証内容 |
|---|---|
|
itemName(商品名) |
値が代入されているか 入力された商品名は商品リスト※に存在するか |
|
quantity(個数) |
値が代入されているか 1〜10の範囲内の整数か |
- 注※
-
商品リストに含まれる商品は次の4つです。
・PC
・TV
・Camera
・Smartphone
JSON電文の内容が不正の場合,サービスリクエスタには次のレスポンスを返却します。
-
レスポンス(ボディ)
次に示す形式のレスポンス(ボディ)を返却します。
名
変数名
型
例外が発生したアクティビティ名
exception-activity
string
例外メッセージ
exception-message
string
レスポンス(ボディ)の出力例を次に示します。
{"exception-activity": "入力値検証", "exception-message": "quantityを整数で入力してください"} -
レスポンス(ヘッダ)
ステータスコード400(クライアントエラー)を返却します。
(2) InventoryManagementアダプタと在庫管理サービスの間の通信が失敗した例外(在庫引当例外)
InventoryManagementアダプタと在庫管理サービスの間の通信が失敗した場合,例外情報を含んだメッセージを作成し,サービスリクエスタに返却します。
返却するレスポンスの形式を次に示します。
-
レスポンス(ボディ)
次に示す形式のレスポンス(ボディ)を返却します。
名
変数名
型
例外が発生したアクティビティ名
exception-activity
string
例外メッセージ
exception-message
string
レスポンス(ボディ)の出力例を次に示します。
{"exception-activity":"在庫引当","exception-message":"jp.co.Hitachi.soft.csc.msg.adapter.protocol.CSCMsgCustomAccessException: A service call was interrupted because a custom service access error was detected. (adapter name = InvAdp, HCSCCommonID = CSC_HCSC_2024-06-25_17:27:38.029_6, ServiceRequestID = MSG_HCSC_SyncBP_2024-06-25_17:27:38.045_14, error message = An HTTP adapter error occurred. (adapter name = InvAdp, operation name = reserveItem, exception information = jp.co.Hitachi.soft.csc.cstmadp.http.rt.exception.CSAHTAException: KDEC81054-E An error status code was received from the service. (adapter name = InvAdp, operation name = reserveItem, status code = 404)), code = KDEC81499-E) ErrorCode=KDEC03005-E"} -
レスポンス(ヘッダ)
ステータスコード500(サーバエラー)を返却します。
(3) DeliveryReceiptアダプタと配送受付サービスの間の通信が失敗した例外(配送手配例外)
DeliveryReceiptアダプタと配送受付サービスの間の通信が失敗した場合,例外情報を含んだメッセージを作成し,サービスリクエスタに返却します。
返却するレスポンスの形式を次に示します。
-
レスポンス(ボディ)
次に示す形式のレスポンス(ボディ)を返却します。
名
変数名
型
例外が発生したアクティビティ名
exception-activity
string
例外メッセージ
exception-message
string
レスポンス(ボディ)の出力例を次に示します。
{"exception-activity":"配送手配","exception-message":"jp.co.Hitachi.soft.csc.msg.adapter.protocol.CSCMsgCustomAccessException: A service call was interrupted because a custom service access error was detected. (adapter name = DelAdp, HCSCCommonID = CSC_HCSC_2024-06-25_17:33:39.366_8, ServiceRequestID = MSG_HCSC_SyncBP_2024-06-25_17:33:39.625_18, error message = An HTTP adapter error occurred. (adapter name = DelAdp, operation name = deliverItem, exception information = jp.co.Hitachi.soft.csc.cstmadp.http.rt.exception.CSAHTAException: KDEC81054-E An error status code was received from the service. (adapter name = DelAdp, operation name = deliverItem, status code = 404)), code = KDEC81499-E) ErrorCode=KDEC03005-E"} -
レスポンス(ヘッダ)
ステータスコード500(サーバエラー)を返却します。