価格設定アルゴリズムのテストおよびトラブルシューティング
価格設定アルゴリズムの設定をテストします。 動作しない場合は、トラブルシューティングを行います。
設定のテスト
問題が見つかった場合、または公開前に設定をテストする場合、価格設定アルゴリズムの設定をテストする方法を次に示します。
-
価格設定アルゴリズムを編集のために開きます。
-
「テスト」をクリックし、「処理」→「行の追加」をクリックします。
-
テスト入力領域で、テストへの入力を指定します。
ノート
-
事前定義済の設定を確認します。 一部のアルゴリズムには、テストがすでに設定されている状態で事前定義されています。 たとえば、価格販売トランザクション・アルゴリズムには、テスト用にすでに設定されているPriceRequest変数が事前定義されています。
必要に応じて、変更を反映するように変数値を変更します。
-
設定中に新しい変数を作成した場合、または事前定義済の変数のパフォーマンスをテストする必要がある場合は、ここで追加します。
-
タイプが入力の変数を追加するか、入力および出力を入力します。
たとえば、ブール変数GetAllUserDefinedAttributeFlagsを追加します。
-
-
変数値列に、いずれかを追加します。
-
Groovy式。
-
リテラル文字列。
-
XML形式のコード。
-
ブール・データ型のマークをチェックします。
-
-
「テストの実行」をクリックし、出力を確認します。
ノート
-
今後の参照およびトラッキングのために、必要に応じてテスト・ケース名と説明を変更します。
-
テストが失敗した場合は、「例外詳細の表示」をクリックして設定のトラブルシューティングを行います。
-
価格設定では、バージョン2以上のアルゴリズムのアップグレード全体でテスト・ケースが保存されます。
-
アルゴリズムをテストするいくつかの例を調べます。 詳細は、「価格設定ユースケースの概要」を参照してください。
設定のトラブルシューティング
-
「例外詳細の表示」をクリックします。
表示されるダイアログは次のとおりです。
-
エラー・メッセージを確認します。 これには、問題の原因となる正確なGroovyコード(
Charge1
など)が含まれています。 通常は詳細の2行目です。 たとえば:Alias 'Charge1' cannot be found on this Row
-
エラーが発生した場所を特定します。 通常は、テキスト・アルゴリズム・コール・スタックのすぐ下にあります。
コール・スタックには、問題の原因となるGroovyコードを含む文、ステップおよびアルゴリズムが含まれます。 たとえば:
createChargeComponent(Charge1, ChargeComponent, 'LIST_PRICE', 'QP_LIST_PRICE') at Step 'Get List Price'at Algorithm: 'Simple Pricing Process Custom-1'
この例では、Simple Pricing Process Custom-1アルゴリズムの定価の取得ステップのcreateChargeComponent文でコードが行われます。
-
「アルゴリズム変数スタック」セクションの変数値を確認します。 このセクションには、エラーが発生する直前に存在する変数値が含まれています。
-
データ型を検証します。 たとえば、InventoryOrganizationIdは数値です。 これには、コンピュータ・サービスやレンタルなどのテキスト・データではなく、204などの数値データを含める必要があります。
-
データ値を確認します。 たとえば、unitCodeはEaと等しくなりますが、Boxが含まれている場合、これは適切ではありません。
-
-
エラーの原因となる可能性のある変更を確認します。
-
アルゴリズムまたはアルゴリズム・ステップに対する最近の変更を確認します。 「アルゴリズムの呼び出しスタック」セクションの詳細を使用して、最初にどこを表示するかを決定します。
-
サービス・マッピングに加えた変更を確認します。 変更すると、アルゴリズムでエラーが発生する可能性があります。 たとえば、ソースと属性を正しく設定していることを確認します。
-
コードで入力ミスがないか調べます。
-
すべての変数を宣言していることを確認してください。
-
アルゴリズムで使用するすべての属性を定義したことを確認してください。
-
この例の完全なテスト例外の詳細を次に示します。
JBO-29000: Unexpected exception caught: oracle.apps.scm.pricing.priceExecution.algorithms.publicQuery.exception.SetQueryException, msg=Failed to execute onEach Closure.
Alias 'Charge1' cannot be found on this Row
# Algorithm Call Stack -----------------------
createChargeComponent(Charge1, ChargeComponent, 'LIST_PRICE', 'QP_LIST_PRICE') at Step 'Get List Price'at Algorithm: 'Simple Pricing Process Custom-1'
# Algorithm Variable Stack---------------------------
Algorithm: 'Simple Pricing Process Custom-1' payload: VariableName:'PriceRequest' DateType:'commonj.sdo.DataObject' IOType:'InOut' value:'<?xml version="1.0" encoding="UTF-8"?>
<SimplePriceRequest:SimplePriceRequestType xmlns:SimplePriceRequest="http://xmlns.oracle.com/apps/scm/pricing/priceExecution/serviceMappings/publicMappings/SimplePriceRequestType" xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="SimplePriceRequest:SimplePriceRequestType">
<SimplePriceRequest:PricingServiceParameter>
<SimplePriceRequest:PricingContext>SALES</SimplePriceRequest:PricingContext>
</SimplePriceRequest:PricingServiceParameter>
<SimplePriceRequest:Header>
<SimplePriceRequest:CalculatePricingChargesFlag>true</SimplePriceRequest:CalculatePricingChargesFlag>
<SimplePriceRequest:CalculateShippingChargesFlag>false</SimplePriceRequest:CalculateShippingChargesFlag>
<SimplePriceRequest:CalculateTaxFlag>false</SimplePriceRequest:CalculateTaxFlag>
<SimplePriceRequest:CustomerId>1000</SimplePriceRequest:CustomerId>
<SimplePriceRequest:HeaderId>1</SimplePriceRequest:HeaderId>
<SimplePriceRequest:SellingBusinessUnitId>204</SimplePriceRequest:SellingBusinessUnitId>
<SimplePriceRequest:SellingLegalEntityId>204</SimplePriceRequest:SellingLegalEntityId>
<SimplePriceRequest:TransactionTypeCode>ORA_SALES_ORDER</SimplePriceRequest:TransactionTypeCode>
</SimplePriceRequest:Header>
<SimplePriceRequest:Line>
<SimplePriceRequest:HeaderId>1</SimplePriceRequest:HeaderId>
<SimplePriceRequest:InventoryItemId>101</SimplePriceRequest:InventoryItemId>
<SimplePriceRequest:InventoryOrganizationId>204</SimplePriceRequest:InventoryOrganizationId>
<SimplePriceRequest:LineCategoryCode>ORDER</SimplePriceRequest:LineCategoryCode>
<SimplePriceRequest:LineId>1</SimplePriceRequest:LineId>
<SimplePriceRequest:LineQuantity unitCode="Ea" xmlns:tns="http://xmlns.oracle.com/adf/svc/errors/">2</SimplePriceRequest:LineQuantity>
<SimplePriceRequest:Line>