2014-09-22 43 views
0

我想要什么:Eclipse Sirius如何与其他系统进行交互?

我有一个真正的系统具有可变isWorking(boolean)的传感器。现在我想要一个查看器来显示传感器是否工作。例如传感器节点是绿色或红色。

我有什么:

我有与可变isWorking CoDeSys的一个softSPS程序。使用JEasyOPC,我可以读取/覆盖此变量并将其打印到Eclipse控制台中。 我还在eclipse运行时为我的系统创建了一个Sirius模型,就像我找到的所有Sirius教程都显示了一样。我看到我可以用Conditional Style改变节点的颜色。

所以我有一个节点Sensor和变量isWorking但我不知道如何连接它们。

我在Sirius文档中发现了一些关于“外部Java动作”的内容。 Sirius Forum也有一个例子(https://www.eclipse.org/forums/index.php/t/764175/),但我不知道它是否适用于我的问题,以及我如何使用JEasyOPC。

我发现的另一种方式是JFace数据绑定,但我只找到了一个可与EMF模型配合使用的教程,而不是Sirius图(http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html)。我不想改变我的元模型。

回答

1

我知道Eclipse和Sirius。如果我正确地理解了你,你有一个可用的变量,根据变量值显示一个不同颜色的节点。 要做到这一点,你必须忙于等待[1],这不是最佳实践,最好的做法是通过一个可变值改变的听众来通知。

然后根据您选择的策略,忙于等待(使用线程读取循环变量)或侦听器,您需要更新EMF模型以让Sirius对您做出反应EMF模型更改并使其更改节点的颜色。

最好的问候。

[1] http://en.wikipedia.org/wiki/Busy_waiting

+0

谢谢你的回答。你能告诉我在哪里可以整合忙碌的等待或听众吗?我应该集成一个外部的Java Action吗?我真的是天狼星和日蚀的新用户,所以也许你可以更详细地解释。 – rivella 2014-09-24 09:10:02

1

要做到这一点,最好的办法是使用Java的天狼服务机制。您需要先在Viewpoint规范项目中的Viewpoint中添加扩展类。您右键单击视点并选择New Extension/Java Extension。在那里你放入了包含一个你想在Sirius元素中调用的方法的类名。 要调用您的方法,您应该使用service:元素或像这样的[methodName()]这样的Acceleo表达式。

你需要确保你所说的方法可以供Sirius使用。这意味着您需要像这样运行3-Eclipse环境:

  • Eclipse环境no。 1包含您的模型和类,其中包含您的服务方法
  • Eclipse实例号。 2从no。 1其中包含您的Sirius Viewpoint规格项目
  • Eclipse实例编号3号发布No。 2将包含为您的模型实例实例化的图。

你可以看看本作的更多信息(优于Java的操作): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

也请记住,如果你的服务方法需要不同的表现取决于你是天狼星节点上显示结果,你需要确保你传递正确的上下文。我也可以提供帮助,只需在评论中告诉我。但是,如果你的服务方法只检查一件事,然后返回一个结果(即你的图中只有一个传感器),那么你不必担心这一点。

相关问题