我有一个大型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的功能。
非常欢迎任何建议!
答案 0 :(得分:2)
这听起来像是EMF Facet的任务:
开发工具时的问题是,您永远无法想象最终用户真正想要的所有可能的扩展。这就是EMF Facet提出扩展现有Ecore元模型而不必修改它们的解决方案的原因。
我们的想法是提供非侵入式机制,以向元模型添加新功能(类型,属性,操作和引用),并通过添加额外属性(图标,标签等)来自定义现有功能。