★changeable:boolean值,指定屬性值是否可設置
★transient:boolean值,指定屬性值在序列化的時候是否可被忽略
★unique:boolean值,該屬性在multipilicity-many(不知道怎么翻譯)的情況下才有意義,它用來表示一個值在同類型對象實例中是否只存在一個相同的值
★unsettable:當設置了該屬性的時候,我們還需要使用另外一個屬性值,即unset,該屬性就是用來告訴emf,我們是否需要使用unset這個屬性。
★volatile:boolean值,表明該屬性值是否直接進行存儲,這種情況一般發生在當前屬性值是由其他屬性計算而來的時候,此時該屬性的set方法可能需要我們自己實現,而不是由emf generator生成的。
★還有幾個與數量相關的屬性:lowerbound,最小值,只能是0和正整數,upperbound,最小值,大于或等于最小值,如果是unbounded的話(極大值),可以設置為-1(相當于模型中的*)
★structrual feature的默認值:booelan類型的為false, integer的為0
★雖然采用不同的模型工具也可以生成emf model,但是總是會存在這樣和那樣的問題,比如有的雖然能建模總是和emf,gef,eclipse的版本相關,不同的版本會出現一些莫名其妙的問題最終讓你死的很慘(我在這個上面花了太多的時間,推薦eclipse3.2.1+emf2.2.1,最新的會有問題),而使用annotated java interface則會消除這些問題,所謂強烈推薦采用annotation的方式生成emf model,不過它唯一比較麻煩的就是,你必須熟練掌握各種annoation的用法。
★一般情況下,我們不需要針對package來定義接口,除非我們需要對EPackage的一些屬性進行復寫(有幾個final的屬性eName,eNS_URI,eNS_Perffix),但是在下面兩種情況下,我們也需要進行自定義:如果需要顯示定義EDataType以及顯示定義一個map entity。
★class的接口定義,就是一般的接口定義加上@model annotation,attribute和reference的定義通過在get()方法上指定相應的annotation,operation則使用其他的方法定義。
★class的model屬性主要包括abstract和interface,用來指明定義的class是否是抽象類和接口,都是boolean值
★class中的attribute的設置,只有符合以下條件下才能被emf generator識別為一個attribute:必須帶有一個@model的annotation,且跟隨后面的屬性不能帶有parameters屬性;方法名必須以get或者is開頭,緊隨其后的必須為大寫字母開頭的屬性名;還有一點就是方法返回的類型不能和EClass相關(如果返回類型是List或EList,那么里面的類型必須通過@model之后的type屬性加以指定,否則,EAttribute的eType要設置為對應的EDataType類型)
★class中的reference的設置,只有符合以下條件才能被emf generator識別為一個reference:必須帶有@model的annotation,且跟隨后面的屬性中不能帶有parameters屬性;方法名必須以get開頭,緊隨其后的必須為大寫字母開頭的屬性名;返回的類型必須和EClass相關
★class中的operation的設置,只有符合以下條件才能被emf generator識別為一個operation:必須帶有@model的annotation;@model帶有一個parameters屬性,如果方法名的定義不符合attribute和reference的方法名定義可不用帶parameters屬性,但是如果參數類型必須使用指定的EDataType,則必須帶paramters加以指定。
★枚舉值的定義,在class的定義中,每一個int值的定義,如果使用了@model annotation,那么將被emf generator解析成一個枚舉值,如果你不希望使用emf 生成的枚舉名稱(通常就是定義的那個屬性名),可以通過@model后面的name屬性加以指定
★自定義類型的定義,一般情況下,我們無須顯式的自定義Data Type,emf會根據attribute和operation中用到的數據類型在EPackage中添加相關的自定義Data Type類型。有時候為了給一種類型提供指定的序列化處理方式,需要自己寫Data Type,為了自定義一個Data Type,具體步驟如下:方法名已get打頭;在方法注釋中添加@model;getter方法返回類型為Data Type;注釋的屬性中包含instanceClass用來指定實際的java class 或者interface,還有一個屬性是serializable。
★用戶描述core model結構的元數據模型(metamodel)稱之為Ecore,同時我們又用它來描述實際應用中的數據模型,因此Ecore又被稱之為應用元數據模型的元數據模型(meta-metamodel)
★transient:boolean值,指定屬性值在序列化的時候是否可被忽略
★unique:boolean值,該屬性在multipilicity-many(不知道怎么翻譯)的情況下才有意義,它用來表示一個值在同類型對象實例中是否只存在一個相同的值
★unsettable:當設置了該屬性的時候,我們還需要使用另外一個屬性值,即unset,該屬性就是用來告訴emf,我們是否需要使用unset這個屬性。
★volatile:boolean值,表明該屬性值是否直接進行存儲,這種情況一般發生在當前屬性值是由其他屬性計算而來的時候,此時該屬性的set方法可能需要我們自己實現,而不是由emf generator生成的。
★還有幾個與數量相關的屬性:lowerbound,最小值,只能是0和正整數,upperbound,最小值,大于或等于最小值,如果是unbounded的話(極大值),可以設置為-1(相當于模型中的*)
★structrual feature的默認值:booelan類型的為false, integer的為0
★雖然采用不同的模型工具也可以生成emf model,但是總是會存在這樣和那樣的問題,比如有的雖然能建模總是和emf,gef,eclipse的版本相關,不同的版本會出現一些莫名其妙的問題最終讓你死的很慘(我在這個上面花了太多的時間,推薦eclipse3.2.1+emf2.2.1,最新的會有問題),而使用annotated java interface則會消除這些問題,所謂強烈推薦采用annotation的方式生成emf model,不過它唯一比較麻煩的就是,你必須熟練掌握各種annoation的用法。
★一般情況下,我們不需要針對package來定義接口,除非我們需要對EPackage的一些屬性進行復寫(有幾個final的屬性eName,eNS_URI,eNS_Perffix),但是在下面兩種情況下,我們也需要進行自定義:如果需要顯示定義EDataType以及顯示定義一個map entity。
★class的接口定義,就是一般的接口定義加上@model annotation,attribute和reference的定義通過在get()方法上指定相應的annotation,operation則使用其他的方法定義。
★class的model屬性主要包括abstract和interface,用來指明定義的class是否是抽象類和接口,都是boolean值
★class中的attribute的設置,只有符合以下條件下才能被emf generator識別為一個attribute:必須帶有一個@model的annotation,且跟隨后面的屬性不能帶有parameters屬性;方法名必須以get或者is開頭,緊隨其后的必須為大寫字母開頭的屬性名;還有一點就是方法返回的類型不能和EClass相關(如果返回類型是List或EList,那么里面的類型必須通過@model之后的type屬性加以指定,否則,EAttribute的eType要設置為對應的EDataType類型)
★class中的reference的設置,只有符合以下條件才能被emf generator識別為一個reference:必須帶有@model的annotation,且跟隨后面的屬性中不能帶有parameters屬性;方法名必須以get開頭,緊隨其后的必須為大寫字母開頭的屬性名;返回的類型必須和EClass相關
★class中的operation的設置,只有符合以下條件才能被emf generator識別為一個operation:必須帶有@model的annotation;@model帶有一個parameters屬性,如果方法名的定義不符合attribute和reference的方法名定義可不用帶parameters屬性,但是如果參數類型必須使用指定的EDataType,則必須帶paramters加以指定。
★枚舉值的定義,在class的定義中,每一個int值的定義,如果使用了@model annotation,那么將被emf generator解析成一個枚舉值,如果你不希望使用emf 生成的枚舉名稱(通常就是定義的那個屬性名),可以通過@model后面的name屬性加以指定
★自定義類型的定義,一般情況下,我們無須顯式的自定義Data Type,emf會根據attribute和operation中用到的數據類型在EPackage中添加相關的自定義Data Type類型。有時候為了給一種類型提供指定的序列化處理方式,需要自己寫Data Type,為了自定義一個Data Type,具體步驟如下:方法名已get打頭;在方法注釋中添加@model;getter方法返回類型為Data Type;注釋的屬性中包含instanceClass用來指定實際的java class 或者interface,還有一個屬性是serializable。
★用戶描述core model結構的元數據模型(metamodel)稱之為Ecore,同時我們又用它來描述實際應用中的數據模型,因此Ecore又被稱之為應用元數據模型的元數據模型(meta-metamodel)
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】