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