2015-01-23 2 views
1

전체 편집기 환경을로드하지 않고도 서버 측에서 Eclipse GEF 다이어그램의 이미지를 만들고 싶습니다.서버에서 GEF 다이어그램의 이미지를 만드는 방법

이 다이어그램은 eclipse graphiti을 기반으로하는 eclipse bpmn2-modeler을 기반으로 설계되었으며 GEF을 기반으로합니다.

아이디어는 다음과 같습니다

  1. 부하 BPMN 모델
  2. , 다이어그램 정보이 조각 1 단계를 수행해야합니다

이미지로

  • 수출 다이어그램을 생성 BPMN 모델을로드 :

    URI modelUri = URI.createFileURI("D:/temp/data.bpmn"); 
        ResourceSet resourceSet = new Bpmn2ModelerResourceSetImpl(); 
        resourceSet.setURIConverter(new ProxyURIConverterImplExtension(modelUri)); 
        Bpmn2ResourceImpl resource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri, Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID); 
        ModelHandler modelHandler = ModelHandlerLocator.createModelHandler(modelUri, resource); 
    
    1. 다이어그램 정보를 생성하려면 org.eclipse.bpmn2.modeler.core.di.DIImport이 필요합니다.
      여기서 문제는 생성자가 org.eclipse.graphiti.ui.editor.DiagramEditor이고 서버에 실행 UI 환경이 없다는 것입니다.
      나를 위해 다이어그램을 생성 할 수있는 다른 유틸리티 또는 처리기가 있습니까?

    2. 나는 org.eclipse.graphiti.ui.features.DefaultSaveImageFeatureorg.eclipse.graphiti.ui.internal.util.ui.print.AbstractFigureSelectionDialog (initScaledImage())을 살펴 보았다.
      하지만이 문제를 자세히 파악하기 전에 먼저 2 단계 문제를 해결해야합니다.

    어쩌면 나는 잘못된 방향으로 가고 있으며 훨씬 쉬운 접근 방법이 있습니까?

  • 답변

    1

    GMF가 편집기없이 다이어그램 이미지를 생성하는 방법을 살펴볼 수 있습니다. 그러나 SWT와 Display 스레드 (헤드리스 Eclipse 모드에서 Display 스레드를 시작할 수 있음)가 필요하기 때문에 그 세대는 여전히 UI 의존적입니다.

    아이디어는 EditPart 팩토리를 사용하여 모델 요소에 대한 editparts를 만든 다음 오프 스크린으로 만든 Shell이 ​​호스팅하는 Canvas에 루트 그림을 그립니다. GC의 그래픽 컨텍스트는 SWT 이미지입니다. AWT 기반의 Eclipse UI를 사용하지 않고 다이어그램의 이미지를 생성하거나 SVG를 생성하는 방법이 있습니다. 그러나 그림의 레이아웃은 텍스트 레이블의 경우 SWT에 의존하므로 SWT와 Display 스레드가 어느 쪽이든 필요합니다. 색상, 글꼴 및 기타 그림의 속성도 SWT 객체입니다.

    +0

    그래, 나는 editparts를 만들 필요가 있다고 생각했지만 GMF를 사용하지 않았기 때문에 나를 위해 그것을하는 graphiti의 공장을 찾고 싶었다. 이클립스 포럼 https://www.eclipse.org/forums/index.php/t/965255/에서 주제를 만들었습니다. –

    1

    org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory이 Graphiti 최근에 당신이 승 다이어그램을 내보낼 수있는 enhancement을받은 것에서 GMF의 클래스는보고/편집기를 데려 오. 그래도 Eclipse UI 환경이 필요합니다. 아래에 나열된 도우미 메서드를 사용하는 예가 here입니다.

    org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int) 
    
    +0

    좋아요! 내가 시간을 찾아서 여기로 돌아올 때 나는 그것을 볼 것이다. –

    관련 문제