計算属性値の保持

属性値の計算には最初はSQLを使用するのが最も効率的ですが、値を動的に変更する可能性のある計算属性はJavaで保持する必要があります。

注意: この手順では、「エンティティ・オブジェクト・レベルでの計算属性の作成」または「ビュー・オブジェクト・レベルでの計算属性の作成」の全ステップが終了していると想定しています。

計算属性値を保持するには、次のようにします。

  1. 次のいずれかの方法で、ビュー行またはエンティティ・オブジェクト・クラスを開きます。
  2. 計算属性が依存している各属性のsetterを構造ペインでダブルクリックし、そのsetterに移動します。たとえば、LineItemTotalQuantityに依存している場合は、setQuantity( Number )をダブルクリックします。
  3. setterの起動後に計算属性の値がnullに設定されるようにsetterを編集します。次に例を示します。
    public void setQuantity(Number value)
    {
      setAttributeInternal(QUANTITY, value);
      setLineItemTotal(null);
    }        
  4. 計算属性が依存している各属性に対してステップ2から3を繰り返します(LineItemTotalでは、setUnitPrice()も編集する場合があります)。
  5. 計算属性のgetter(getLineItemTotal()など)を構造ペインでダブルクリックし、そのgetterに移動します。getterは次のようになります。
    public Number getLineItemTotal()
    {
      return (Number) getAttributeInternal(LINEITEMTOTAL);
    }        
  6. return文を削除し、次のコード・ブロックのように、値がnullでない場合のみgetAttributeInternal()を戻すコード・ブロックと置換します。
    Number value =
     (Number) getAttributeInternal(LINEITEMTOTAL);
    if (value != null)
    {
      return value
    }        
  7. ifブロックの後に、次の処理を行うコードを追加します。

    たとえば次のコードは、この3つのタスクすべてをLineItemTotalに実行します。

    Number quantity = getQuantity();
    Number unitPrice = getUnitPrice();
    if (quantity != null && unitPrice != null)
    {
      value = new Number(
        quantity.doubleValue() * unitPrice.doubleValue()
      );
      setLineItemTotal(value);
    }        

    注意: こうした計算に役立つビジネス・ロジック・メソッドは多数あります。詳細は、関連項目のトピックを参照してください。

  8. 前述のブロックの後に、(nullまたは再計算済の)値を戻すコードを追加します。
    return value;        

計算属性の作成
ビジネス・ロジックの実装