사용자 정의 > 빌딩 블록 생성
빌딩 블록 생성
빌딩 블록을 생성하여 PTC 빌딩 블록에 제공된 기능을 사용자 정의하거나 고유한 새 기능을 추가할 수 있습니다. 빌딩 블록 설계 패턴이라고도 하는 생성하는 빌딩 블록의 유형은 사용 사례에 따라 결정됩니다.
PTC 기능을 사용자 정의하는 경우 PTC 빌딩 블록에서 확장되는 구현 또는 사용자 인터페이스 빌딩 블록을 생성합니다. 사용자 정의에는 다음이 포함될 수 있습니다.
사용자 정의 매쉬업 만들기
고유한 비즈니스 로직을 추가하도록 서비스 사용자 정의
데이터 모델에 사용자 정의 엔티티 추가
외래 키 또는 색인화된 필드 추가
사용자 정의의 일부로 생성한 새 엔티티는 PTC 빌딩 블록에 대한 프로젝트에 추가할 수 없습니다.
새 기능을 추가하려면 표준 또는 사용자 인터페이스 빌딩 블록을 생성합니다. 여러 데이터 소스에 연결하려면 기본 기능에 대한 추상 빌딩 블록과 각 데이터 소스에 대한 관련된 구현 빌딩 블록을 생성합니다.
다양한 시나리오에서 빌딩 블록을 생성하는 예는 빌딩 블록의 예 항목을 참조하십시오.
새 빌딩 블록을 생성하려면 다음 확장 가능한 섹션에 자세히 설명된 여러 단계가 포함됩니다.
A. 빌딩 블록에 대한 프로젝트 생성 
빌딩 블록에 대한 프로젝트를 생성하려면 다음 단계를 완료하십시오.
1. ThingWorx Composer에서 빌딩 블록에 대한 새 프로젝트를 생성합니다.
2. 이름에 회사 이름과 같은 고유한 접두사를 사용합니다. 접두사 PTC는 PTC에서 제공하는 엔티티용으로 예약되어 있습니다. 예를 들어, MyCompany.MyBuildingBlock이라는 프로젝트를 생성할 수 있습니다. 빌딩 블록이 구현 빌딩 블록인 경우 끝에 Impl을 포함합니다(예: MyCompany.MyBuildingBlockImpl).
이 빌딩 블록에 대해 작성하는 새 사물 템플릿, 사물 또는 기타 엔티티에 대해 새 프로젝트를 엔티티의 일반 정보 페이지에 있는 프로젝트 값으로 추가합니다.
프로젝트 이름 지정 및 빌딩 블록 엔티티에 대한 자세한 내용은 빌딩 블록 이름 규약 항목을 참조하십시오.
B. 빌딩 블록에 대한 진입점 생성 
빌딩 블록에 대한 진입점을 생성하려면 다음 단계를 완료하십시오.
1. 프로젝트에서 진입점 사물 템플릿을 작성합니다. 예를 들어, 새 사물 템플릿의 이름을 MyCompany.MyBuildingBlock.EntryPoint_TT로 지정합니다. 기본 사물 템플릿 필드의 값으로 사용할 사물 템플릿은 PTC 빌딩 블록에서 확장하는지 아니면 새 기능에 대한 구성 블록을 생성하는지에 따라 달라집니다.
빌딩 블록이 PTC 빌딩 블록에서 확장되는 경우, PTC 빌딩 블록의 진입점 사물 템플릿을 사용합니다.
새 기능에 대한 구성 블록이면 PTC.Base.ComponentEntryPoint_TT 사물 템플릿을 사용합니다.
2. 이전 단계에서 기본 사물 템플릿 필드의 값으로 생성한 사물 템플릿을 사용하는 진입점 사물을 프로젝트에 생성합니다. 예를 들어, 새 사물의 이름을 MyCompany.MyBuildingBlock.EntryPoint로 지정합니다.
C. 빌딩 블록에 대한 관리자 사물 생성 
빌딩 블록이 PTC 빌딩 블록에서 확장되는 경우 다음 단계를 완료합니다.
1. PTC 빌딩 블록의 관리자 사물 템플릿을 기본 사물 템플릿 필드의 값으로 사용하는 사물 템플릿을 프로젝트에 생성합니다. 예를 들어, 새 사물 템플릿의 이름을 MyCompany.MyBuildingBlock.Management_TS로 지정합니다.
2. 빌딩 블록이 데이터를 데이터베이스에 저장하는 경우 다음과 같은 방식으로 사물 템플릿이 PTC.DBConnection.DBManagement_TS 사물 형태에서 구현되거나 확장되는지 확인합니다.
새 사물 템플릿의 기본 사물 템플릿 필드에 사용한 PTC 빌딩 블록의 관리자 사물 템플릿에 이미 구현된 형태PTC.DBConnection.DBManagement_TS가 있는지 확인합니다.
새 사물 템플릿의 구현된 형태 필드에 PTC.DBConnection.DBManagement_TS를 추가합니다.
3. 1단계에서 기본 사물 템플릿 필드의 값으로 생성한 사물 템플릿을 사용하는 사물을 프로젝트에 생성합니다. 이 예에서는 새 사물의 이름을 MyCompany.MyBuildingBlock.Manager로 지정합니다.
빌딩 블록이 PTC 빌딩 블록에서 확장되지 않는 경우 다음 단계를 완료합니다.
1. 빌딩 블록에 사용자 정의 데이터 모델 엔티티가 포함된 경우 프로젝트에 사물 형태를 생성하여 새 엔티티를 관리하기 위한 서비스 정의를 포함합니다. 예를 들어, 새 사물 형태 이름을 MyCompany.MyBuildingBlock.Management_TS로 지정합니다.
2. 프로젝트에서 PTC.Base.CommonManager_TT기본 사물 템플릿 필드의 값으로 사용하는 사물 템플릿을 생성합니다. 이 예에서는 새 사물 템플릿의 이름을 MyCompany.MyBuildingBlock.Manager_TT로 지정합니다.
3. 2단계에서 작성한 사물 템플릿에서, 1단계에서 작성한 사물 형태를 구현된 형태 필드에 추가합니다.
4. 빌딩 블록이 데이터를 데이터베이스에 저장하는 경우 PTC.DBConnection.DBManagement_TS 사물 형태를 구현된 형태 필드에 추가합니다.
5. 2단계에서 기본 사물 템플릿 필드의 값으로 생성한 사물 템플릿을 사용하는 사물을 프로젝트에 생성합니다. 예를 들어, 새 사물의 이름을 MyCompany.MyBuildingBlock.Manager로 지정하고 MyCompany.MyBuildingBlock.Manager_TT기본 사물 템플릿 필드의 값으로 사용합니다.
D. 관리자 사물에 구성 추가 
빌딩 블록이 PTC 빌딩 블록에서 확장되는 경우 원래 빌딩 블록에 대한 관리자 사물의 구성을 새 빌딩 블록의 관리자 사물에 추가합니다.
1. 빌딩 블록에 대한 관리자 사물(예: MyCompany.MyBuildingBlock.Manager)로 이동합니다.
2. 구성에서 원래 PTC 빌딩 블록의 관리자 사물에 대한 구성 페이지에 있는 것과 동일한 구성을 추가합니다.
* 
빌딩 블록이 UI 빌딩 블록인 경우 메뉴에 두 빌딩 블록 모두에 대한 항목이 포함되지 않도록 원래 UI 빌딩 블록의 메뉴 구성을 편집하거나 삭제하는 것이 좋습니다.
자세한 내용은 솔루션 메뉴 사용자 정의 항목을 참조하십시오.
E. 빌딩 블록에 대한 관리자 사물 등록 
DefaultGlobalManagerConfiguration 구성 테이블의 빌딩 블록에 대한 관리자 사물을 PTC.Base.Manager 사물에 수동으로 등록할 수 있습니다.
* 
UI 빌딩 블록에 대한 관리자 사물은 PTC.Base.Manager 사물에 등록할 필요가 없습니다.
빌딩 블록이 새 기능을 추가하고 PTC 빌딩 블록의 관리자를 대체하거나 재정의하지 않는 경우 다음 단계를 완료하여 구성 테이블에 관리자를 새 엔트리로 등록합니다.
1. PTC.Base.Manager 사물로 이동합니다.
2. 구성 아래에서 DefaultGlobalManagerConfiguration 구성 테이블에 대해 추가를 클릭합니다.
이름MyCompany.MyBuildingBlock.Manager 등 사용자 정의 관리자의 이름을 입력합니다.
에 대해 C. 빌딩 블록에 대한 관리자 사물 생성에서 생성한 사용자 정의 관리자 사물을 검색하여 선택합니다.
3. 추가를 클릭하여 사용자 정의 관리자를 구성 테이블에 추가합니다.
4. 저장을 클릭하여 관리자 사물에 업데이트를 저장합니다.
빌딩 블록이 확장되는 PTC 빌딩 블록에 대해 관리자 사물을 사용하는 대신 빌딩 블록의 관리자 사물을 사용하려면 다음 단계를 완료하여 구성 테이블의 엔트리를 편집합니다.
1. PTC.Base.Manager 사물로 이동합니다.
2. 구성에서 DefaultGlobalManagerConfiguration 구성 테이블을 찾습니다.
3. 빌딩 블록이 확장되는 PTC 빌딩 블록의 관리자와 일치하는 managerThingName 값이 있는 행에 대해 편집 아이콘을 클릭합니다.
4. 편집 창의 manageThingName 필드에 빌딩 블록에 대한 관리자 사물의 이름을 입력합니다.
5. 설정을 클릭하여 새 값을 설정합니다.
6. 저장을 클릭하여 변경 내용을 PTC.Base.Manager 사물에 저장합니다.
F. GetDBInfo 서비스 재정의(구현 및 표준 빌딩 블록의 경우) 
빌딩 블록이 데이터 모델에 엔티티를 추가하고 데이터베이스에 데이터를 저장해야 하는 구현 빌딩 블록 또는 표준 빌딩 블록인 경우 빌딩 블록의 관리자 사물에 대한 GetDBInfo 서비스를 재정의하여 새 엔티티에 대한 엔트리를 추가할 수 있습니다. 자세한 내용은 데이터 모델에 사용자 정의 엔티티 추가 항목을 참조하십시오.
G. InitData 서비스 재정의(구현 및 표준 빌딩 블록의 경우) 
빌딩 블록이 구현 빌딩 블록 또는 표준 빌딩 블록이고 빌딩 블록이 배포될 때 데이터베이스에 초기 데이터를 추가해야 하는 경우 빌딩 블록의 관리자 사물에 대한 InitData 서비스를 재정의하여 필요한 코드를 추가합니다. 예를 들어, 작업 지시서 상태와 같이 데이터베이스에 있어야 하는 상태에 대해 열거 값을 추가해야 할 수 있습니다.
InitData 서비스에 추가되는 코드의 예는 예: PTC 빌딩 블록에서 확장되지 않는 사용자 정의 엔티티의 빌딩 블록 생성 항목을 참조하십시오.
H. DeployComponents 서비스 재정의 
빌딩 블록의 진입점 사물 템플릿에 있는 DeployComponent 서비스를 재정의하여 다음 작업을 수행할 코드를 추가합니다.
빌딩 블록이 새 솔루션 배포의 일부로 배포될 때 빌딩 블록에 대한 관리자 사물을 등록합니다.
빌딩 블록이 데이터베이스에 데이터를 저장해야 할 경우 데이터베이스 스키마를 업데이트합니다.
필요한 경우 작업 수신기를 등록합니다.
이 코드를 추가하기 위한 예로 PTC.SCA.SCO.EntryPoint_TT 사물 템플릿의 DeployComponent 서비스를 사용합니다.
I. 작업 수신기 정의(구현 빌딩 블록의 경우) 
빌딩 블록이 작업 수신기를 사용해야 하는 구현 빌딩 블록인 경우 빌딩 블록의 관리자 사물에 있는 RegisterActionListerners 서비스를 재정의하여 등록할 작업 수신기를 정의하는 코드를 추가합니다.
이 코드를 추가하기 위한 예로 PTC.SCA.SCO.DefaultProductionOrderManager 사물의 RegisterActionListerners 서비스를 사용합니다.
J. 빌딩 블록에 대한 componentVersion 속성 설정 
빌딩 블록의 진입점 사물에 대한 componentVersion 속성을 설정하려면 다음 단계를 완료하십시오.
1. 빌딩 블록에 대한 진입점 사물(예: MyCompany.MyBuildingBlock.EntryPoint)로 이동합니다.
2. 속성 및 경고에서 componentVersion 속성에 대한 값 설정을 클릭합니다. 값이 이미 설정된 경우 편집 아이콘을 클릭하여 값을 편집합니다.
3. componentVersion 속성의 값을 입력하거나 편집하고 체크 표시 아이콘을 클릭합니다.
4. 저장을 클릭하여 진입점 사물에 대한 업데이트를 저장합니다.
* 
사용자 정의 빌딩 블록을 변경한 경우 확장 패키지를 만들기 전에 componentVersion 속성을 업데이트해야 합니다. 사용자 정의 빌딩 블록을 성공적으로 업그레이드하려면 이 업데이트된 컴포넌트 버전이 필요합니다.
K. 빌딩 블록 종속성 지정 
빌딩 블록에 대한 종속성을 설정합니다. 이러한 빌딩 블록은 빌딩 블록이 작동하기 위해 필요한 다른 빌딩 블록입니다. 예를 들어, 빌딩 블록이 다른 빌딩 블록에서 확장되거나 서비스에 대한 다른 빌딩 블록의 관리 사물 형태를 참조하는 경우 다른 빌딩 블록이 종속성으로 포함되어야 합니다.
이러한 종속성은 솔루션이 배포되거나 업그레이드될 때 솔루션 내에서 빌딩 블록의 배포 순서를 결정하는 데 사용됩니다.
빌딩 블록에 대한 종속성을 지정하려면 다음 단계를 완료합니다.
1. 빌딩 블록에 대한 프로젝트(예: MyCompany.MyBuildingBlock)로 이동합니다.
2. 일반 정보 아래의 프로젝트 종속성 필드에서 더하기 기호 아이콘을 클릭합니다.
3. 빌딩 블록이 종속된 빌딩 블록에 대한 프로젝트를 검색하고 선택합니다.
4. 프로젝트 종속성이 모두 추가될 때까지 2단계와 3단계를 반복합니다.
5. 저장을 클릭합니다.
배포 순서를 보려면 다음 단계를 완료합니다.
1. PTC.Base.Manager 사물로 이동합니다.
2. 서비스에서 GetComponentDeploymentOrder 서비스를 찾아 실행합니다. 서비스 출력에는 솔루션의 모든 빌딩 블록이 배포되는 순서가 표시됩니다.
3. 서비스 출력에서 배포 순서로 빌딩 블록을 찾습니다. 기존 빌딩 블록과 관련하여 빌딩 블록이 올바른 순서로 배포되었는지 확인합니다. 빌딩 블록이 PTC 빌딩 블록에서 확장되는 경우 배포 순서에서 PTC 빌딩 블록 뒤에 와야 합니다.
4. 빌딩 블록에 대한 배포 순서가 잘못된 경우 빌딩 블록 종속성이 올바르게 지정되었는지 확인합니다.
L. 빌딩 블록 배포 
빌딩 블록을 배포하려면 PTC.Base.Manager 사물에서 InitializeSolution 서비스를 실행합니다. 이 서비스는 종속성을 기반으로 솔루션의 모든 빌딩 블록을 순환 반복할 수 있습니다. 이미 배포된 빌딩 블록을 건너뛰므로 새 빌딩 블록을 기존 솔루션에 배포하거나 전체 솔루션을 배포하는 데 사용할 수 있습니다.
* 
설정 중 하나를 변경하지 않았다면 솔루션을 처음 배포할 때 사용된 것과 동일한 입력 매개 변수를 서비스 입력 JSON에 사용해야 합니다.
자세한 내용은 InitializeSolution 서비스 실행 항목을 참조하십시오.
도움이 되셨나요?