現在、EMF Validation を使用して、モデルの制約違反が発生した場合にユーザーに直接フィードバックを提供しています。
システムは次のように設定されています。
EContentAdapter
モデルに対して行われたすべての変更を記録する- は、の
CommandStackListener
終了時に、これらの変更を EMF 検証フレームワークにプッシュしCommand
ます。これにより、実行される検証の数が減ります。EMFLiveValidator
は、SUCCESS も報告するように構成されています。 - すべての制約は
Notification
、次の基準に基づいて を 調べます。- 検証されているエンティティのコンテンツの変更ですか?
- 検証中のエンティティを追加する変更ですか?
- 以前に計算された検証結果に別の方法で影響を与える変更はありますか?
- は、制約に失敗した
ValidationListener
すべてのエンティティのリストを保持します。新しい SUCCESS または FAILED ConstraintStatus メッセージでこのリストを更新します。また、リストを更新して、リソースに含まれなくなった FAILED エンティティを削除します (削除されたため)。
多くの機能を自分で実装したようです。以下を行うために利用できる標準の API / 実装はありませんか?
- 検証ステータスの追跡
- Constraint が使用する属性を追跡します。これらの属性のいずれかが変更された場合にのみ再検証します。
- JFace Databinding の
ComputedValue
動作に匹敵します。
- JFace Databinding の
それとも、実際にフレームワークを最大限に使用していますか? OCL 制約を使用する場合、システムはどの変更が制約の結果に影響を与えるかを検出できますか?