Webサービスの問題のトラブルシューティング
webサービスに関連するオーダー管理の実装で発生する問題を修正します。
一致する行がありません
一致する行がありません
webサービスを使用して販売オーダーをインポートするとします。 ペイロードには次のものが含まれます:
<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber>
<ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>
次のエラーが発生します:
An order was not created because no matching row for attribute ProductNumber with the value BIGSTORE1111 was found for the source order with the following details: source order BIGSTORE0007, source order line 2, source order schedule 2. Check the attribute value, and resubmit the order.
通常、Oracleデータベースにはインポートに含まれている値と同じ値が含まれていないため、一致する行なしエラーが発生します。 この例では、在庫品目のインポートがOracleデータベースで定義されていないか、webサービス・ペイロードで指定されている在庫組織に関連付けられていません。
SQLを使用して、Oracleデータベースを問い合せます。
SELECT HOU.ORGANIZATION_ID,
HOUTL.NAME,
HOUCL.CLASSIFICATION_CODE
FROM HR_ALL_ORGANIZATION_UNITS_F HOU,
HR_ORGANIZATION_UNITS_F_TL HOUTL,
HR_ORG_UNIT_CLASSIFICATIONS_F HOUCL
WHERE
HOU.ORGANIZATION_ID=HOUTL.ORGANIZATION_ID AND
HOU.ORGANIZATION_ID =HOUCL.ORGANIZATION_ID AND
HOUCL.CLASSIFICATION_CODE = 'INV'
ORDER BY
HOUTL.NAME;
問合せによって次のものが返されます:
ORGANIZATION_ID |
NAME |
CLASSIFICATION_CODE |
---|---|---|
300000001286109 |
BIGSTORE品目組織 |
INV |
300000001286592 |
BIGSTORE_CN_DC1 |
INV |
300000001286615 |
BIGSTORE_SG_DC1 |
INV |
300000001286262 |
BIGSTORE_US_MFG1 |
INV |
300000001286412 |
BSマスター在庫組織 |
INV |
300000001286439 |
BS小売在庫組織 |
INV |
別の問合せを実行して、在庫組織に関連付けられた在庫品目を取得します。
SELECT
ItemPEO.INVENTORY_ITEM_ID,
ItemPEO.ORGANIZATION_ID,
HOUTL.NAME,
ItemPEO.ITEM_NUMBER,
ItemPEO.INVENTORY_ITEM_STATUS_CODE
FROM EGP_SYSTEM_ITEMS_B ItemPEO,
HR_ORGANIZATION_UNITS_F_TL HOUTL
where
HOUTL.ORGANIZATION_ID = ItemPEO.ORGANIZATION_ID and
ItemPEO.ITEM_NUMBER = 'BIGSTORE1111';
問合せによって次のものが返されます:
INVENTORY_ITEM_ID |
ORGANIZATION_ID |
NAME |
ITEM_NUMBER |
INVENTORY_ITEM_STATUS_CODE |
---|---|---|---|---|
300000001292032 |
300000001286109 |
BIGSTORE品目組織 |
BIGSTORE1111 |
アクティブ |
ペイロードはInventoryOrganizationIdentifier>300000001384059<
を送信しましたが、OracleデータベースにはORGANIZATION_IDの300000001286109が含まれています。
送信する正しい値を次に示します。
<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber>
<ns2:InventoryOrganizationIdentifier>300000001286109</ns2:InventoryOrganizationIdentifier>
ソース・オーダーをインポートしようとしています。 インポート・ペイロードには次のものが含まれます:
<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>
ただし、インポート中に次のエラーが発生します:
An order was not created because no matching row for attribute ProductNumber with the value BIGSTORE1111 was found for the source order with the following details: source order BIGSTORE0007, source order line 2, source order schedule 2. Check the attribute value, and resubmit the order.
この問題は、インポート・ペイロードの在庫組織がOracleデータベースで定義されていないため発生します。
この問題を解決するには、まずOracleデータベースに現在含まれている在庫組織のリストを取得します。 このSQLを実行します。
SELECT HOU.ORGANIZATION_ID,
HOUTL.NAME,
HOUCL.CLASSIFICATION_CODE
FROM HR_ALL_ORGANIZATION_UNITS_F HOU,
HR_ORGANIZATION_UNITS_F_TL HOUTL,
HR_ORG_UNIT_CLASSIFICATIONS_F HOUCL
WHERE
HOU.ORGANIZATION_ID=HOUTL.ORGANIZATION_ID AND
HOU.ORGANIZATION_ID =HOUCL.ORGANIZATION_ID AND
HOUCL.CLASSIFICATION_CODE = 'INV'
ORDER BY
HOUTL.NAME;
問合せが次のものを返すとします:
ORGANIZATION_ID |
NAME |
CLASSIFICATION_CODE |
---|---|---|
300000001286109 |
BIGSTORE品目組織 |
INV |
300000001286592 |
BIGSTORE_CN_DC1 |
INV |
300000001286615 |
BIGSTORE_SG_DC1 |
INV |
300000001286262 |
BIGSTORE_US_MFG1 |
INV |
300000001286412 |
BSマスター在庫組織 |
INV |
300000001286439 |
BS小売在庫組織 |
INV |
次に、インポート・ペイロードで指定されたインベントリ組織であるBIGSTORE1111の詳細を取得します。
SELECT
ItemPEO.INVENTORY_ITEM_ID,
ItemPEO.ORGANIZATION_ID,
HOUTL.NAME,
ItemPEO.ITEM_NUMBER,
ItemPEO.INVENTORY_ITEM_STATUS_CODE
FROM EGP_SYSTEM_ITEMS_B ItemPEO,
HR_ORGANIZATION_UNITS_F_TL HOUTL
where
HOUTL.ORGANIZATION_ID = ItemPEO.ORGANIZATION_ID and
ItemPEO.ITEM_NUMBER = 'BIGSTORE1111';
問合せが次のものを返すとします:
INVENTORY_ITEM_ID |
ORGANIZATION_ID |
NAME |
ITEM_NUMBER |
INVENTORY_ITEM_STATUS_CODE |
---|---|---|---|---|
300000001292032 |
300000001286109 |
BIGSTORE品目組織 |
BIGSTORE1111 |
アクティブ |
次に、インポート・ペイロードを修正します。 この現在の値を変更します:
<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>
問合せが列ORGANIZATION_IDで返した値:
<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001286109</ns2:InventoryOrganizationIdentifier>
属性値
エンタープライズ・ビジネス・メッセージProcessSalesOrderFulfillmentEBMを使用して販売オーダーを作成し、このエラーが発生するとします。
Error Message: {http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/transformSalesOrder/DooDecompTransformSalesOrderComposite}ProcessSalesOrderFulfillmentResponseEBM
Fault ID default/DooDecompTransformSalesOrderComposite!11.1.5.0.0*soa_7289e448-8b78-408f-af5c-116da7e1d9d2/DecompositionProcess/70017-BpThw8-BpSeq55.49-2
Fault Time Sep 16, 2013 11:24:34 AM
Non Recoverable Business Fault :1 env:Server Attribute ORG_ID has invalid value 300000000562209 for service ProcessOrderValidation.
このエラーは、ペイロードで属性ORG_IDの値300000000562209が指定されていますが、オーダー管理データベースにはこの値が含まれていないために発生します。 ペイロードでは、属性BusinessUnitReferenceおよび属性BusinessUnitIdentificationも正しく指定されていません。
この問題を解決するには、データベースを問い合せます。
SELECT
FABUV.BU_ID,
FABUV.BU_NAME,
FABUV.DEFAULT_SET_ID,
IOP.ORGANIZATION_ID,
IOP.ORGANIZATION_CODE,
HAOU.NAME
FROM
INV_ORG_PARAMETERS IOP,
HR_ALL_ORGANIZATION_UNITS HAOU,
FUSION.FUN_ALL_BUSINESS_UNITS_V FABUV
WHERE
HAOU.ORGANIZATION_ID = IOP.ORGANIZATION_ID AND
IOP.BUSINESS_unit_id = FABUV.BU_ID
ORDER BY
IOP.ORGANIZATION_CODE,
FABUV.BU_ID;
問合せが次のものを返すとします:
BU_ID |
BU_NAME |
DEFAULT_SET_ID |
ORGANIZATION_ID |
ORGANIZATION_CODE |
NAME |
---|---|---|---|---|---|
300000001110916 |
USA1ビジネス・ユニット |
300000001111782 |
300000001201056 |
001 |
シアトル倉庫 |
300000001110916 |
USA1ビジネス・ユニット |
300000001111782 |
300000003887955 |
999 |
外部品目組織 |
300000001130053 |
USA2ビジネス・ユニット |
300000001111783 |
300000001201066 |
002 |
アトランタ倉庫 |
300000001130053 |
USA2ビジネス・ユニット |
300000001111783 |
300000001130184 |
003 |
シカゴ物流センター |
300000001341196 |
中国ビジネス・ユニット |
300000001341955 |
300000004396135 |
050 |
上海物流センター |
300000001341196 |
中国ビジネス・ユニット |
300000001341955 |
300000004396139 |
051 |
深セン倉庫 |
シカゴ物流センター(USA2ビジネス・ユニット)の販売オーダーを作成し、このビジネス・ユニットの属性BU_IDに300000001130053が含まれているとします。 問題を解決するには、これらの属性を定義する必要があります。 このコードをペイロードに追加します。
<corecom:BusinessUnitReference>
<corecom:BusinessUnitIdentification>
<!-- BUSINESS UNIT ID-->
<corecom:AlternateObjectKey>
<corecom:ID>300000001130053</corecom:ID>
</corecom:AlternateObjectKey>
</corecom:BusinessUnitIdentification>
</corecom:BusinessUnitReference>
パフォーマンスの問題
OrderFulfillmentResponseServiceを使用してIntegration Cloud Serviceとの統合を設定し、履行明細のステータスを更新できるようにします。 処理する販売オーダーが大量になるまで正常に機能します。 更新するオーダー明細が数千件ある場合は、更新が約10分から15分で完了すると予想されますが、実際には2時間以上かかります。
統合では、コネクタの起動モード属性を非同期サービスまたは同期に設定するかどうかに関係なく、リクエストをパラレルで処理します。 たとえば、1,000個のリクエストがある場合、統合によってすべて同時に処理されます。 キューに入れられることはありません。 また、serviceOrderFulfillmentResponseServiceはボリュームを制限しません。 たとえば、1分以内に送信できるwebサービス呼び出しの数に制限はありません。
この問題は、通常、ホストIntegration Cloud Serviceに使用するサーバーが大量のトランザクションを処理するように最適化されていないために発生します。 この問題を修正するには、Integration Cloud Serviceをホストするサーバーを管理するユーザーと作業し、サーバーによって同時に処理できるスレッド数の追加など、より多くのトランザクションを処理するようにサーバーを最適化できるかどうかを確認します。
その他の奇妙な事柄
ペイロードをwebサービスReceiveOrderRequestに送信して、販売オーダーの作成をリクエストします。
<ns1:OrchestrationOrderRequest xmlns:ns2="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">
<ns2:SourceTransactionIdentifier>PMC-070716-013</ns2:SourceTransactionIdentifier>
<ns2:SourceTransactionNumber>PMC-070716-013</ns2:SourceTransactionNumber>
<ns2:BuyingPartyName>JAH CUSTOMER SHARED</ns2:BuyingPartyName>
<ns2:BuyingPartyContactName>Peter Pan</ns2:BuyingPartyContactName>
<ns2:TransactionalCurrencyCode>USD</ns2:TransactionalCurrencyCode>
<ns2:TransactionOn>2016-07-06T02:12:01</ns2:TransactionOn>
<ns2:RequestingBusinessUnitIdentifier>US_W_888_BU</ns2:RequestingBusinessUnitIdentifier>
<ns2:PartialShipAllowedFlag>false</ns2:PartialShipAllowedFlag>
<ns2:OrchestrationOrderRequestLine>
リクエストは正常に実行されているようですが、オーダー管理作業領域に販売オーダーが表示されません。 Oracle Enterprise Managerでフロー・トレースを実行すると、次が表示されます:
<bpelFault><faultType>0</faultType><selectionFailure xmlns="http://docs.xyz.org/wsbpel/2.0/process/executable"></selectionFailure></bpelFault>
また、次も表示されます:
Exception is thrown because the from-spec at line 1,616 is evaluated to be empty
また、次も表示されます:
AssignEILAMServiceInput (faulted)
<details>
<from-spec>
<from>$inputVariable.payload/client:OrchestrationOrderRequest/ns4:SourceTransactionSystem</from>
</from-spec>
<variable>
<message>inputVariable</message>
</variable>
<fault>
<bpelFault>
<faultType>0</faultType>
<selectionFailure/>
</bpelFault>
</fault>
</details>
たとえば:
リクエスト・ペイロードでソース・システムが指定されていないため、問題が発生します。 修正するには、ペイロードに属性SourceTransactionSystemを追加します。
<ns2:SourceTransactionSystem>ORA_BM_CPQ</ns2:SourceTransactionSystem>
たとえば:
<ns1:OrchestrationOrderRequest xmlns:ns2="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">
<ns2:SourceTransactionIdentifier>PMC-070716-013</ns2:SourceTransactionIdentifier>
<ns2:SourceTransactionNumber>PMC-070716-013</ns2:SourceTransactionNumber>
<ns2:SourceTransactionSystem>ORA_BM_CPQ</ns2:SourceTransactionSystem>
<ns2:BuyingPartyName>GED CUSTOMER SHARED</ns2:BuyingPartyName>
<ns2:BuyingPartyContactName>Peter Pan</ns2:BuyingPartyContactName>
<ns2:TransactionalCurrencyCode>USD</ns2:TransactionalCurrencyCode>
<ns2:TransactionOn>2016-07-06T02:12:01</ns2:TransactionOn>
<ns2:RequestingBusinessUnitIdentifier>US_WT_DG09_BU</ns2:RequestingBusinessUnitIdentifier>
<ns2:PartialShipAllowedFlag>false</ns2:PartialShipAllowedFlag>
<ns2:OrchestrationOrderRequestLine>
フロー・トレースを使用する例を表示します。 詳細は、「オーダー管理から履行システムへのリクエストのルーティング」を参照してください。
Oracle Enterprise Managerの詳細は、https://www.oracle.com/technetwork/oem/enterprise-manager/overview/index.htmlを参照してください。
ソース・オーダーをインポートするには、オーダー・インポートwebサービスおよびオーダーの受入サービスを使用します。 インポートの結果としてオーダー管理が適用される保留のヘッダー詳細およびオーダー明細詳細が必要です。 オーダー管理が保留を適用するかどうか、適用されていない場合は適用しない理由を知る必要があります。
オーダー・インポートからのレスポンスは、非同期操作ごとのコールバックで詳細を提供します。 レスポンスの要素を確認します。
ord:ReturnStatus?</ord:ReturnStatus>
<!--Optional:-->
ord:MessageName?</ord:MessageName>
<!--Optional:-->
ord:MessageText?</ord:MessageText>
これらの要素は、サービスによって販売オーダーが正常に処理されたか、正常に処理されなかった場合はエラーおよびエラー・テキストを示します。
RequestHold操作および一時停止タスクのリリース操作は非同期です。 コールバックからレスポンスを受信するには、コールバックを実装する必要があります。