0

私が欲しいもの:

isWorking(boolean)実際のシステムに変数を持つセンサーがあります。ここで、センサーが機能しているかどうかを示すビューアーが必要です。たとえば、センサー ノードは緑または赤です。

私が持っているもの:

私は CoDeSys に変数 を持つ softSPS プログラムを持っていますisWorking。JEasyOPC を使用すると、この変数を読み取り/上書きして、Eclipse コンソールに出力できます。また、私が見つけたすべての Sirius チュートリアルが示されているように、Eclipse ランタイムで自分のシステム用の Sirius モデルを作成しました。条件付きスタイルでノードの色を変更できることがわかりました。

ノードSensorと変数isWorkingがありますが、それらを接続する方法がわかりません。

Sirius のドキュメントで「外部 Java アクション」に関する記述を見つけました。Sirius Forum にも例があります ( https://www.eclipse.org/forums/index.php/t/764175/ )が、それが私の問題で機能するかどうか、および JEasyOPC をどのように使用できるかはわかりません彼ら。

私が見つけた別の方法は JFace Data Binding ですが、Sirius ダイアグラムではなく EMF モデルで機能するチュートリアルしか見つかりませんでした ( http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html )。メタ モデルを変更したくありません。

4

2 に答える 2

1

私はエクリプスとシリウスを知っています。私が正しく理解している場合は、変数の値に応じて異なる色でノードを表示するために使用できる変数があります。そのためには、待つのに忙しくする必要があります [1]。これはベスト プラクティスではありません。ベスト プラクティスは、変数値の変更をリスナーで通知することです。

次に、選択した戦略、ビジー待機 (変数をループで読み取るスレッドを使用) またはリスナーに従って、EMF モデルを更新して、Sirius が EMF モデルの変更に反応し、ノードの色を変更するようにする必要があります。

よろしくお願いします。

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

于 2014-09-23T13:16:33.210 に答える
1

これを行う最善の方法は、Sirius Java サービス メカニズムを使用することです。最初に、Viewpoint 仕様プロジェクトの Viewpoint に拡張クラスを追加する必要があります。ビューポイントを右クリックして、 を選択しますNew Extension/Java Extension。そこで、Sirius 要素で呼び出したいメソッドを含むクラス名を入力します。ただし、メソッドを呼び出すには、service:このように要素または Acceleo 式を使用する必要があります[methodName()]

メソッドを呼び出すクラスが Sirius で使用できることを確認する必要があります。これは、次のように 3-Eclipse 環境を実行する必要があることを意味します。

  • Eclipse環境No. あなたのサービスメソッドを含むあなたのモデルとクラスを含む1
  • Eclipse インスタンス番号 2号から打ち上げ。Sirius Viewpoint 仕様プロジェクトを含む 1
  • Eclipse インスタンス番号 3 打ち上げフォーム No. 2 には、モデル インスタンス用にインスタンス化されたダイアグラムが含まれます。

詳細については、これを参照してください (Java アクションよりも優れています): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

また、結果を表示している Sirius ノードに応じてサービス メソッドの動作を変える必要がある場合は、正しいコンテキストを渡す必要があることにも注意してください。私もそれを手伝うことができます。コメントでお知らせください。ただし、サービス メソッドが 1 つのことのみをチェックして結果を返す場合 (つまり、ダイアグラムに対象のセンサーが 1 つしかない場合)、これについて心配する必要はありません。

于 2015-03-23T17:38:54.547 に答える