2016-04-04 16 views
0

Oracle ADFには2つのビュー・オブジェクトがあります。ビュー・オブジェクト間の双方向の同期

LineVOはオーダーラインを表します。製品ごとに1行あります。

製品はいくつかの属性、つまり「モデル」と「色」で区別されます。したがって、VO#1には、各モデル/色の組み合わせの行が含まれています。

ModelVOはモデルレベルの行の概要を表します。

両方のVOには、「数量」フィールド(整数)があります。

これらの間にはViewLinkがあり、それぞれにはView AccessLinkがあります。

私がするような、これらの二つのビュー・オブジェクト間の双方向の連携を実現したい:ユーザーがデータを照会すると

  • は、ModelVO.Quantityは、関連する行
  • ため、LineVO.Quantityの合計に等しいです
  • ユーザーがLineVO.Quantityを更新すると、ModelVO.Quantityがすぐに更新され、新しい合計が反映されます
  • ユーザーがModelVO.Quantityを更新すると、関連するLineVO行に数量が広がります。ここでは関係ないと思います)。

私はこれを行うためにさまざまな方法を試してきましたが、完全にはできません。

今、私はModelVO.QuantityがGroovyの式 "LineVO.sum( 'Quantity')に設定されているバリエーションに取り組んでいます。残念ながら、私が試したすべてのものは、LineVO-> ModelVOの集計またはModelVO-> LineVOの散布がありますが、同時に両方ではありません。

誰かがこれを行う方法を提案できますか?私はモデルレイヤー(EOまたはVOまたは組み合わせのいずれか)でそれをやりたい

答えて

0

ネヴァーマインドは...それは簡単であることが判明:

ModelVO.QuantityはGroovyの「LineVO.sum( 『数量』)」に設定する必要があり、それは私が物事を制御することができます方法にrecalcExpressionセットを持っている必要がありますしたがって、LineVO.Quantityの値を変更するときにのみ再計算されます。私は、ビュー・アクセッサを経て、lineVORow.getModelVO() ...すなわちによってModelVO行を得ていた、ユーザーがLineVO.Quantity値を更新し、私は再計算したい場合は、ので、私のアプローチは、最初は動作しませんでした

理由でした。

明らかに、これは実際の行ではなく行の内部コピーの何らかの種類を返します。

applicationModule.getModelVO().getCurrentRow()で親行を取得したとき、すべてが完全に機能します。

私は、ビューアクセッサを介して行にアクセスすることができなかった理由について別の質問を投稿しました。その部分はまだ私にとって謎です。

関連する問題