機械翻訳について

拡張ルールの作成

Groovyを使用して拡張をコーディングし、Groovyメソッドをイベントにバインドし、メソッドの引数をソースにバインドしてから、作業をテストします。

設定のサマリー

  1. モデルと補足機能を作成します。
  2. 拡張ルールを作成します。
  3. groovyメソッドをイベントにバインドします。
  4. メソッドの引数をソースにバインドします。
  5. モデルをテストします。

zCZ_CAR4DRSDNという名前のモデルを作成し、定価に20,000から60,000の値を指定できるようにしてから、0%から10%の割引を適用する必要があるとします。

この項ではサンプル値を使用しています。 ユーザーは、ビジネス要件に応じて別の値を使用できます。

モデルおよび補助機能の作成

  1. 「コンフィギュレータ・モデル」作業領域に移動します。
  2. 新しいワークスペースを作成し、「有効開始日」を明日に設定します。 詳細は、「ワークスペースの管理」を参照してください。
  3. 「ワークスペースの管理」ページの検索結果で、新しい「ワークスペース」をクリックします。
  4. 「ワークスペース」ページで、「処理」→「選択して追加」→「モデル」の順にクリックします。
  5. 表示されるダイアログで、モデルを検索して選択し、OKをクリックします。

    属性
    モデル zCZ_CAR4DRSDN
  6. 「ワークスペースの参加者」領域で、zCZ_CAR4DRSDNをクリックします。
  7. 「コンフィギュレータ・モデルの編集」ページで、zCZ_CAR4DRSDNモデルの「ルート・ノード」を選択し、「処理」>「作成」>「小数機能」をクリックします。
  8. 表示されるダイアログで、値を設定します。

    属性
    名前 定価
    最小 20,000
    最大 60,000
    ドメイン順序 システム・デフォルト
  9. 「適用して別の作成」をクリックし、値を設定します。

    属性
    名前 割引
    最小 0
    最大 10
    ドメイン順序 システム・デフォルト
  10. 「適用して別の作成」をクリックし、値を設定します。

    属性
    名前 販売価格
    最小 0
    最大 100,000
    ドメイン順序 システム・デフォルト
  11. OKをクリックし、「保存」をクリックします。

拡張ルールの作成

定価に割引を適用するルールを作成し、その結果を販売価格にします。

  1. 「コンフィギュレータ・モデルの編集」ページで、「ルール」をクリックします。
  2. 「処理」>「作成」>「拡張ルール」をクリックします。
  3. 表示されるダイアログで、「名前」属性を「割引の適用」に設定し、OKをクリックします。
  4. 構造領域で、「ツリー」を展開します。
  5. 割引「ノード」を右クリックし、「基本ノードとして設定」をクリックします。
  6. 「ルール・テキスト」領域で、次のGroovyスクリプトを入力します:
    // Import objects from the configurator model.
    import oracle.apps.scm.configurator.runtime.core.IConfiguration
    import oracle.apps.scm.configurator.runtime.core.IBomModelInstance
    import oracle.apps.scm.configurator.runtime.core.IDecimalFeature
    
    // Define the method that will apply the discount.
    def applyDiscount ( p_listPrice, p_discount ) {
    
    // Use arguments to get values from the nodes.
     double listPrice = ((IDecimalFeature)p_listPrice).getValue()
     double discount = ((IDecimalFeature)p_discount).getValue()
     double salePrice = 0
    
    // Calculate the price.
     salePrice = listPrice - ( listPrice * ( discount / 100 ) )
    
    // Get the node where you will set the value.
     IConfiguration config = cxEvent.getConfiguration()
     IBomModelInstance root = config.getRootBomModel()
     IDecimalFeature salePriceNode = root.getChildByName("Sale Price")
    
    // Set the value.
     ((IDecimalFeature)salePriceNode).setDecimalValue(salePrice)
    }
    
  7. 「保存」をクリックし、「検証」をクリックします。

イベントへのメソッドのバインド

  1. 「イベント・バインディング」領域で、「作成」をクリックし、値を設定します。

    属性
    イベント postValueChange
    イベント・スコープ 基本ノード
    Class ScriptClass
    メソッド

    applyDiscount

    Method属性には、applyDiscountの引数(p_listPricep_discountなど)も表示されることに注意してください。

  2. 「保存」をクリックします。

メソッドの引数のソースへのバインド

  1. 「引数バインディング」領域で、この値を持つ「行」をクリックします。

    名前 仕様
    p_listPrice モデル・ノード
  2. 「構造」領域で、「定価」「ノード」を右クリックし、「引数値として設定」をクリックします。
  3. 「引数バインディング」領域で、行にこの値があることを確認します。

    名前 仕様
    p_listPrice モデル・ノード 'zCZ_CAR4DRSDN'.'List Price'
  4. 「引数バインディング」領域で、この値を持つ「行」をクリックします。

    名前 仕様
    p_discount モデル・ノード
  5. 「構造」領域で、「割引」「ノード」を右クリックし、「引数値として設定」をクリックします。
  6. 「引数バインディング」領域で、行にこの値があることを確認します。

    名前 仕様
    p_discount モデル・ノード 'zCZ_CAR4DRSDN'.'Discount'
  7. 「保存」をクリックし、「検証」をクリックしてから、「保存してコンパイル」をクリックします。

モデルのテスト

  1. 「テスト・モデル」をクリックします。
  2. 表示されたダイアログで値を設定し、OKをクリックします。
    属性
    ユーザー・インタフェース デフォルト
    ルート数量 1
  3. 「テスト」の「モデル」ページで、新しい10進数機能がページに表示され、モデルに追加したときと同じ順序で表示されることを確認します:
    • 定価
    • 割引
    • 販売価格
  4. 「定価」属性に、30,000と入力します。
  5. 20,000から60,000までの値のみを入力できることを確認します。 これらは、定価小数機能の作成時に指定した最小値と最大値です。
  6. 「販売価格」属性が空であることを確認します。
  7. 「Discount」属性に、10と入力します。
  8. 0から10までの値のみを入力できることを確認します。 これらは、小数の割引機能の作成時に指定した最小値と最大値です。
  9. 「割引」属性で「入力」をクリックし、Oracle Configuratorによって「販売価格」属性の値が空から27,000に更新されることを確認します。

    割引は10%、定価は30,000です。30,000の10%は3,000に、30,000から3,000は27,000に等しくなります。

  10. 「割引」属性に20と入力し、「販売価格」属性に24,000が含まれるようになったことを確認します。

    この変更は、割引属性の値を変更したときに発生するイベントに拡張ルールをバインドしたため、コンフィギュレータによって適用されます。

  11. 「定価」属性に20,000と入力します。

    コンフィギュレータが販売価格を更新しないことに注意してください。 これは、定価の値を変更したときに発生するイベントにルールをバインドしなかったためです。

    実際の実装では、ルールを定価にバインドすることもできます。 ここでは、ロジックがどのように機能するかを説明しません。 知識をテストするために、そのバインドを設定し、それが機能するかどうかを確認できます。

  12. 「終了」をクリックします。