मैं ओसीएल के साथ काम करने के लिए एक्लिप्स एडऑन का उपयोग कर रहा हूं। मेरे पास कुछ संचालन और व्युत्पन्न विशेषताओं के साथ एक इकोर मॉडल है, मेरे पास अभिव्यक्तियों के साथ एक अलग ओसीएल फ़ाइल भी है। मैंने एक जेनमॉडल फ़ाइल बनाई और जोड़ा:
<genAnnotations source="http://www.eclipse.org/OCL/GenModel">
<details key="Use Delegates" value="false"/>
</genAnnotations>
इसके अलावा मैंने जाँच की कि वरीयताओं में कोड उत्पन्न करने के लिए ईकोर मॉडल के भीतर एम्बेडेड ओसीएल की प्राप्ति। लेकिन जब मैं इस जेनमॉडल का उपयोग करके कोड जेनरेट करने का प्रयास करता हूं तो यह केवल ओसीएल अभिव्यक्तियों के बिना कोड उत्पन्न करता है। एक अलग फ़ाइल से सभी ओसीएल अभिव्यक्तियों के लिए कोड उत्पन्न करने के लिए मुझे और क्या करना चाहिए?
यहाँ मेरी मॉडल फ़ाइल है: ईकोर फ़ाइल
यहाँ मेरी जेनमॉडल फ़ाइल है:.genmodel फ़ाइल
ओसीएल फ़ाइल की शुरुआत:
import 'CarRental.ecore#/'
package CarRental
context Person
inv Person3:
age > 0 and age < 80
context Person::fullName : String
derive: self.firstname.concat(' ').concat(self.lastname)
...
endpackage
OClinEcore में मॉडल फ़ाइल:
package CarRental : CarRental = 'http:///CarRental.ecore'
{
class Person
{
operation email() : String[*|1];
operation updateAge(newAge : ecore::EInt[1]);
attribute firstname : String[?];
attribute lastname : String[?];
attribute age : ecore::EInt[1];
attribute isMarried : Boolean[1];
attribute fullName : String[?] { derived };
}
...
}
2 जवाब
एक्लिप्स ओसीएल न्यूजग्रुप पर एकमुश्त एक्लिप्स प्रश्न पूछा जाना चाहिए।
https://www.eclipse.org/forums/index.php/f/26/
आपकी Ecore/GenModel फ़ाइलें Ecore/GenModel फ़ाइलें नहीं हैं; वे शीर्ष स्तर की घोषणाओं के स्नैपशॉट हैं। स्नैपशॉट फ़ाइलों के लिए बहुत ही कम अच्छे विकल्प हैं।
आपका जेनमॉडल स्निपेट अच्छा दिखता है, लेकिन बाकी प्रोजेक्ट के बिना आपके द्वारा की गई कई संभावित गलतियों पर टिप्पणी करना बहुत मुश्किल है।
मेरा सबसे अच्छा अनुमान यह है कि यह देखते हुए कि आप एक OCLinEcore संपादक स्नैपशॉट के बजाय एक नमूना Ecore मॉडल संपादक स्नैपशॉट पोस्ट करते हैं, आप उन सभी EAnotations को संश्लेषित करने में विफल रहे हैं जो आपके OCL ऐड-ऑन को पंजीकृत करने के लिए आवश्यक हैं। OCLinEcore संपादक यह सब स्वचालित रूप से करता है।
मेरा सुझाव है कि आप एक ज़िप्ड प्रोजेक्ट को एक्लिप्स ओसीएल न्यूज़ग्रुप में पोस्ट करें।
एक बार एक्लिप्स ओसीएल फोरम पर विवरण प्रदान किए जाने के बाद, यह पता चला कि कोड उत्पन्न करने के लिए कोई OCLExpressions नहीं था। जीरो इन => जीरो आउट।
संबंधित सवाल
नए सवाल
ocl
एमओएफ मेटा-मॉडल (यूएमएल सहित) के साथ एक औपचारिक विनिर्देश भाषा का उपयोग उन प्रश्नों या बाधाओं को व्यक्त करने के लिए किया जाता है जिन्हें अन्यथा आरेख संकेतन में व्यक्त नहीं किया जा सकता है।