다음을 통해 공유


도메인별 언어 사용자 지정 및 확장

Visual Studio 모델링 및 시각화 SDK(VMSDK)는 모델링 도구를 정의할 수 있는 몇 가지 수준을 제공합니다.

  1. DSL 정의 다이어그램을 사용하여 DSL(도메인별 언어)을 정의합니다. 다이어그램 표기법, 읽을 수 있는 XML 양식 및 코드 및 기타 아티팩트를 생성하는 데 필요한 기본 도구를 사용하여 DSL을 빠르게 만들 수 있습니다. 자세한 내용은 Domain-Specific 언어를 정의하는 방법을 참조하세요.

  2. DSL 정의의 고급 기능을 사용하여 DSL을 미세 조정합니다. 예를 들어 사용자가 요소를 만들 때 추가 링크를 표시할 수 있습니다. 이러한 기술은 주로 DSL 정의에서 수행되며 일부는 몇 줄의 프로그램 코드가 필요합니다.

  3. 프로그램 코드를 사용하여 모델링 도구를 확장합니다. 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 클래스의 ShouldVisitRelationshipShouldVisitRolePlayer 메서드를 재정의하십시오.
도형 레이아웃과 모양을 복사할 때와 끌어서 놓을 때에 유지합니다. 복사한 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 세그먼트를 만드는 잠금 정책 정의

비고

텍스트 템플릿 변환 구성 요소는 Visual Studio 확장 개발 워크로드의 일부로 자동으로 설치됩니다. Visual Studio 설치 관리자의 개별 구성 요소 탭에서 SDK, 라이브러리 및 프레임워크 범주 아래에 설치할 수도 있습니다. 개별 구성 요소 탭에서 모델링 SDK 구성 요소를 설치합니다.