मैं ओसीएल के साथ काम करने के लिए एक्लिप्स एडऑन का उपयोग कर रहा हूं। मेरे पास कुछ संचालन और व्युत्पन्न विशेषताओं के साथ एक इकोर मॉडल है, मेरे पास अभिव्यक्तियों के साथ एक अलग ओसीएल फ़ाइल भी है। मैंने एक जेनमॉडल फ़ाइल बनाई और जोड़ा:

<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 };
    }
...
}
0
Alex Shirvinsky 7 अप्रैल 2020, 17:10

2 जवाब

एक्लिप्स ओसीएल न्यूजग्रुप पर एकमुश्त एक्लिप्स प्रश्न पूछा जाना चाहिए।

https://www.eclipse.org/forums/index.php/f/26/

आपकी Ecore/GenModel फ़ाइलें Ecore/GenModel फ़ाइलें नहीं हैं; वे शीर्ष स्तर की घोषणाओं के स्नैपशॉट हैं। स्नैपशॉट फ़ाइलों के लिए बहुत ही कम अच्छे विकल्प हैं।

आपका जेनमॉडल स्निपेट अच्छा दिखता है, लेकिन बाकी प्रोजेक्ट के बिना आपके द्वारा की गई कई संभावित गलतियों पर टिप्पणी करना बहुत मुश्किल है।

मेरा सबसे अच्छा अनुमान यह है कि यह देखते हुए कि आप एक OCLinEcore संपादक स्नैपशॉट के बजाय एक नमूना Ecore मॉडल संपादक स्नैपशॉट पोस्ट करते हैं, आप उन सभी EAnotations को संश्लेषित करने में विफल रहे हैं जो आपके OCL ऐड-ऑन को पंजीकृत करने के लिए आवश्यक हैं। OCLinEcore संपादक यह सब स्वचालित रूप से करता है।

मेरा सुझाव है कि आप एक ज़िप्ड प्रोजेक्ट को एक्लिप्स ओसीएल न्यूज़ग्रुप में पोस्ट करें।

0
Ed Willink 7 अप्रैल 2020, 17:50
ठीक है, मैं EAnnotations को संश्लेषित करने में विफल रहा क्योंकि OCLinEcore में कोई भी नोटेशन नहीं है। मैं उन्हें स्वचालित रूप से या मैन्युअल रूप से कैसे संश्लेषित कर सकता हूं?
 – 
Alex Shirvinsky
7 अप्रैल 2020, 18:37
यदि आप OClinEcore संपादक का उपयोग करके अपनी Ecore फ़ाइल को संपादित करते हैं तो ऐसा होना चाहिए।
 – 
Ed Willink
7 अप्रैल 2020, 22:27

एक बार एक्लिप्स ओसीएल फोरम पर विवरण प्रदान किए जाने के बाद, यह पता चला कि कोड उत्पन्न करने के लिए कोई OCLExpressions नहीं था। जीरो इन => जीरो आउट।

0
Ed Willink 10 अप्रैल 2020, 10:26