도메인별 언어 정의 방법
만들 도메인 관련 언어 (DSL)을 정의 하는 Visual Studio 서식 파일에서 솔루션입니다.솔루션의 핵심 부분에 Dsldefinition.dsl에 저장 되는 DSL 정의 다이어그램입니다.DSL 정의 클래스 및 DSL의 모양을 정의합니다.후 수정 하 고 이러한 요소에 추가, DSL에 대해서 자세히 사용자 지정 하려면 프로그램 코드를 추가할 수 있습니다.
Dsl을 처음 사용 하는 경우를 통해 작동 하도록 권장의 DSL Tools Lab에이 사이트에서 찾을 수 있습니다: Visualizaton 및 모델링 SDK
항목 내용
서식 파일 솔루션 선택
DSL을 정의 하기 위한 패턴
모델 요소의 클래스
다이어그램의 셰이프
참조 및 커넥터
목록에 포함 되는 셰이프: 셰이프 구획
다른 도형의 경계에서 포트
스윔 레인
속성 형식
DSL 사용자 지정
문제 해결
서식 파일 솔루션 선택
DSL을 정의 하려면 다음 구성 요소가 설치 되어 있어야:
Visual Studio |
|
Visual Studio SDK |
|
Visual Studio 시각화 및 SDK 모델링 |
란?LinkID = 186128 |
도메인 관련 언어를 새로 만들려면 새로 만든 Visual Studio 도메인 관련 언어 프로젝트 템플릿을 사용 하는 솔루션입니다.
DSL 솔루션을 만들려면
사용 하는 솔루션을 만들는 도메인 관련 언어 서식 파일 아래에서 찾을 수 있습니다 기타 프로젝트 형식/확장성 에 있는 새 프로젝트 대화 상자.
클릭 하면 확인, the 도메인 관련 언어 마법사 열리고 DSL 솔루션 템플릿 목록이 표시 됩니다.
각 템플릿에 대 한 설명을 보려면 클릭 합니다.작성 하려는 가장 유사한 솔루션을 선택 합니다.
각 DSL 템플릿의 기본 작동 하는 DSL을 정의합니다.이 DSL 사용자 고유의 요구 사항에 맞게 편집 합니다.
각 샘플에 대 한 자세한 정보를 클릭 합니다.
선택 작업 흐름 스윔 레인을 가진 DSL을 만들 수 있습니다.스윔 레인은 다이어그램의 세로 또는 가로 분할입니다.
선택 구성 요소 모델 포트가 있는 DSL을 만들 수 있습니다.포트는 더 큰 도형의 가장자리에 작은 모양입니다.
선택 클래스 다이어그램 구획 도형이 있는 DSL을 정의 합니다.모양 구획 항목 목록을 포함합니다.
선택 최소한의 언어 경우, 또는 잘 모르는 경우.
[!참고]
클래스 다이어그램 또는 구성 요소 다이어그램을 만드는 경우 UML 모델을 사용 하는 것이 좋습니다.UML 모델링 도구 단일 모델 주위에 통합 되어 다이어그램의 집합을 제공 합니다.확장 가능 하 고 Modelbus를 사용 하 여 DSL을 통합할 수 있습니다.자세한 내용은 소프트웨어 디자인용 모델 개발을 참조하십시오.
선택 최소한의 WinForm 디자이너 또는 최소한의 WPF 디자이너 Windows Forms 또는 WPF 화면에 표시 된 DSL을 만들 수 있습니다.편집기를 정의 하는 코드를 작성 해야 합니다.자세한 내용은 다음 항목을 참조하십시오.
DSL 적절 한 마법사 페이지에서 파일 이름 확장명을 입력 합니다.이 인스턴스를 DSL 포함 하는 파일을 사용 하는 확장입니다.
컴퓨터를 또는 DSL를 설치 하려는 컴퓨터에서 모든 응용 프로그램과 연결 된 파일 이름 확장명을 선택 합니다.예를 들어, docx 및 htm 사용할 수 없는 파일 확장명을 수 있습니다.
마법사 입력 한 확장명으로 DSL 사용 중인지를 경고 합니다.다른 파일 이름 확장명을 사용 하는 것이 좋습니다.이전 실험 설계자를 지우려면 Visual Studio SDK의 실험적인 인스턴스 다시 설정할 수도 있습니다.클릭 시작, 클릭 모든 프로그램, Microsoft Visual Studio 2010 SDK, 도구, 다음 Microsoft Visual Studio 2010 실험 인스턴스 다시.
다른 페이지 설정을 조정 하거나 기본값을 그대로 있습니다.
마침을 클릭합니다.
마법사는 두 개 또는 세 개의 프로젝트를 포함 한 DSL 정의에서 코드를 생성 하는 솔루션을 만듭니다.
사용자 인터페이스는 이제 다음 그림과 비슷하도록.
이 솔루션은 도메인 특정 언어를 정의합니다.자세한 내용은 도메인별 언어 도구 사용자 인터페이스 개요를 참조하십시오.
솔루션 테스트
작업 수정 하거나 그대로 사용할 수 있습니다 DSL 템플릿 솔루션을 제공 합니다.
솔루션을 테스트 하려면 f5 키 또는 CTRL + f 5를 누릅니다.새 인스턴스를 Visual Studio 실험 모드에서 열립니다.
새 인스턴스에서 Visual Studio, 솔루션 탐색기에서 샘플 파일을 엽니다.이 도구 상자와 같은 다이어그램으로 열립니다.
솔루션을 실행 하는 경우에서 만든는 최소한의 언어 템플릿, 실험을 Visual Studio 다음 예제와 같습니다.
도구를 시험해 보십시오.요소를 만들어 연결 합니다.
실험 모드의 Visual Studio 인스턴스를 닫습니다.
[!참고]
DSL을 수정한 경우 테스트 파일 셰이프 샘플을 볼 수 없습니다.그러나, 새 요소를 만들 수 있습니다.
DSL 템플릿 수정
이름을 변경 하 고 일부 또는 모든 도메인 클래스와 모양 클래스 DSL 정의 서식 파일에 유지 합니다.새 클래스 이름을 공백이 나 문장 부호가 없는 유효한 CLR 이름 이어야 합니다.
특히 이러한 클래스를 유지 하는 것이 더 유용 합니다.
루트 클래스에 DSL 정의 다이어그램 위 왼쪽 아래 나타납니다 클래스 및 관계.DSL에서 다른 이름을 바꿉니다.예를 들어, MusicLibrary 라는 DSL 음악 이라는 루트 클래스에 있을 수 있습니다.
DSL 정의 다이어그램의 오른쪽 아래에 나타납니다 클래스 다이어그램은 다이어그램 요소 열.보려면 오른쪽으로 스크롤해야 할 수도 있습니다.일반적으로 명명 된 YourDsl다이어그램.
사용한 경우는 작업 흐름 템플릿 및 원하는 다이어그램에 스윔 레인 만들기, 유지 및 행위자 도메인 클래스 및 ActorSwimlane 셰이프 이름을 바꿀 수 있습니다.
필요에 따라 다른 클래스 이름을 바꾸거나 삭제 합니다.
DSL을 정의 하기 위한 패턴
추가 하거나 한 번에 하나 또는 두 개의 기능을 조정 하 여 DSL를 개발 하는 것이 좋습니다.기능 추가 DSL을 실행 하 고, 테스트 및 후 하나 또는 두 개의 더 많은 기능을 추가 합니다.DSL 사용자의 일반적인 기능은 다음과 같습니다.
도메인 클래스 요소는 모델, 다이어그램 및 사용자가 요소 도구에서 해당 클래스의 요소를 표시 하는 데 필요한 셰이프 연결 관계를 포함 요소를 만듭니다.
도메인 클래스와의 셰이프를 표시할 decorators의 도메인 등록 정보입니다.
참조 관계 및 다이어그램 및 사용할 수 있는 연결선 도구에 표시 된 커넥터에는 링크를 만듭니다.
유효성 검사 제약 조건 또는 메뉴 명령을 프로그램 코드에 필요한 사용자 지정 합니다.
다음 섹션에서는 가장 유용한 종류의 DSL 기능을 만드는 방법에 설명 합니다.에 DSL 생성할 수, 다른 많은 패턴 이지만이 가장 자주 사용 됩니다.
[!참고]
클릭 하 여 기능을 추가한 후 잊지 마십시오 모든 템플릿 변환 하기 전에 솔루션 탐색기의 도구 모음에서 작성 하 고 실행 하 여 DSL.
다음 그림은 예를 들어가이 항목에 사용 되는 DSL의 일부를 클래스와 관계입니다.
다음 그림은 예제 모델이이 DSL의입니다.
[!참고]
"모델"은 사용자가 만들고 다이어그램으로 일반적으로 표시 되는 DSL의 인스턴스를 참조 합니다.이 항목에서는 DSL 정의 다이어그램과 DSL을 사용 하면 현재 모델 다이어그램에 설명 합니다.
도메인 클래스를 정의합니다.
도메인 클래스를 DSL의 개념을 나타냅니다.인스턴스는 모델 요소.예를 들어 MusicLibrary DSL에 도메인 앨범 및 노래 라는 클래스가 있을 수 있습니다.
도메인 클래스를 만들려면에서 끌 수는 이라는 도메인 클래스 도구 다이어그램을 클릭 한 다음 클래스 이름 바꾸기를 합니다.
자세한 내용은 도메인 클래스의 속성를 참조하십시오.
각 도메인 클래스에 포함 되는 관계를 만들
모든 도메인 클래스는 루트 클래스를 제외 하 고 하나 이상의 포함 관계의 대상 이거나이 포함 되는 관계의 대상이 되는 클래스에서 상속 해야 합니다.
모델의 모든 모델 요소 관계를 포함 하는 단일 트리의 노드를에서입니다.원본 및 대상에 포함 되는 관계의 자주를 부모 및 자식으로 라고 합니다.
부모 도메인 클래스에 대 한 선택 요소에 의존 하는 요소의 수명 할지에 따라 달라 집니다.일반적으로 해당 하위 트리 트리 노드를 삭제 하면 함께 삭제 됩니다.요소는 독립적인 존재가 클래스는 루트 클래스에서 직접 따라서 포함 됩니다.
일반적으로 다른 요소 내부에 요소를 표시 하는 경우 소유자 관계를 표시 합니다.이 경우 가장 적절 한 부모 클래스의 컨테이너 클래스가입니다.독립 요소 참조 연결 실제로 컨테이너 안에 표시 하는 항목 일 경우는 예외가입니다.이 경우 컨테이너 참조 하지만 대상 없습니다 삭제 됩니다.
이 항목에서 설명 하는 DSL 정의 패턴을 컨테이너를 삭제 하면 컨테이너 안에 표시 되는 요소를 삭제 하도록 가정 합니다.더 복잡 한 체계 가능 하 고 규칙을 정의 하 여이 수행할 수 있습니다.
요소를 표시 하는 방법을 |
(포함 된) 부모 클래스 |
DSL 솔루션 템플릿 예제 |
---|---|---|
다이어그램에서 셰이프입니다. 스윔 레인입니다. |
DSL의 루트 클래스입니다. |
최소한의 언어입니다. 작업 흐름: 행위자 클래스입니다. |
스윔 레인 셰이프입니다. |
도메인 클래스의 스윔 레인으로 표시 되는 요소입니다. |
작업 흐름: 작업 클래스입니다. |
목록에서에서 항목을 컨테이너를 삭제 하는 경우 항목이 삭제 되는 위치는 셰이프를. 셰이프 가장자리 포트입니다. |
도메인 클래스 컨테이너 모양에 매핑됩니다. |
클래스 다이어그램: 클래스 특성입니다. 구성 요소 다이어그램: 클래스 포트입니다. |
항목 목록에서 컨테이너를 삭제 하면 삭제 됩니다. |
DSL의 루트 클래스입니다. 목록에 대 한 참조 링크가 표시 됩니다. |
|
직접 표시 되지 않습니다. |
클래스의 일부를 형성 합니다. |
음악 라이브러리 예제에서 앨범에 노래 제목을 나열 된 사각형으로 표시 됩니다.따라서 루트 클래스 음악, 앨범의 상위입니다 및 앨범 노래의 부모입니다.
도메인 클래스 및 포함 하는 동시에 만들려면 클릭은 포함 관계 도구를 클릭 한 다음 상위 클래스를 누른 다음 다이어그램의 빈 부분에 있습니다.
클래스 이름은 자동으로 추적 합니다 때문에 조정 포함 관계와 그 역할의 이름을 필요가 없습니다.
자세한 내용은 도메인 관계의 속성 및 도메인 역할의 속성을 참조하십시오.
[!참고]
포함 하는 상속 하는 것은 아닙니다.포함 되는 관계의 자식으로 부모 로부터 기능을 상속 하지 않습니다.
도메인 속성을 각 도메인 클래스에 추가 합니다.
도메인 속성 값을 저장 합니다.예입니다: 이름, 제목, 출판 날짜.
클릭 도메인 등록 정보 클래스의 ENTER 키를 눌러 및 속성의 이름을 입력 합니다.도메인 속성의 기본 형식 문자열입니다.형식을 변경 하려는 경우 도메인 속성을 선택 하 고는 형식 에 있는 속성 창.원하는 유형 드롭다운 목록에 없으면 참조 하십시오 추가 속성 형식.
요소 이름 속성을 설정 합니다. 언어 탐색기에서 요소를 식별 하는 데 사용할 수 있는 도메인 속성을 선택 합니다.하면 제목 도메인 등록 정보를 선택할 수 있습니다 예를 들어, 노래 도메인 클래스에.에 있는 속성 창 설정 요소의 이름입니다. 에 true.
파생 된 도메인 클래스 만들기
속성 및 관계를 상속 하는 변형이 있습니다 도메인 클래스에서 파생 되는 클래스를 만들.예를 들어, 앨범 WMA 및 MP3 파생 클래스를 포함할 수 있습니다.
사용 하 여 파생된 클래스 만들기는 도메인 클래스 도구입니다.
클릭 하 여 상속 도구, 파생된 클래스를 클릭 한 다음 기본 클래스를 클릭 합니다.
설정을 고려의 상속 한정자 의 기본 클래스를 추상.별도 만드는 파생 된 기본 클래스의 인스턴스를 해야 한다고 판단 되는 경우를 고려가 대 한 클래스입니다.
파생된 클래스의 속성 및 해당 기본 클래스의 역할을 상속합니다.
DSL 정의 다이어그램 정리
관계를 추가 하는 경우 일부 클래스를 둘 이상의 위치에 표시 됩니다.모양새의 수를 줄이고 큰 다이어그램에 관계의 대상 클래스를 마우스 오른쪽 단추로 누른 다음 여기 트리 상태로.대상 클래스 클릭 한 관계의 반대 효과를 마우스 오른쪽 단추로 분할 트리.이러한 메뉴 명령이 표시 되지 않는 경우는 도메인 클래스 선택 되어 있는지 확인 하십시오.
CTRL + Up 및 CTRL + 아래쪽 도메인 클래스 및 클래스 셰이프를 이동 하려면 사용 합니다.
도메인 클래스 테스트
새 도메인 클래스를 테스트 하려면
모든 템플릿 변환을 클릭 도구 모음의 솔루션 탐색기 DSL 디자이너 코드를 생성 합니다.이 단계를 자동화할 수 있습니다.자세한 내용은 모든 템플릿의 자동 변환 방법를 참조하십시오.
빌드 및 DSL를 실행 합니다. 새 인스턴스를 실행 하려면 f5 키 또는 CTRL + f 5를 키를 눌러 Visual Studio 실험 모드에서입니다.실험의 인스턴스에서 Visual Studio, 열기 또는 DSL 사용자의 파일 이름 확장명을 가진 파일을 만듭니다.
탐색기를 엽니다. At는 일반적으로 이름이 지정 된 언어 탐색기 창에서 다이어그램의 측면 YourLanguage 탐색기.이 창이 표시 되지 않으면 솔루션 탐색기 아래에 있는 탭 수 있습니다.그를 찾을 수 없는 경우는 보기 메뉴를 가리키고 다른 창, 다음을 클릭 하 고 YourLanguage탐색기.
탐색기를 모델의 트리 뷰를 표시합니다.
새 요소를 만듭니다. 위쪽에서 루트 노드를 마우스 오른쪽 단추로 클릭 하 고 다음을 클릭 새로 추가YourClass.
클래스의 새 인스턴스를 언어로 탐색기 표시 됩니다.
각 인스턴스에서 새 인스턴스를 만들 때 다른 이름이 있는지 확인 하십시오.만 설정 된 경우이 문제가 발생할 수 있는 요소의 이름입니다. 도메인 속성에 대 한 플래그입니다.
도메인 속성을 검사 합니다. 선택한 클래스의 인스턴스를 속성 창을 검사 합니다.이 도메인 클래스에 정의 된 도메인 속성 표시 해야 합니다.
파일 저장, 닫고 다시 열.노드를 확장 한 후 사용자가 만든 모든 인스턴스를 탐색기에 표시 됩니다.
다이어그램에서 셰이프를 정의합니다.
사각형, 타원 또는 아이콘으로 다이어그램에 표시 된 요소의 클래스를 정의할 수 있습니다.
클래스 다이어그램의 셰이프에 표시 되는 요소를 정의 하려면
도메인 클래스에 설명 된 대로 테스트를 정의 하 고 도메인 클래스 정의**.**
상위 클래스는 루트 클래스 여야 합니다.즉,는 루트 클래스와 새 도메인 클래스 간의 포함 관계가 있어야 합니다.
다이어그램에 스윔 레인 있으면 부모에 스윔 레인에 매핑되는 도메인 클래스가 될 수 있습니다.이 절차를 계속 하기 전에 참조 하십시오. 정의 된 있는 스윔 DSL.
Shape 클래스를 추가 합니다. 모델 다이어그램에 있는 요소를 나타냅니다.DSL 정의 다이어그램에는 다음 도구 중 하나를 끕니다.
셰이프 기 하 도형 사각형 또는 타원을 제공 합니다.
도형을 이미지 사용자가 제공 하는 이미지를 표시 합니다.
컴파트먼트 모양 하나 이상의 목록 항목을 포함 하는 사각형입니다.
DSL 정의 다이어그램에서 도형 및 연결선의 오른쪽에 표시 되는 셰이프 클래스를 이름을 바꿉니다.
이미지를 이미지 셰이프를 만든 경우 정의.
어떤 크기의 이미지 파일을 만듭니다.BMP, JPEG, GIF 및 EMF 형식은 지원 합니다.
솔루션 탐색기에서 dsl\resources의 솔루션 파일을 추가 합니다.
DSL 정의 다이어그램에 돌아가서 새 이미지 셰이프 클래스를 선택 합니다.
속성 창에서 클릭 하 여 이미지 속성입니다.
에 이미지 선택 대화 상자에서 드롭 다운 메뉴에서 클릭 파일 이름에서 이미지를 선택 하 고.
텍스트 decorators 도메인 등록 정보를 표시 합니다 셰이프를 추가 합니다.
이름이 나 모델 요소의 제목 표시 하려면 아마도 하나 이상의 텍스트 데코레이터를 해야 합니다.
Shape 클래스의 머리글을 마우스 오른쪽 단추로 클릭 하 고 추가에서 다음을 클릭 하 고 텍스트 데코레이터.속성 창의 설정에는 데코레이터는 이름을 설정할 해당 위치.
다이어그램 요소 지도 표시 해야 하는 도메인 클래스에 있는 각 셰이프를 연결 합니다..
클릭은 다이어그램 요소 맵 도구를 클릭 한 다음 도메인 클래스를 클릭 한 다음 셰이프 클래스를 클릭 합니다.
속성을 텍스트 decorators에 매핑하십시오.
도메인 클래스 다이어그램 요소 맵을 나타내는 shape 클래스 사이의 회색 선을 선택 합니다.
에 DSL 정보 창 클릭의 데코레이터 지도 탭.보이지 않는 경우는 DSL 정보 창에는 보기 메뉴를 가리키고 다른 창 하 고 다음을 클릭 DSL 정보.자주 모든 내용을 보려면이 창의 위쪽을 발생 시 키 지 않아도 됩니다.
데코레이터의 이름을 선택 합니다.아래에서 디스플레이 속성, 도메인 클래스의 속성 이름을 선택 합니다.각 데코레이터에 대해이 단계를 반복 합니다.
관련 요소의 속성을 표시 하려면 드롭다운 트리 탐색 창에서을 클릭 경로 속성을 표시 합니다.
각 데코레이터 이름 옆에 확인 표시가 나타나는지 확인 하십시오.
도메인 클래스 요소를 만드는 도구 상자 항목을 확인 합니다.
DSL 탐색기, 확장은 편집기 노드와 모든 하위 노드에 있습니다.
아래에서 노드를 마우스 오른쪽 단추로 도구 상자 탭 DSL, 예를 들어 Musiclibrary와 같은 이름을 가진.클릭 추가 요소 도구.
[!참고]
사용자를 마우스 오른쪽 단추로 클릭 하는 경우는 도구 노드를 경우 표시 되지 않습니다 추가 요소 도구.대신, 그 위에 있는 노드를 클릭 합니다.
속성 창에서 선택한 새 요소의 도구 설정 클래스 최근에 추가한 도메인 클래스입니다.
설정 캡션 및 도구 설명.
설정 도구 상자 아이콘 아이콘이 도구 상자에 표시 될 수 있습니다.새 아이콘이 나 이미 다른 도구를 사용 하는 아이콘을 설정할 수 있습니다.
새 아이콘을 만들려면 dsl\resources를 열고 솔루션 탐색기.복사 하 고 기존 요소의 도구 BMP 파일 중 하나를 붙여 넣습니다.붙여 넣은 복사, 이름 바꾸기 및 다음 편집 하려면 두 번 클릭 합니다.
DSL 정의 다이어그램에 반환, 도구를 선택 및 속성 창에서 [...] 에서 도구 상자 아이콘.에 비트맵 선택 대화 상자에서 선택 하면.BMP 파일의 드롭다운 메뉴에서입니다.
자세한 내용은 기하 도형의 속성 및 이미지 모양의 속성을 참조하십시오.
테스트 셰이프
모든 템플릿 변환을 클릭 도구 모음의 솔루션 탐색기 DSL 디자이너 코드를 생성 합니다.
빌드 및 DSL를 실행 합니다. 새 인스턴스를 실행 하려면 f5 키 또는 CTRL + f 5를 키를 눌러 Visual Studio 실험 모드에서입니다.실험의 인스턴스에서 Visual Studio, 열기 또는 DSL 사용자의 파일 이름 확장명을 가진 파일을 만듭니다.
요소의 도구 도구 상자에 나타나는지 확인 합니다.
셰이프를 만들 는 도구에서 모델 다이어그램에서 끌어.
각 텍스트 데코레이터 나타나는지 확인 고.
설정 하지 않은 경우, 편집할 수 있는 만 UI 읽기입니다 도메인 속성에 대 한 플래그입니다.
이 보기는 데코레이터 나 속성 창에서 속성을 편집 하는 경우에 업데이트 됩니다.
셰이프를 먼저 테스트 한 후 몇 가지 해당 속성을 조정 하 고 몇 가지 고급 기능을 추가 할 수 있습니다.자세한 내용은 도메인별 언어 사용자 지정 및 확장를 참조하십시오.
참조 관계 정의
모든 원본 도메인 클래스 및 모든 대상 도메인 클래스 간의 참조 관계를 정의할 수 있습니다.일반적으로 참조 관계 다이어그램에서 선은 셰이프 사이의 연결선, 표시 됩니다.
예를 들어, 음악 앨범 하 고 예술가 다이어그램에 셰이프로 표시 되는 경우에 작업 한 앨범을 아티스트 링크 ArtistsAppearedOnAlbums 라는 관계를 정의할 수 있습니다.그림에서 예제를 참조 하십시오.
참조 관계에서 같은 종류의 요소를 연결할 수도 있습니다.예를 들어, 패밀리 트리를 나타내는 DSL에, 부모와 자녀 간의 관계 사람 참조 관계가입니다.
참조 관계 정의
참조 관계 도구를 클릭 한 다음 원본 도메인 클래스의 관계를 누른 다음 대상 도메인 클래스입니다.대상 클래스는 원본 클래스와 동일한 수 있습니다.
각각 두 개의 역할을 관계 상자의 각 면에 선으로 표시 되어 있습니다.각 역할을 선택 하 고 속성 창에서 속성을 설정할 수 있습니다.
역할 이름을 바꾸는 것이 좋습니다.예를 들어, 사람과 사람 사이의 관계에 부모 및 자녀, 관리자 및 부하 직원, 교사 및 학생에 기본 이름을 변경 하 원하는 수도 있습니다.
각 역할의 복합성을 조정, 필요한 경우.적어도 한 명의 관리자가 각 사용자의 다이어그램을 0에서 1까지 관리자 레이블 아래에 나타나는 복합성을 설정 합니다.
도메인 등록 정보에 관계를 추가 합니다. 이 그림에서 역할의 속성을 음악가 앨범 관계를 갖고 있습니다.
설정에서수 있도록 복제속성의 관계를 동일 클래스의 하나 이상의 링크 같은 쌍 사이 모델 요소에 있을 수 있습니다 경우.예를 들어 교육부 같은 학생에 따라 하나 이상의 방법을 가르쳐 수 있습니다.
자세한 내용은 도메인 관계의 속성 및 도메인 역할의 속성을 참조하십시오.
관계를 표시 하는 연결선을 정의
커넥터 모델 다이어그램의 두 모양 사이 선을 표시합니다.
드래그를 커넥터 에서 DSL 정의 다이어그램 도구입니다.
연결선에 레이블을 표시 하려면 decorators 텍스트를 추가 합니다.해당 위치를 설정 합니다.설정 텍스트 데코레이터 이동할 수 있도록 하는 됩니다 Moveable 속성.
사용은 다이어그램 요소 맵 커넥터 참조 관계를 연결 하는 도구입니다.
다이어그램 요소 매핑에서 선택한 열을 DSL 정보 창 및 열기는 데코레이터 지도 탭.
각 선택 데코레이터 를 설정 하 고 디스플레이 속성 올바른 도메인 속성에 있습니다.
각 항목 옆에 확인 표시가 나타나는지 확인 하십시오 있는 Decorators 목록입니다.
연결 작성기 도구 정의
에 DSL 탐색기 창 확장의 편집기 노드 및 모든 해당 하위 노드.
DSL 사용자 이름이 같은 노드를 마우스 오른쪽 단추로 누르고 추가 새 연결 도구.
속성 창에서 새 도구가 선택 된 상태.
설정에서 캡션 및 도구 설명.
클릭 연결 작성기 하 고 새 관계에 대 한 적절 한 작성기를 선택 합니다.
설정 도구 상자 아이콘 도구 상자에 표시할 아이콘입니다.새 아이콘이 나 이미 다른 도구를 사용 하는 아이콘을 설정할 수 있습니다.
새 아이콘을 만들려면 dsl\resources를 열고 솔루션 탐색기.복사 하 고 기존 요소의 도구 BMP 파일 중 하나를 붙여 넣습니다.붙여 넣은 복사, 이름 바꾸기 및 다음 편집 하려면 두 번 클릭 합니다.
DSL 정의 다이어그램에 반환, 도구를 선택 및 속성 창에서 [...] 에서 도구 상자 아이콘.에 비트맵 선택 대화 상자에서 선택 하면.BMP 파일의 드롭다운 메뉴에서입니다.
참조 관계와 커넥터를 테스트 하려면
모든 템플릿 변환을 클릭 도구 모음의 솔루션 탐색기 DSL 디자이너 코드를 생성 합니다.
빌드 및 DSL를 실행 합니다. 새 인스턴스를 실행 하려면 f5 키 또는 CTRL + f 5를 키를 눌러 Visual Studio 실험 모드에서입니다.실험의 인스턴스에서 Visual Studio, 열기 또는 DSL 사용자의 파일 이름 확장명을 가진 파일을 만듭니다.
연결 도구 도구 상자에 나타나는지 확인 합니다.
셰이프를 만들 는 도구에서 모델 다이어그램에서 끌어.
연결을 만들 셰이프 사이.연결선 도구를 클릭 하 고 셰이프를 다음 다른 도형을 클릭 합니다.
적합 하지 않은 클래스 간의 연결을 만들 수 없습니다 확인 하십시오. 예를 들어, 앨범 아티스트와의 관계 되 면 아티스트 아티스트를 링크할 수 없음을 확인 하십시오.
복합성을 올바른지 확인 하십시오. 예를 들어, 사람이 하나 이상의 관리자에 연결할 수 없음을 확인 하십시오.
각 텍스트 데코레이터 나타나는지 확인 고.
설정 하지 않은 경우, 편집할 수 있는 만 UI 읽기입니다 도메인 속성에 대 한 플래그입니다.
이 보기는 데코레이터 나 속성 창에서 속성을 편집 하는 경우에 업데이트 됩니다.
커넥터를 먼저 테스트 한 후 몇 가지 해당 속성을 조정 하 고 몇 가지 고급 기능을 추가 할 수 있습니다.자세한 내용은 도메인별 언어 사용자 지정 및 확장를 참조하십시오.
목록에 포함 될 도형을 정의: 구획 모양
구획 모양 하나 이상의 목록 항목을 포함합니다.예를 들어 음악 라이브러리 DSL에, 구획 셰이프의 음악 앨범을 나타낼 수 있습니다.각 앨범에는 노래 목록을입니다.
DSL 정의에서이 결과 얻기 위한 가장 간단한 방법은 도메인 클래스는 컨테이너에 대 한 각 그룹에 대 한 도메인 클래스를 정의 합니다.컨테이너 클래스를 구획 모양에 매핑됩니다.
자세한 내용은 구획 모양의 속성를 참조하십시오.
구획 모양 정의
컨테이너 도메인 클래스 만들기.클릭은 포함 관계 도구, 모델의 루트 클래스를 클릭 한 다음 DSL 정의 다이어그램의 빈 부분을 클릭 합니다.이 앨범은 그림에 지정 된 도메인 클래스를 만듭니다.
또는 루트 클래스의 포함 하는 대신 컨테이너에 스윔 레인에 매핑되는 도메인 클래스에 포함 하면 됩니다.
클래스에 이름이 같은 도메인 속성을 추가 하 고 설정의 요소의 이름입니다. 플래그 속성 창에서.
목록 항목 도메인 클래스 만들기.클릭은 포함 관계 도구, 컨테이너 클래스 (앨범)을 클릭 한 다음 해당 다이어그램의 빈 부분을 클릭 합니다.예제 그림에서 노래 라는 이름의 도메인 클래스를 만듭니다.
클래스 제목 같은 도메인 속성을 추가 하 고 설정할 해당 요소의 이름입니다. 플래그.
기타 도메인 등록 정보를 추가 합니다.
원하는 각 목록에 대해 다른 목록 항목 도메인 클래스를 추가 합니다.
여러 유형의 목록에서 항목이 혼합, 목록 클래스에서 상속 하는 클래스를 만듭니다.목록 클래스를 설정 하 여 추상 하는 상속 한정자.
예를 들어, 클래식 음악 아티스트의 작곡가 의해 정렬 되는 것을 원한다 면 노래, ClassicalSong 및 Nonclassicalsong의 두 하위 만들 수 있습니다.
구획 모양 만들기.드래그를 구획 모양 에서 DSL 정의 다이어그램 도구입니다.
텍스트 데코레이터를 추가 하 고 해당 이름을 설정 합니다.
구획을 추가 하 고 해당 이름을 설정 합니다.
가리키고 목록 구획 숨기기, 구획 shape 클래스를 마우스 오른쪽 단추로 사용자가 수 추가, 및 다음을 클릭 데코레이터 확장/축소.속성 창에는 데코레이터의 위치를 설정 합니다.
클릭은 다이어그램 요소 맵 도구, 컨테이너 도메인 클래스를 클릭 한 다음 구획 모양을 클릭 합니다.
다이어그램 요소 맵 링크 도메인 클래스와 셰이프를 선택 합니다.에 있는 DSL 정보 창:
클릭 하 여 Decorators 탭.데코레이터의 이름을 클릭 한 다음 아래에서 적절 한 항목을 선택 디스플레이 속성.데코레이터의 이름 옆에 확인 표시가 나타나는지 확인 하십시오.
클릭 하 여 구획 지도 탭.
구획 이름을 클릭 합니다.
아래에서 표시 된 요소가 수집 경로, 목록 요소 클래스 (노래)를 탐색 합니다.탐색 도구를 사용 하 여 드롭다운 화살표를 클릭 합니다.
아래에서 디스플레이 속성, 목록에 표시 되어야 하는 속성을 선택 합니다.이 예에서이 제목입니다.
[!참고]
데코레이터 맵 경로 필드와 필드 매핑 구획을 사용 하 여 도메인 클래스 및 구획 모양 사이의 복잡 한 관계를 만들 수 있습니다.
셰이프를 만들 수 있는 도구를 정의 하려면
도메인 클래스 요소를 만드는 도구 상자 항목을 확인 합니다.
DSL 탐색기, 확장은 편집기 노드와 모든 하위 노드에 있습니다.
아래에서 노드를 마우스 오른쪽 단추로 도구 상자 탭 DSL, 예를 들어 Musiclibrary와 같은 이름을 가진.클릭 추가 요소 도구.
[!참고]
사용자를 마우스 오른쪽 단추로 클릭 하는 경우는 도구 노드를 경우 표시 되지 않습니다 추가 요소 도구.대신, 그 위에 있는 노드를 클릭 합니다.
속성 창에서 선택한 새 요소의 도구 설정 클래스 최근에 추가한 도메인 클래스입니다.
설정 캡션 및 도구 설명.
설정 도구 상자 아이콘 아이콘이 도구 상자에 표시 될 수 있습니다.새 아이콘이 나 이미 다른 도구를 사용 하는 아이콘을 설정할 수 있습니다.
새 아이콘을 만들려면 dsl\resources를 열고 솔루션 탐색기.복사 하 고 기존 요소의 도구 중 하나를 붙여 넣습니다.BMP 파일입니다.붙여 넣은 복사, 이름 바꾸기 및 다음 편집 하려면 두 번 클릭 합니다.
DSL 정의 다이어그램에 반환, 도구를 선택 및 속성 창에서 [...] 에서 도구 상자 아이콘.에 있는 비트맵 선택 대화 상자에서 드롭 다운 메뉴에서 BMP 파일을 선택 합니다.
구획 모양 테스트 하기
모든 템플릿 변환을 클릭 도구 모음의 솔루션 탐색기 DSL 디자이너 코드를 생성 합니다.
빌드 및 DSL를 실행 합니다. 새 인스턴스를 실행 하려면 f5 키 또는 CTRL + f 5를 키를 눌러 Visual Studio 실험 모드에서입니다.실험의 인스턴스에서 Visual Studio, 열기 또는 DSL 사용자의 파일 이름 확장명을 가진 파일을 만듭니다.
이 도구는 도구 상자에 나타나는지 확인 합니다.
도구는 모델 다이어그램으로 끌어다 놓습니다.셰이프를 만듭니다.
요소의 이름이 나타나고 기본 값으로 자동으로 설정 됩니다 확인 하십시오.
헤더에 있는 새 셰이프를 마우스 오른쪽 단추로 클릭 한 다음 추가 클릭 내 목록 항목입니다. 예제에서는 명령을 추가 곡입니다.
항목 목록에 나타나고 새 이름이 있는지 확인 하십시오.
목록 항목 중 하나를 클릭 한 다음 속성 창을 검사 합니다.목록 항목의 속성 표시 되어야 합니다.
언어 탐색기를 엽니다.목록 항목 노드가 내부 컨테이너 노드를 볼 수 있는지를 확인 합니다.
구획 모양 먼저 테스트 한 후 해당 속성 중 일부를 조정 하 고 몇 가지 고급 기능을 추가 할 수 있습니다.자세한 내용은 도메인별 언어 사용자 지정 및 확장를 참조하십시오.
구획을 표시 하는 참조 링크
일반적으로 구획에서 표시 하는 요소는 구획 셰이프로 표시 되는 요소의 자식입니다.그러나 경우에 따라서는 관계에 대 한 참조에 연결 된 요소를 표시 하 시겠습니까.
예를 들어, 두 번째 구획을 추가할 우리 앨범에 링크 된 아티스트의 목록을 표시 하는 Albumshape에 적용할 수 있습니다.
이 경우 구획 링크에서 참조 되는 요소 대신 표시 되어야 합니다.사용자 구획에서 항목을 선택 하 고 DELETE를 누를 때 링크를 삭제 하려면 원하는 때문입니다 참조 된 요소가 없습니다.
그럼에도 불구 하 고, 구획에 나타나는 참조 된 요소 이름을 가질 수 있습니다.
다음 절차는이 섹션에서 설명한 것 처럼 이미 도메인 클래스, 참조 관계, 구획 모양 및 다이어그램 요소 지도 만든 것을 가정 합니다.
구획에 대 한 참조 링크 표시 하기
구획 모양으로 구획을 추가.DSL 정의 다이어그램에서 구획 shape 클래스를 마우스 오른쪽 단추로 클릭 하 고 추가에서 다음을 클릭 하 고 구획.
설정 표시 된 요소가 수집 경로 는 링크의 target 요소를 이동할 수 있습니다.드롭다운 메뉴를 클릭 하 고 트리 보기를 사용 하 여 대상 대신 참조 관계를 선택 합니다.예제에서는 관계 ArtistAppearedOnAlbums입니다.
설정 경로를 디스플레이 속성 에서 링크 대상 요소를 탐색 합니다.예제에서이 음악가입니다.
설정 디스플레이 속성 예를 들어 대상 요소의 적절 한 속성에 이름을 지정 합니다.
모든 템플릿 변환, 빌드 및 DSL, 실행 및 테스트 모델을 엽니다.
모델 다이어그램에서 셰이프의 적절 한 클래스를 만드는 이름을 설정 하 고 사이 연결 합니다.구획 모양에 연결 된 요소의 이름이 나타나야 합니다.
구획 모양에 링크 또는 항목 중 하나를 선택 합니다.링크 및 항목이 모두 사라집니다.
다른 셰이프의 경계에 포트를 정의합니다.
포트는 다른 셰이프의 경계에 위치한 모양입니다.
포트도에 있는 다른 셰이프를 사용자가 커넥터를 그릴 수 있습니다 고정 된 연결 지점을 제공 합니다 사용할 수 있습니다.이 경우 포트 셰이프를 투명 하 게 만들 수 있습니다.
포트를 사용 하는 예제를 보려면 선택은 구성 요소 다이어그램 새 DSL 솔루션을 만들 때 서식 파일입니다.이 예제에서는 포트를 정의 하는 경우에 고려할 수 있는 핵심 요소를 보여 줍니다.
컨테이너는 포트를 나타내는 도메인 클래스는 Component.
포트를 나타내는 도메인 클래스가입니다.이 예제에서는 ComponentPort.
포트 도메인 클래스 컨테이너 도메인 클래스는 포함 관계가입니다.자세한 내용은 도메인 클래스 정의.
서로 다른 포트를 같은 컨테이너에 혼합 될 포트 도메인 클래스의 하위 클래스를 만들 수 있습니다.이 예에서 InPort 및 OutPort 에서 상속 ComponentPort.
컨테이너 도메인 클래스는 모든 종류의 도형에 매핑할 수 있습니다.하는 것입니다 ComponentShape.자세한 내용은 을 정의 하는 셰이프.
포트 도메인 클래스 포트 셰이프에 매핑됩니다.포트 모양 클래스를 구분 하는 파생된 클래스를 매핑할 또는 포트 셰이프 클래스에 기본 클래스를 매핑할 합니다.
설명에 따라 다른 관점에서 포트 셰이프 동작 를 정의 하는 셰이프.
자세한 내용은 포트 모양의 속성를 참조하십시오.
스윔 레인을 가진 DSL을 정의 합니다.
가로 또는 세로 분할 다이어그램에 스윔 레인입니다.각 스윔 레인 모델 요소에 해당합니다.DSL 정의 스윔 레인 요소에 대해 하나의 도메인 클래스를 필요로합니다.
DSL에 스윔 레인 만들기에 새 DSL 솔루션을 만들고 작업 흐름 솔루션 템플릿을 선택 하는 것이 좋습니다.DSL 정의에 행위자 클래스 스윔 레인에 매핑되는 도메인 클래스가입니다.이 클래스와 다른 클래스 프로젝트에 맞게 이름을 변경 합니다.
안쪽에 스윔 레인 모양으로 표시 되는 클래스를 추가 하는 스윔 레인 클래스 및 새 클래스 간의 포함 관계를 만듭니다.사용자는 하나의 스윔 레인에서 다른 위치로 요소를 드래그 수 있습니다 있지만 각 요소는 특정 스윔 레인 안에 항상 됩니다.작업 흐름 솔루션 템플릿에서 FlowElement 스윔 레인 클래스의 자식입니다.
독립적으로 스윔 레인 모양으로 표시 되는 클래스를 추가 하는 루트 클래스 및 새 클래스 간의 포함 관계를 만듭니다.사용자 다이어그램에서 스윔 레인의와 스윔 레인은 외부 경계를 포함 하 여 이러한 셰이프를 곳에 나 추가할 수 있습니다.작업 흐름 솔루션 템플릿을 설명 루트 클래스의 자식입니다.
자세한 내용은 스윔 레인의 속성를 참조하십시오.
속성 형식 추가
도메인 열거 및 리터럴
도메인 열거는 몇 가지 리터럴 값입니다.
도메인 열거를 추가 하려면 모델의 루트를 마우스 오른쪽 단추로 해당 DSL 탐색기 하 고 다음을 클릭 새 도메인 열거 추가.요소에 표시 됩니다 있는 DSL 탐색기 아래는 도메인 유형 노드.이 요소는 다이어그램에 나타나지 않습니다.
도메인 열거형에 열거 리터럴 도메인 열거를 추가 하려면 마우스 오른쪽 단추로 해당 DSL 탐색기 하 고 다음을 클릭 추가 새 열거 리터럴을.
기본적으로 열거형 형식 속성을 한 번에 열거형의 값을 하나만 설정할 수 있습니다."비트 필드"-사용자와 프로그래머 조합 값으로 설정할 수 있도록 하려면 설정의 IsFlags 열거형의 속성입니다.
외부 형식
형식을 찾을 수 없는 경우 도메인 속성 형식을 설정할 때 사용할 형식 드롭다운 목록에서 외부 형식에 추가할 수 있습니다.예를 들어, 추가할 수 있는 System.Drawing.Color 형식 목록에.
형식을 추가 하려면 DSL 탐색기에서 모델의 루트를 마우스 오른쪽 단추로 클릭 하 고 다음을 클릭 추가 새 외부 형식.속성 창에서 이름을 설정 Color 와 같이 네임 스페이스 System.Drawing.이 종류가 DSL 탐색기의 표시 도메인 유형.Domain 속성의 형식을 설정할 때마다 선택할 수 있습니다.
DSL 사용자 지정
이 항목에 설명 된 기술을 사용 하면 신속 하 게 DSL 도메인별 표기법, 읽을 수 있는 XML 형식으로 코드 및 기타 항목을 생성 하는 데 필요한 기본 도구를 만들 수 있습니다.
DSL 정의 확장 하는 두 가지 방법입니다.
DSL DSL 정의의 더 많은 기능을 사용 하 여 세밀 하 게 조정 합니다.예를 들어, 몇 가지 종류의 커넥터를 만들 수 있는 단일 커넥터 도구를 만들 수 있습니다 및 어떤 삭제로 한 요소 관련된 요소 삭제 규칙을 제어할 수 있습니다.이러한 기술은 대부분의 DSL 정의에 값을 설정 하 여 얻을 수 있습니다 및 일부 프로그램 코드를 몇 줄이 필요 합니다.
자세한 내용은 도메인별 언어 사용자 지정 및 확장를 참조하십시오.
고급 효과 내기 위해 프로그램 코드를 사용 하 여 모델링 도구를 확장 합니다.예를 들어 모델을 변경할 수 있는 메뉴 명령을 만들 수 있습니다 및 여러 Dsl을 통합 하는 도구를 만들 수 있습니다.VMSDK 구체적으로 쉽게 확장 DSL 정의에서 생성 된 코드를 통합할 수 있도록 설계 되었습니다.자세한 내용은 도메인별 언어를 사용자 지정하는 코드 작성를 참조하십시오.
DSL 정의 변경
DSL 정의에서 모든 항목을 만들 때 여러 기본값 자동으로 설정 됩니다.설정 된 후 변경할 수 있습니다.DSL 개발 하면서도 강력한 사용자 지정을 단순화 합니다.
예를 들어 도형 요소에 매핑하는 경우 부모 요소 경로 매핑 도메인 클래스의 포함 관계에 따라 자동으로 설정 됩니다.그러나 부모 요소 경로 포함 관계를 나중에 변경 하는 경우 자동으로 변경 되지 않습니다.
따라서 일부 관계에서 DSL 정의 변경 하면 오류에 대 한 정의 저장 하거나 모든 템플릿 변환 하면 보고 이상한 되지 않도록 주의 해야 합니다.이러한 오류 대부분 쉽게 해결할 수 있습니다.위치 오류를 보려면 오류 보고서를 두 번 클릭 합니다.
방법: 도메인별 언어의 네임스페이스 변경을 참조하십시오.
문제 해결
다음 표에서 해당 솔루션에 대 한 제안 함께 DSL을 디자인 하는 발생 하는 가장 일반적인 문제를 보여 줍니다.더 많은 조언을 사용할 수 있습니다에서 시각 형상 도구 Extensibililty 포럼.
문제점 |
제안 |
---|---|
내가 DSL 정의 파일에 변경 내용 적용 되지. |
클릭 모든 템플릿 변환 위의 다음 솔루션 다시 빌드 및 솔루션 탐색기 도구 모음에 있습니다. |
도형에 속성 값을 데코레이터의 이름을 표시합니다. |
데코레이터 매핑을 설정 합니다.DSL 정의 다이어그램에 회색 선이 도메인 클래스와 shape 클래스 다이어그램 요소 지도 클릭 합니다. 열려 있는 DSL 정보 창.보기 메뉴에서 표시 되지 않은 경우를 가리킨 다른 창, 다음을 클릭 하 고 DSL 정보. 클릭 하 여 데코레이터 지도 탭.데코레이터의 이름을 선택 합니다.옆에 있는 상자가 선택 되어 있는지 확인 하십시오.아래에서 디스플레이 속성, domain 속성의 이름을 선택 합니다. 자세한 내용은 다이어그램의 셰이프에. |
DSL 탐색기에서 필자는 컬렉션에 추가할 수 없습니다.예를 들어, 도구를 마우스 오른쪽 단추로 클릭 면 없음 "추가 도구" 명령 메뉴에서. 내 DSL에 대 한 탐색기에 내가 목록에 요소를 추가할 수 없습니다. |
위에 시도 하는 노드 항목을 마우스 오른쪽 단추로 클릭 합니다.목록에 추가 하려는 경우 추가 명령은 목록 노드가 아니라 소유자입니다. |
도메인 클래스를 만들었으나 언어 탐색기에서 인스턴스를 만들 수 없습니다. |
루트를 제외한 모든 도메인 클래스는 포함 관계의 대상 이어야 합니다. |
내 DSL에 대 한 탐색기에 요소가 해당 형식 이름으로 표시 됩니다. |
DSL 정의에 클래스의 도메인 속성을 선택 하 고 속성 창에서 설정 요소의 이름입니다. 를 true로. |
내 DSL 항상 XML 편집기에 열립니다. |
파일을 읽는 동안 오류 때문에 발생할 수 있습니다.그러나 경우에 해당 오류를 해결 한 다음 명시적으로 DSL 디자이너에 편집기를 재설정 해야 합니다. 프로젝트 항목을 마우스 오른쪽 단추로 클릭 하 고 클릭 와 선택 하 고 YourLanguage디자이너 (기본). |
내가 어셈블리 이름 변경 후 내 DSL의 도구 상자에 나타나지 않습니다. |
업데이트를 검사 하 고 DslPackage\GeneratedCode\Package.tt 에 대 한 자세한 내용은 참조 하십시오. 방법: 도메인별 언어의 네임스페이스 변경. |
내 DSL의 도구 상자에 표시 되지 않습니다, 하지만 어셈블리 이름을 변경하지 않았습니다. 또는 확장을 로드 하려면 실패를 보고 메시지 상자가 나타납니다. |
실험적인 인스턴스를 다시 설정 하 고 솔루션을 다시 빌드해야 합니다.
|