2014-09-22 41 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

也請記住,如果你的服務方法需要不同的表現取決於你是天狼星節點上顯示結果,你需要確保你傳遞正確的上下文。我也可以提供幫助,只需在評論中告訴我。但是,如果你的服務方法只檢查一件事,然後返回一個結果(即你的圖中只有一個傳感器),那麼你不必擔心這一點。

相關問題