2014-09-22 4 views
0

내가 원하는 것은 :Eclipse Sirius는 다른 시스템과 어떻게 상호 작용할 수 있습니까?

내가 진짜 시스템 변수 isWorking(boolean)와 센서가 있습니다. 이제 센서가 작동하는지 여부를 보여주는 뷰어가 필요합니다. 예를 들어 센서 노드는 녹색 또는 빨간색입니다.

내가 무엇을 가지고 :

내가 변수 isWorking와 CoDeSys에 softSPS의 프로그램이 있습니다. JEasyOPC를 사용하면이 변수를 읽고 덮어 쓸 수 있으며이를 Eclipse 콘솔에 인쇄 할 수 있습니다. 필자는 발견 된 모든 시리우스 자습서 에서처럼 Eclipse 런타임에서 내 시스템에 대한 시리우스 모델을 만들었습니다. 나는 조건부 스타일로 노드의 색을 바꿀 수 있음을 알았다.

그래서 노드가 Sensor이고 변수가 isWorking인데 연결하는 방법을 모르겠습니다.

시리우스 문서에서 "외부 Java 작업"에 대해 뭔가를 발견했습니다. 시리우스 포럼 (Sirius Forum)에도 예제 (https://www.eclipse.org/forums/index.php/t/764175/)가 있지만 문제가되는지, 어떻게 JEasyOPC를 사용할 수 있는지는 알 수 없습니다.

내가 찾은 또 다른 방법은 JFace Data Binding이지만, 시리우스 다이어그램 (http://www.vogella.com/tutorials/EclipseDataBindingEMF/article.html)이 아닌 EMF 모델에서만 작동하는 자습서를 발견했습니다. 내 메타 모델을 변경하고 싶지 않습니다.

답변

1

저는 Eclipse와 Sirius를 알고 있습니다. 변수 값에 따라 다른 색상의 노드를 표시하려는 변수를 사용할 수 있습니다. 최선의 방법은 아니므로 대기중인 [1]을 기다려야합니다. 최선의 방법은 변수 값 변경 청취자에게 통보하는 것입니다.

그런 다음 선택한 전략, 바쁜 대기 (변수를 루프로 읽는 스레드) 또는 리스너에 따라 EMF 모델을 업데이트하여 시리우스가 EMF 모델 변경에 반응하고 노드의 색을 변경하게해야합니다.

좋습니다.

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

+0

답변 해 주셔서 감사합니다. 바쁘신 대기자 나 청취자를 어디에서 만나 볼 수 있습니까? 외부 자바 액션에 통합해야합니까? 나는 정말로 시리우스와 일식의 새로운 사용자 다. 그래서 아마 당신은 더 자세히 설명 할 수있다. – rivella

1

이 작업을 수행하는 가장 좋은 방법은 시리우스 자바 서비스 메커니즘을 사용하는 것입니다. 먼저 Viewpoint Specification Project에서 Viewpoint에 확장 클래스를 추가해야합니다. 관측점을 마우스 오른쪽 버튼으로 클릭하고 New Extension/Java Extension을 선택합니다. 여기에 Sirius 요소에서 호출 할 메서드가 들어있는 클래스 이름을 넣습니다. 그러나 메서드를 호출하려면 service: 요소 또는이 [methodName()]과 같은 Acceleo 식을 사용해야합니다.

메서드를 호출하는 클래스를 Sirius에서 사용할 수 있는지 확인해야합니다. 즉, 다음과 같이 3-Eclipse 환경을 실행해야합니다.

  • Eclipse 환경 번호. 1 모델과 서비스 메소드가 포함 된 클래스가 포함되어 있습니다.
  • Eclipse 인스턴스 번호. 2에서 발사되었다. 1 시리우스 관측점 지정 프로젝트 포함
  • Eclipse 인스턴스 번호. 3 형식 번호를 시작했습니다. 2는 모델 인스턴스에 대해 인스턴스화 된 다이어그램을 포함합니다.

당신은 자세한 내용은이 한 번 봐 (보다 자바 액션)을 가질 수 있습니다 또한 https://www.eclipse.org/sirius/doc/specifier/general/Writing_Queries.html#service_methods

명심하시기 바랍니다 그 서비스 방법은 당신이 시리우스 노드에 따라 다르게 행동 할 필요가있는 경우 결과를 표시하려면 올바른 컨텍스트를 전달해야합니다. 그 점을 도와 드릴 수 있습니다. 의견을 들려주세요. 그러나 서비스 방법이 한 가지만 확인한 다음 결과를 반환하는 경우 (즉, 다이어그램에서 하나의 센서 만 사용하는 경우) 걱정할 필요가 없습니다.