1

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

<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 建模器插件编辑模型,并提供扩展属性来编辑特定于 oracle 的功能。

非常欢迎任何建议!

4

1 回答 1

2

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

开发工具时的问题是,您永远无法想象最终用户真正想要的所有可能扩展。这就是为什么 EMF Facet 提出了一种无需修改即可扩展现有 Ecore 元模型的解决方案。

这个想法是提供非侵入性机制来向元模型添加新特征(类型、属性、操作和引用),并通过添加额外属性(图标、标签等)来定制现有特征。

于 2012-12-17T15:27:03.400 回答