Как Eclipse Sirius может взаимодействовать с другими системами?

Что я хочу:

У меня есть датчик с переменной isWorking(boolean) на реальной системе. Теперь мне нужен просмотрщик, который показывает мне, работает датчик или нет. Например, узел датчика зеленый или красный.

Что у меня есть:

У меня есть программа softSPS на CoDeSys с переменной isWorking. С помощью JEasyOPC я могу прочитать/переписать эту переменную и распечатать ее в консоли Eclipse. Я также создал модель Sirius для своей системы во время выполнения eclipse, как это показано во всех найденных мною руководствах по Sirius. Я увидел, что могу изменить цвет узла с помощью условного стиля.

Итак, у меня есть узел Sensor и переменная isWorking, но я не знаю, как их связать.

Я нашел кое-что о «внешнем действии Java» в документации Sirius. На форуме Sirius также есть пример (https://www.eclipse.org/forums/index.php/t/764175/), но я не знаю, сработает ли это для моей проблемы и как я могу использовать с ними JEasyOPC.

Другой способ, который я нашел, — привязка данных JFace, но я нашел только учебник, который работает с моделью EMF, а не с диаграммой Sirius (http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html).). Я не хочу менять свою метамодель.


person rivella    schedule 22.09.2014    source источник


Ответы (2)


Я знаю Эклипс и Сириус. Если я вас правильно понял, у вас есть доступная переменная, с помощью которой вы хотите отобразить узел с другим цветом в соответствии со значением переменной. Чтобы сделать это, вы должны быть заняты ожиданием [1], что не является лучшей практикой, лучшей практикой было бы уведомление с помощью слушателя об изменении значения переменной.

Затем, следуя выбранной вами стратегии, занятому ожиданию (с потоком, который в цикле читает вашу переменную) или прослушивателю, вам необходимо обновить вашу модель EMF, чтобы Сириус отреагировал на изменение вашей модели EMF и изменил цвет узла.

Наилучшие пожелания.

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

person user4070663    schedule 23.09.2014
comment
Спасибо за ответ. Можете ли вы сказать мне, где я могу интегрировать занятого ожидания или слушателя? Должен ли я интегрироваться во внешнее действие Java? Я действительно новый пользователь сириуса и затмения вообще, так что, может быть, вы можете объяснить более подробно. - person rivella; 24.09.2014

Лучший способ сделать это — использовать механизм Sirius Java Services. Вам нужно сначала добавить класс расширения на вашу точку зрения в вашем проекте спецификации точки зрения. Щелкните правой кнопкой мыши точку обзора и выберите New Extension/Java Extension. Там вы вводите имя класса, содержащего метод, который вы хотите вызвать в своем элементе Sirius. Однако для вызова вашего метода вы должны использовать либо элемент service:, либо выражение Acceleo, подобное этому [methodName()].

Вы должны убедиться, что ваш класс, для которого вы вызываете метод, доступен для использования Сириусом. Это означает, что вам нужно запустить среду 3-Eclipse следующим образом:

  • Затмение среды нет. 1, содержащий вашу модель и класс, который содержит ваш сервисный метод
  • Номер экземпляра Eclipse. 2 запущен с нет. 1, который содержит ваш проект спецификации Sirius Viewpoint.
  • Номер экземпляра Eclipse. 3 запущена форма №. 2, который будет содержать ваши диаграммы, созданные для экземпляра вашей модели.

Вы можете посмотреть это для получения дополнительной информации (лучше, чем действия Java): https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

Также имейте в виду, что если ваш сервисный метод должен вести себя по-разному в зависимости от узла Sirius, на котором вы отображаете результат, вам необходимо убедиться, что вы передаете правильный контекст. Я тоже могу помочь с этим, просто дайте мне знать в комментарии. Однако, если ваш метод обслуживания проверяет только одну вещь, а затем возвращает результат (т.е. у вас есть только один датчик, о котором вы говорите на своей диаграмме), вам не нужно беспокоиться об этом.

person Adrian Mos    schedule 23.03.2015