Sirius快速入门教程,2018年4月Sirius交流会专用教程分享(1)

Sirius快速入门教程

这份教程是今年4月Obeo公司交流培训用的。 教程中主要展示了Sirius如何快速方便的用于图像工具的开发。内容比较精练,适合于对EMF(Eclipse Modeling Framework)有一定了解,但是还未接触过Sirius的人学习参考。Sirius是EMF平台上的一个插件集. 它给MDE(Model-Driven Engineering)软件的图像工具开发提供了非常便利的环境。早期设计MDE软件是基于GMF。那时候很多图像处理还有功能都需要用Java开发。现在Sirius提供了一个图像工具的模型,开发者可以用Sirius模型来开发自己的图像工具。Sirius模型设计好之后,所有的Java代码将由Sirius模型生成。近几年,Sirius因为其方便易学,积累了不少用户。它的维护和技术支持也发展的愈加成熟。

本教程共分四个部分,循序渐进的讲述如何用Sirius开发一个简易的Mindstorms模型工具:

  • 设计元模型
  • 图像工具开发
  • 容器和编辑工具
  • 属性栏编辑

这组教程有配套的软件包,里面包含了一个Sirius IDE压缩包,四份完成的项目压缩包,一些图标素材和一段Java代码。软件包不在这里做分享,想要具体实现教程内容,可以下载EMF(Oxygen)和Sirius 5.0。


Sirius的一些语句表达

  • var 变量, 例子:
    • var:self, 通常指当前模型本身(图像层); var: container, 通常指向模型的容器。
  • feature 特性,指向原模型里当前元素所持有的一些特性,例子:
    • feature : name, 元素的名字
    • feature : instructions, 元素的指令
  • service 服务,在Sirius里插入自己编写的Java方法
  • aql AQL(Acceleo Query Language), 一种查询语句,可以对模型和它的图像模型进行查询。具体参见:AQL (英文网站)。

1. 元模型

Mindstorms是一款乐高机器人。这款机器人有以下几个主要功能:
- 移动,包括前进,后退,转向。
- 抓取,放开物品
- 各种感应器等等。

机器人的一系列动作可以自己编写,然后导入到机器人上。在这个教程中,我们会开发一个工具用于设计操控机器人的一系列动作。

1.1 元模型分析

Sirius快速入门教程,2018年4月Sirius交流会专用教程分享(1)_第1张图片

上图是这次教程中用到的Mindstorms工具的元模型。从底部向上看,这个工具支持四种操作:抓取(Grab),释放(Release),旋转(Rotate)和前进(GoForward)。 Action(动作)是这四种操作的抽象类(Abstract)。 Action(单一动作)和Choreography(动作组)都是指令(Instruction)。而一个动作组(Choreography)可以包含0到多个指令(Instruction)。 意味着一个动作组可以包含任意数量的单一动作或动作组。

除了结构外,部分类还有一些特性。例如动作组可以有名称。 Rotate类有转向角度和是否随机属性。 Forward类有以厘米为单位的距离属性。

1.2 示范步骤

  • 运行 Obeo Designer 或者安装好的eclipse (需要安装EMF和Sirius plugins)
  • 新建一个 Ecore Modeling Project, 命名为 ‘fr.obeo.dsl.tuto.mindstorms’
    • 打开mindstorms.aird, mindstorms class diagram,如果没有需要右键手动新建一个diagram。
    • 用Palette里面的工具添加以下EClass类:Choreography, Instruction, Action, Grab, Release, Rotate 和 GoForward 到画布。
    • 将 Instruction 和 Action设为Abstract类
    • 用Palette里面的工具添加两条SuperType关系:从Grab, Release, Rotate, GoForward到Action; 从Action和Choreography到Instruction。
    • 用Palette添加一条 Composition关系到Choreography和Instruction之间,命名为instructions。
    • 用Palette添加EAttributes :
      • Choregraphy, name: EString
      • Rotate, degrees: EInt, random: EBoolean
      • GoForward, cm: EInt
    • 右键图表空白处,选择Generate, 生成 Model, Edit, Editor代码
  • 修改‘fr.obeo.dsl.tuto.mindstorms.edit’项目里的以下内容来改进图标和标签:(没有素材压缩包的这步可以忽略)
    • 替换掉icons/full/obj16下面的图片素材
    • 粘贴以下代码到RotateItemProvider.java (在‘fr.obeo.dsl.tuto.mindstorms.edit’里), 替换原本的getImage()方法。
/**
     * This returns Rotate.gif.
     * 
     * 
     * @generated not
     */
    @Override
    public Object getImage(Object object) {
        if (((Rotate)object).getDegrees()>=0) {
            return overlayImage(object, getResourceLocator().getImage("full/obj16/Rotate"));
        }
        else {
            return overlayImage(object, getResourceLocator().getImage("full/obj16/Rotate_Right"));
        }
    }

1.3 检测成果

无论你是直接导入solution1.zip到IDE或一步步自己建成的。接下来都可以检测一下EMF自带的模型编辑器。
- 右键任意三个项目model, edit或editor之一,运行Run/Run Configuration…
- 在左边选择栏,选中Eclipse Application, 点击New。新建一个运行配置,之后点Run。
- 在Runtime中,导入sample.zip里的模型例子。 里面包含一个Mindstorms模型。现在可以用EMF的默认编辑器对它进行编辑。
- 如果没有sample.zip,也可以根据下图自己手动创建一个。
Sirius快速入门教程,2018年4月Sirius交流会专用教程分享(1)_第2张图片

以上是第一部分关于元模型的内容。下一节将会进入Sirius容器和编辑的介绍。如果有疑问欢迎提出,我会尽力解答。

你可能感兴趣的:(Sirius教程)