我需要檢查模型是否觸發一個或多個OCL約束。 模型存儲在XMI中,加載EMF。 OCL約束是自動生成的(String或類似的)。模型OCL評估與對象評估
我找到了一種方法來檢查約束上的EObject
helper.setContext(ecClass);
query = helper.createQuery(expression);
Object o = ocl.check(eo, invariant);
Ô則包含了結果:true或false。
我是否必須'手動'檢查模型的每個對象,還是有一種方法,一種方法或類可以直接(或可能更有效)?
需要注意的是: - 無建模信息是硬編碼:元模型,模型和OCL最通用的方式被操縱, - 我在一個獨立的軟質工作:所有的罐子都特意增加了。我試過使用DresdenOCL,但我不知道爲什麼註冊這些軟件包很麻煩。
你的意思是「違反」「火災」? 您是否需要從Java代碼觸發OCL驗證?後一個問題是因爲如果您不介意使用Eclipse,那麼驗證很容易實現,您可以在OCL中使用通用量化來測試給定類的所有實例。 –
是的,我的意思是「違反」(但這個詞有點沉重)。不,我不介意使用Eclipse。 Standalone聽起來更容易在計算器上執行(但我可能是錯的)。 –
我不明白你的原始問題中「註冊軟件包是否麻煩」。另外我不明白你的意思是「容易在計算器上執行」。你會詳細說明嗎?我可以寫一個答案,在這個答案中,我使用一個簡單的虛擬示例(例如檢查汽車的所有實例有4個裝載的輪胎),展示如何使用Eclipse評估對Ecore模型實例的OCL約束。另一種選擇是讓你分享你擁有的一些模型(和相應的Ecore模型)以及一些OCL限制 - 我可以根據這個來寫一個答案。 –