Eclipse Sirius如何与其他系统交互?

时间:2014-09-22 08:38:08

标签: java eclipse jeasyopc eclipse-sirius

我想要的是什么:

我在真实系统上有一个带变量isWorking(boolean)的传感器。现在我想要一个查看器,告诉我传感器是否正常工作。例如,传感器节点为绿色或红色。

我有什么:

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

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

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

我找到的另一种方法是JFace数据绑定,但我只找到了一个适用于EMF模型而不是Sirius Diagram(http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html)的教程。我不想改变我的元模型。

2 个答案:

答案 0 :(得分:1)

我认识Eclipse和Sirius。如果我理解正确,你有一个可用的变量,你想根据变量值显示一个不同颜色的节点。 要做到这一点,你必须忙着等待[1]这不是最好的做法,最好的做法是通过变量值变化的听众通知。

然后按照您选择的策略,忙着等待(使用一个循环读取变量的线程)或监听器,您需要更新您的EMF模型,让Sirius对您的EMF模型更改作出反应并让它更改节点'的颜色。

最诚挚的问候。

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

答案 1 :(得分:1)

执行此操作的最佳方法是使用Sirius Java Services机制。您需要首先在Viewpoint规范项目中的Viewpoint上添加扩展类。您右键单击视点并选择New Extension/Java Extension。在那里你输入了一个类名,它包含了你想在Sirius元素中调用的方法。 但是,要调用您的方法,您应该使用service:元素或此[methodName()]之类的Acceleo表达式。

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

  • Eclipse环境没有。 1包含您的模型和包含您的服务方法的类
  • Eclipse实例没有。 2从没有发起。 1包含您的Sirius观点规范项目
  • Eclipse实例没有。 3推出表格没有。 2将包含为模型实例实例化的图表。

您可以查看此信息以获取更多信息(优于Java操作): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

另请注意,如果您的服务方法需要根据您显示结果的Sirius节点的不同而有所不同,那么您需要确保传递正确的上下文。我也可以帮忙解决这个问题,请在评论中告诉我。但是,如果您的服务方法仅检查一件事,然后返回结果(即您的图表中只有一个传感器),那么您不必担心这一点。