2012-05-11 517 views
1

我有一个很大的EMF模型,更具体地来自MDT项目的BPMN2.0模型。我们的软件有一个要求,那就是我们必须支持Oracle JDeveloper BPMN2导出格式,它几乎与BPMN2.0 schemat相对应,但它有自己的扩展。这里是一个例子:EMF扩展现有模型

<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特有的功能。

任何建议都非常欢迎!

回答

2

这听起来像EMF Facet任务:

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

的想法是提供非侵入性的机制,新的功能(类型,属性,操作和参考)添加到元模型,并通过添加额外的属性(图标,标签等)

定制现有功能