5.6.2 商品手配システム(フォルトハンドリング編)の実行
商品手配システム(フォルトハンドリング編)を実行する方法について説明します。
- 〈この項の構成〉
(1) 実行方法
サービスリクエスタからHTTPリクエストを送信します。
(a) HTTPリクエストの内容
HTTPリクエストの内容を次に示します。
|
項目 |
内容 |
|---|---|
|
HTTPメソッド |
POST |
|
データ形式 |
JSON |
|
URL※1 |
http://localhost:80/rcp2/arrangeItem |
|
入力インタフェース※2 |
"{\"itemName\":\"$itemName\", \"quantity\":$quantity}" |
- 注※1
-
HTTP受付でのURLの指定方法の詳細については,マニュアル「サービスプラットフォーム 解説」の「2.15.4 HTTP受付のリクエスト処理」を参照してください。
- 注※2
-
$itemNameで入力できる商品は,次の4パターンだけです。これ以外を入力すると,入力値検証例外が発生します。
-
PC
-
TV
-
Camera
-
Smartphone
$quantityには1〜10の整数だけ入力できます。1〜10の整数以外を入力すると,入力値検証例外が発生します。在庫数は各商品10個ずつです。在庫がない場合,在庫なしレスポンスを返却します。
-
(b) コマンド実行例
ここでは,サービスリクエスタにはcurlコマンドを使用します。コマンドプロンプトを起動し,次のコマンドを入力して実行してください。
curl http://localhost:80/rcp2/arrangeItem -X POST -H "Content-Type: application/json" -d "{\"itemName\":\"PC\", \"quantity\":1}"(2) 実行結果の確認
コマンドの実行後,実行結果を示す値が返されます。また,実行結果を表すメッセージと処理内容が表示されます。
表示される内容を次に説明します。
(a) 正常に応答した場合(手配が完了した場合)
在庫ありレスポンスとして,手配が完了したことを知らせるメッセージ,商品名,個数,および配送番号が表示されます。
-
出力例
{"deliveryNumber": "D00000001", "itemName": "PC", "message": "Product is available for arrangement.", "quantity":"1"}
(b) 正常に応答した場合(在庫がない場合)
在庫なしレスポンスとして,在庫がないことを知らせるメッセージ,商品名,および個数が表示されます。
-
出力例
{"deliveryNumber":"","itemName":"PC","message":"No stock is available.","quantity":"1"}
(c) ビジネスプロセス(フォルトハンドリング編)の実行時に例外が発生した場合
ビジネスプロセス(フォルトハンドリング編)の実行時に例外が発生した場合,例外が発生したアクティビティ名および例外メッセージが表示されます。発生する例外の種類を次に示します。
-
入力値検証例外
-
在庫引当例外
-
配送手配例外
これらの例外を発生させる例を次に示します。
-
入力値検証例外
例外を発生させるための条件を次に示します。
-
$itemNameに値が入力されていない
-
$itemNameの入力値が商品リストに存在しない
-
$quantityに値が入力されていない
-
$quantityが整数ではない
-
$quantityが1〜10以外の整数である
例外を発生させる例として,$quantityに整数以外を入力した場合を次に示します。
次のcurlコマンドをコマンドプロンプトで実行します。
curl http://localhost:80/rcp2/arrangeItem -X POST -H "Content-Type: application/json" -d "{\"itemName\":\"PC\", \"quantity\":\"a\"}"出力値を次に示します。
{"exception-activity": "入力値検証", "exception-message": "quantityを整数で入力してください"} -
-
在庫引当例外
例外を発生させる例として,在庫管理サービスを停止させた状態で,ProductStock_FaultHandlingビジネスプロセス(フォルトハンドリング編)を実行した場合を次に示します。
まず,在庫管理サービスを停止させます。停止方法については「5.3.3(1) サービスのリデプロイ」の在庫管理サービスの停止方法を参照してください。
その後,次のcurlコマンドをコマンドプロンプトで実行します。
curl http://localhost:80/rcp2/arrangeItem -X POST -H "Content-Type: application/json" -d "{\"itemName\":\"PC\", \"quantity\":1}"出力値を次に示します。
{"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"} -
配送手配例外
例外を発生させる例として,配送受付サービスを停止させた状態で,ProductStock_FaultHandlingビジネスプロセス(フォルトハンドリング編)を実行した場合を次に示します。
まず,配送受付サービスを停止させます。停止方法については「5.3.3(1) サービスのリデプロイ」の配送受付サービスの停止方法を参照してください。
その後,次のcurlコマンドをコマンドプロンプトで実行します。
curl http://localhost:80/rcp2/arrangeItem -X POST -H "Content-Type: application/json" -d "{\"itemName\":\"PC\", \"quantity\":1}"出力値を次に示します。
{"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"}