EMF扩展现有模型

时间:2012-05-11 14:12:04

标签: java xsd eclipse-emf bpmn

我有一个大型EMF模型,更具体地说是来自MDT项目的BPMN2.0模型。我们的软件需要支持oracle JDeveloper BPMN2导出格式,它几乎与BPMN2.0 Schemat相对应,但有自己的扩展。这是一个例子:

<startEvent isInterrupting="false" name="Start" id="startEvent0">
        <ns2:OracleExtensions>
            <ns2:GraphicsAttributes>
                <ns2:Position y="225" x="100"/>
                <ns2:Size height="21" width="21"/>
            </ns2:GraphicsAttributes>
            <ns2:FeatureSet>
                <ns2:BooleanFeature value="false" name="sync"/>
                <ns2:BooleanFeature value="false" name="catchAllErrors"/>
                <ns2:BooleanFeature value="false" name="catchAllSystemExceptions"/>
                <ns2:StringFeature value="" name="associatedProcess"/>
                <ns2:StringFeature value="" name="associatedNode"/>
                <ns2:StringFeature value="" name="initiator"/>
                <ns2:StringFeature value="operation" name="definedOperationName"/>
                <ns2:StringFeature value="PROCESS_DEFAULT" name="generatesEvents"/>
                <ns2:StringFeature value="USE_PROCESS_PERMISSION" name="sealType"/>
            </ns2:FeatureSet>
            <ns2:Participant/>
        </ns2:OracleExtensions>
        <outputSet/>
        <messageEventDefinition/>
    </startEvent>

ns2有一个XSD架构,所以我很容易生成相应的eCore模型。我试图解决两天的问题是如何以正确的方式将OracleExtensions模型“插入”一个存在的BPMN2.0 eCore模型。我试图实现的目标是使用BPMN2.0建模器插件编辑模型,并提供一个exended属性来编辑特定于oracle的功能。

非常欢迎任何建议!

1 个答案:

答案 0 :(得分:2)

这听起来像是EMF Facet的任务:

  

开发工具时的问题是,您永远无法想象最终用户真正想要的所有可能的扩展。这就是EMF Facet提出扩展现有Ecore元模型而不必修改它们的解决方案的原因。

     

我们的想法是提供非侵入式机制,以向元模型添加新功能(类型,属性,操作和引用),并通过添加额外属性(图标,标签等)来自定义现有功能。