EMF模型文件对比/比较(emf.compare)

如果使用Text形式比较EMF模型文件,对于模型的移动,不能很好的处理。如果使用EMF-compare则能很清晰的展现这种差异,对于团队协作对比/查看 修改的内容很有用。

 

dev环境搭建:

1、获取emf.compare的源码, https://github.com/eclipse/emf.compare

2、获取google的相关插件(恰好RAP插件中有,我就直接用了。也可以从下载链接中的google-dropins获得,把这些jars放到dropins目录下)

3、把源码导入到工作空间。

/org.eclipse.emf.compare
/org.eclipse.emf.compare.edit
/org.eclipse.emf.compare.ide
/org.eclipse.emf.compare.ide.ui

 

运行

去掉平台默认的compare的插件,选中工作空间中的compare的插件。



 

 

查看Compare的效果:



 

实现自定义EMF模型的比较:

1、实现自定义EMF模型,使用Example提供的例子即可搭建一个简单的EMF例子(我这里通过Examples->EMF Validation Framework Plug-ins->General Validation Example创建);

2、为自己的模型定义添加EMF-Compare功能。

先看效果:



 

要实现这样的功能,其实很简单,只要为文件的后缀添加compare的扩展点即可。

 

   <extension
         point="org.eclipse.compare.structureMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.EMFCompareStructureMergeViewerCreator"
            extensions="extlibrary"
            id="o.e.compare.ide.ui.internal.structureMergeViewer"
            label="libCompare Structure Merge Viewer">
      </viewer>
   </extension>

 

Compare源码相关:

和其他包括schema的插件不同,解析Compare的扩展点的代码都放置在CompareUIPlugin类里面。

 

org.eclipse.compare.internal.CompareUIPlugin.registerExtensions()

 

 

在org.eclipse.emf.compare.ide.ui的插件里面添加了compare的两个扩展点:

 · org.eclipse.compare.structureMergeViewers

比较结果的呈现视图,也就是对比的两个EMF文件的差异视图。

 · org.eclipse.compare.contentMergeViewers

选中两个EMF的文件,比较之后差异显示在以树形结构的StructureCompareView中,通过双击其中的节点后,就会用到contentMergeViewers视图来呈现真正内容的不同。(包括了eobject,emfcompare_diff,eText,resource_contents四种

 

------------老版本,比较烦,需要定义contentType---------

  org.eclipse.emf.compare;bundle-version="1.2.2",
 org.eclipse.emf.compare.diff;bundle-version="1.2.2",
 org.eclipse.emf.compare.epatch;bundle-version="1.2.0",
 org.eclipse.emf.compare.ui;bundle-version="1.2.2",
 org.eclipse.emf.common.ui;bundle-version="2.7.0",
 org.eclipse.core.contenttype;bundle-version="3.4.100"

 

   <extension
         point="org.eclipse.compare.contentMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ui.viewer.content.ParameterizedContentMergeViewerCreator"
            id="test.org.eclipse.emf.compare.ui.contentmergeviewer.ModelContentMergeViewer"/>
            
            <contentTypeBinding
            contentMergeViewerId="org.eclipse.emf.compare.ui.contentmergeviewer.ModelContentMergeViewer"
            contentTypeId="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"/>
   </extension>
   <extension
         point="org.eclipse.compare.structureMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ui.viewer.structure.ParameterizedStructureMergeViewerCreator"
            extensions="*"
            id="test.org.eclipse.emf.compare.ui.structuremergeviewer.ModelStructureMergeViewer"/>
  <contentTypeBinding
            structureMergeViewerId="test.org.eclipse.emf.compare.ui.structuremergeviewer.ModelStructureMergeViewer"
            contentTypeId="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"/>
  
   </extension>
   
      <extension
         point="org.eclipse.core.runtime.contentTypes">
      <content-type
            file-extensions="database,logicview,action,entity"
            id="test.org.eclipse.emf.compare.ui.contenttype.ModelContentType"
            name="modelContentTypeName"
            priority="normal">
      </content-type>
   </extension>

 

参考链接:

1、[借用Eclipse 实现文本内容对比功能](http://lggege.iteye.com/blog/505837)

内容概要:本文详细探讨了机组组合优化模型的构建,旨在通过合理安排各类发电机组的启停计划和优化出力分配,实现电力系统在经济性和稳定性上的最佳平衡。文章首先介绍了电力系统的四大主要组件——传统火电机组、风电机组、光伏机组和储能系统的参数及运行特性。接着,围绕最小化系统总运行成本这一目标,设计了优化目标函数,并明确了包括功率平衡约束、机组出力上下限约束、风光发电功率约束、弃风弃光约束、爬坡速率约束、储能系统荷电状态约束、充放电功率约束和充放电互斥约束在内的多项约束条件。最后,文章列出了求解机组组合优化模型所需的关键变量,如传统机组的开停状态、机组出力、启停成本、风电光伏实际出力、弃风弃光比例及储能系统的充放电功率和荷电状态,以实现系统的经济调度和可再生能源的最大化利用。 适合人群:从事电力系统研究、规划和调度工作的工程师和技术人员,以及对电力系统优化感兴趣的科研人员。 使用场景及目标:①帮助电力系统工程师理解不同类型发电机组的特点及其对系统稳定性、经济性和环保性的影响;②为制定合理的电力系统调度策略提供理论依据和技术支持;③促进可再生能源的有效整合,提高电力系统的灵活性和可靠性。 其他说明:本文提供的模型和方法不仅适用于当前的电力系统,也可为未来含高比例可再生能源接入的电力系统提供参考。文中涉及的具体数学公式和参数设定为实际应用提供了详细的指导,有助于提升电力系统的运行效率和经济效益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值