도메인별 언어 사용자 지정 및 확장
VMSDK(Visual Studio Modeling and Visualization SDK)에서는 모델링 도구를 정의할 수 있는 다양한 수준을 제공합니다.
DSL 정의 다이어그램을 사용하여 DSL(도메인별 언어)을 정의합니다. 다이어그램 표기법, 읽을 수 있는 XML 형식 및 코드와 기타 아티팩트를 생성하는 데 필요한 기본적인 도구를 사용해 DSL을 빠르게 만들 수 있습니다. 자세한 내용은 DSL을 정의하는 방법을 참조하세요.
DSL 정의의 고급 기능을 사용하여 DSL을 미세 조정합니다. 예를 들어 사용자가 요소를 만들 때 추가 링크를 표시할 수 있습니다. 이러한 기술은 대부분 DSL 정의에서 사용하며, 일부 기술은 프로그램 코드 몇 줄을 작성해야 합니다.
프로그램 코드를 사용하여 모델링 도구를 확장합니다. VMSDK는 DSL 정의에서 생성된 코드를 사용하여 확장을 쉽게 통합할 수 있도록 설계되었습니다. 자세한 내용은 도메인별 언어를 사용자 지정하는 코드 작성을 참조하세요.
참고 항목
DSL 정의 파일을 업데이트했다면, 솔루션을 다시 작성하기 전에 솔루션 탐색기 툴바에서 모든 템플릿 변형을 클릭해야 합니다.
문서 참조
이 효과를 얻는 방법 | 이 토픽을 참조하세요 |
---|---|
사용자가 도형의 색 및 스타일 속성을 설정할 수 있습니다. | 도형 또는 연결선 클래스를 마우스 오른쪽 단추로 클릭한 후 노출 추가를 가린 다음 항목을 클릭합니다. |
모델 요소의 다양한 클래스는 다이어그램에서 비슷하게 보이며, 초기 높이와 너비, 색, 도구 설명 등의 속성을 공유합니다. | 도형 또는 연결선 클래스 간에 상속을 사용합니다. 파생된 도형과 파생된 도메인 클래스 간의 매핑은 부모의 매핑 정보를 상속합니다. 그렇지 않으면 서로 다른 도메인 클래스를 동일한 도형 클래스에 매핑합니다. |
모델 요소의 클래스는 다양한 도형 컨텍스트를 이용해 표시됩니다. | 둘 이상의 도형 클래스를 동일한 도메인 클래스에 매핑합니다. 솔루션을 빌드할 때는 오류 보고서를 따르고, 사용할 도형을 결정하는 데 필요한 코드를 제공해야 합니다. |
도형 색이나 글꼴 같은 기타 기능은 현재 상태를 표시합니다. | 도형 및 연결선을 업데이트하여 모델 반영을 참조하세요. 노출된 속성을 업데이트하는 규칙을 만듭니다. 규칙으로 모델 내부의 변경 내용 전파를 참조하세요. 또는 OnAssociatedPropertyChanged()를 사용하여 링크 화살표나 글꼴 같은 노출되지 않는 기능을 업데이트합니다. |
상태를 나타내는 도형 변경에 대한 아이콘입니다. | DSL 정보 창에서의 데코레이터 매핑 표시 여부를 설정합니다. 동일한 위치에서 여러 이미지 데코레이터를 찾습니다. 도형 및 연결선을 업데이트하여 모델 반영을 참조하세요. 또는 ImageField.GetDisplayImage() 를 재정의합니다. ImageField의 예제를 참조하세요. |
아무 도형에 배경 이미지 설정 | InitializeInstanceResources()를 재정의하여 고정된 ImageField를 추가합니다. |
아무 깊이에 도형 중첩 | 재귀 포함 트리를 설정합니다. 도형을 포함하는 BoundsRules를 정의합니다. |
요소의 경계에 있는 고정 지점에서 연결선을 연결합니다. | 다이어그램에서 작은 포트로 표시되는, 포함된 터미널 요소를 정의합니다. BoundsRules를 사용하여 포트를 제자리에 고정합니다. Visualization and Modeling SDK에 있는 회로 다이어그램 샘플을 참조하세요. |
텍스트 필드에는 다른 값에서 파생 된 값이 표시됩니다. | 텍스트 데코레이터를 계산된 또는 사용자 지정 스토리지 도메인 속성에 매핑합니다. 자세한 내용은 계산된 스토리지 속성 및 사용자 지정 스토리지 속성을 참조하세요. |
모델 요소 간 또는 도형 사이에 변경 내용 전파 | 도메인별 언어에서 유효성 검사를 참조하세요. |
저장소 외부의 다른 Visual Studio 확장 같은 리소스에 변경 내용을 전파합니다. | 이벤트 처리기로 모델 외부의 변경 내용 전파를 참조하세요. |
속성 창에 관련 요소의 속성이 표시됩니다. | 속성 전달을 설정합니다. 속성 창 사용자 지정을 참조하세요. |
속성 범주 | 속성 창은 범주라고 하는 섹션으로 구분됩니다. 도메인 속성의 범주를 설정합니다. 범주 이름이 같은 속성은 같은 섹션에 표시됩니다. 관계 역할의 범주를 설정할 수도 있습니다. |
도메인 속성에 대한 사용자 액세스 제어 | Is Browsable을 false로 설정하여 도메인 속성이 런타임에 속성 창에 표시되지 않게 합니다. 텍스트 데코레이터에도 매핑할 수 있습니다. Is UI Read Only는 사용자가 도메인 속성을 변경하지 못하게 합니다. 도메인 속성에 대한 프로그램 액세스는 영향을 받지 않습니다. |
DSL의 모델 탐색기에서 노드의 이름, 아이콘 및 표시 여부를 변경합니다. | 모델 탐색기 사용자 지정을 참조하세요. |
복사, 잘라내기 및 붙여넣기 사용 | DSL 탐색기의 Editor 노드에서 Enable Copy Paste 속성을 설정합니다. |
요소가 복사될 때마다 참조 링크와 관련 대상을 복사합니다. 예를 들어 항목에 첨부된 주석을 복사합니다. | 원본 역할의 Propagates Copy 속성을 설정합니다(DSL 정의 다이어그램의 도메인 관계 한쪽에 선으로 표시됩니다). 더 복잡한 효과를 얻기 위해 ProcessOnCopy를 재정의하는 코드를 작성합니다. 복사 동작 사용자 지정을 참조하세요. |
요소가 삭제될 때 관련 요소를 삭제, 부모 재지정 또는 다시 링크합니다. | 관계 역할의 Propagates Delete 값을 설정합니다. 더 복잡한 효과를 위해 DomainModel.cs에 정의된 MyDslDeleteClosure 클래스의 ShouldVisitRelationship 및 ShouldVisitRolePlayer 메서드를 재정의합니다. |
복사 및 끌어서 놓기를 통해 도형의 레이아웃과 도형을 유지합니다. | 도형과 연결선을 복사된 ElementGroupPrototype 에 추가합니다. 가장 쉽게 재정의하는 방법은 ElementOperations.CreateElementGroupPrototype() 입니다.복사 동작 사용자 지정을 참조하세요. |
선택한 위치(예: 현재 커서 위치)에 모양을 붙여넣습니다. | ClipboardCommandSet.ProcessOnCopy() 를 재정의하여 ElementOperations.Merge(). 의 위치별 버전을 사용합니다. 복사 동작 사용자 지정을 참조하세요. |
붙여넣을 때 추가 링크 만들기 | ClipboardCommandSet.ProcessOnPasteCommand() 재정의 |
이 다이어그램과 다른 DSL 및 Windows 요소에서 끌어서 놓기 사용 | 방법: 끌어서 놓기 처리기 추가를 참조하세요. |
도형이나 도구를 부모 페이지로 끌어온 것처럼 자식 도형(예: 포트)으로 끌어 올 수 있게 합니다. | 대상 개체 클래스에서 요소 병합 지시문을 정의하여 끌어 놓은 개체를 부모로 전달합니다. 요소 만들기 및 이동 사용자 지정을 참조하세요. |
도형이나 도구를 도형으로 끌어 오거나 추가 링크 또는 개체를 만들 수 있게 합니다. 예를 들어 주석을 연결할 항목에 주석을 끌어다 놓을 수 있습니다. | 대상 도메인 클래스에 요소 병합 지시문을 정의하고, 생성할 링크를 정의합니다. 복잡한 사례에서는 사용자 지정 코드를 추가할 수 있습니다. 요소 만들기 및 이동 사용자 지정을 참조하세요. |
단일 도구를 사용하여 요소 그룹을 만듭니다. 대표적인 예는 고정된 포트 집합을 사용하는 구성 요소입니다. | ToolboxHelper.cs에서 도구 상자 초기화 메서드를 재정의합니다. 요소와 관련 관계 링크를 포함하는 EGP(요소 그룹 프로토타입)를 만듭니다. 도구 및 도구 상자 사용자 지정을 참조하세요. 보안 주체와 포트 도형을 EGP에 포함하거나, EGP가 인스턴스화되면 포트 도형을 배치하도록 BoundsRules를 정의합니다. |
단일 연결 도구를 사용하여 여러 유형의 관계를 인스턴스화합니다. | LCD(링크 연결 지시문)를 도구에서 호출하는 연결 작성기에 추가합니다. LCD는 두 요소의 형식을 바탕으로 관계의 형식을 결정합니다. 요소의 상태를 바탕으로 결정되게 하려면 사용자 지정 코드를 추가하면 됩니다. 도구 및 도구 상자 사용자 지정을 참조하세요. |
고정 도구 - 사용자는 아무 도구를 두 번 클릭하여 여러 도형이나 연결선을 연속해서 만들 수 있습니다. | DSL 탐색기에서 Editor 노드를 선택합니다. 속성 창에서 고정 도구 사항 항목을 설정합니다. |
메뉴 명령 정의 | 방법: 표준 메뉴 명령 수정을 참조하세요. |
유효성 검사 규칙을 통한 모델 제한 | 도메인별 언어에서 유효성 검사를 참조하세요. |
DSL에서 코드, 구성 파일 또는 문서를 생성합니다. | 도메인별 언어에서 코드 생성 |
모델을 파일에 저장하는 방법을 사용자 지정합니다. | 파일 스토리지 및 XML Serialization 사용자 지정을 참조하세요. |
데이터베이스 또는 기타 미디어에 모델을 저장합니다. | YourLanguageDocData 재정의 파일 스토리지 및 XML Serialization 사용자 지정을 참조하세요. |
여러 DSL을 통합하여 단일 애플리케이션의 일부로 작동하게 합니다. | Visual Studio Modelbus를 사용하여 모델 통합을 참조하세요. |
DSL을 타사에서 확장하도록 허용하고, 확장을 제어합니다. | MEF를 사용하여 DSL 확장 DSL 라이브러리를 사용하여 DSL 간에 클래스 공유 잠금 정책을 정의하여 읽기 전용 세그먼트 만들기 |
관련 콘텐츠
참고 항목
텍스트 템플릿 변환 구성 요소는 Visual Studio 확장 개발 워크로드의 일부로 자동으로 설치됩니다. Visual Studio 설치 프로그램의 개별 구성 요소 탭, SDK, 라이브러리, 프레임워크 범주 아래에서 설치할 수도 있습니다. 개별 구성 요소 탭에서 Modeling SDK 구성 요소를 설치합니다.