Operator Advisor 사용자 정의 > Operator Advisor 데이터 모델 확장 > Operator Advisor 엔티티에 사용자 정의 속성 추가
Operator Advisor 엔티티에 사용자 정의 속성 추가
Operator Advisor 데이터 모델의 엔티티 대부분에는 사용자 정의 속성을 추가하기 위한 관련 _AP 데이터 셰이프가 있습니다. 예를 들어, 작업 지시서 데이터 셰이프(PTC.SCA.SCO.JobOrder)에는 연관된 PTC.SCA.SCO.JobOrder_AP 데이터 셰이프가 있습니다. 이 예에서는 PTC.SCA.SCO.JobOrder_AP 데이터 셰이프에 새 Location 속성을 추가합니다.
Operator Advisor에 사용자 정의 속성을 추가하는 작업은 여러 단계로 수행됩니다.
서비스를 사용하여 새 사용자 정의 속성을 프로그래밍 방식으로 채우는 방법을 보여주는 예는 사용자 정의 속성 채우기를 참조하십시오.
데이터 셰이프에 필드 추가
1. ThingWorx Composer에서 엔티티의 _AP 데이터 셰이프로 이동합니다. 이 예에서는 PTC.SCA.SCO.JobOrder_AP로 이동합니다.
2. 필드 정의에서 추가를 클릭합니다.
3. 새 필드 정의 창에서 다음을 지정합니다.
이름 - 속성의 이름입니다. 이 예에서는 Location을 입력합니다.
기본 유형 - 속성에 대한 데이터 유형입니다. 이 예에서는 STRING을 선택합니다.
4. 을 클릭하여 새 필드 정의를 추가합니다.
5. 저장을 클릭하여 데이터 셰이프에 대한 업데이트를 저장합니다.
데이터베이스 정보를 데이터베이스 제약 조건으로 업데이트합니다.
새 속성에 데이터베이스 제약 조건이 필요한 경우 다음 단계를 완료하십시오.
1. PTC.SCA.SCO.DefaultProductionOrderManager 사물로 이동합니다.
2. 서비스에서 속성을 추가할 엔티티에 대한 Get<entity>DBInfo 서비스를 찾아 재정의합니다. 이 예에서는 GetJobOrderDBInfo 서비스를 찾아 재정의합니다.
3. 스크립트 편집기에서 속성을 추가한 데이터 셰이프의 엔트리로 스크롤합니다. 이 예에서는 다음 엔트리를 찾아보십시오.
"dataShapeName": "PTC.SCA.SCO.JobOrder_AP",
"indexedFields": []
4. 새 속성에 대한 데이터베이스 정보를 사용하여 데이터 셰이프에 대한 엔트리를 업데이트합니다.
속성을 색인화하려면 다음 속성을 사용하여 데이터 셰이프의 indexedFields 배열에 속성을 추가합니다.
name – (필수) 속성의 이름입니다.
unique - 속성에 고유한 값이 있어야 하는지 여부를 지정합니다.
identifier - 데이터베이스의 엔티티 이름입니다. 지정하지 않으면 <table_name>_<column_name>_idx 형식으로 값이 자동으로 생성됩니다. 지정한 경우 값이 지정된 값과 자동으로 생성된 값 모두에 대해 고유해야 합니다. 값의 최대 길이는 데이터베이스에서 식별자에 허용하는 최대 길이입니다.
속성이 외래 키인 경우, 다음 속성을 사용하여 데이터 셰이프에 대해 foreignKeys 배열을 추가합니다.
name - 외래 키가 될 현재 데이터 셰이프의 속성 이름입니다.
referenceDataShapeName - 참조된 데이터베이스 테이블의 데이터 셰이프입니다.
referenceFieldName - 참조되는 값을 포함하는 필드 이름입니다.
onDelete - 참조된 데이터 셰이프의 인스턴스가 삭제될 때 현재 데이터 셰이프의 인스턴스에 대해 수행되는 동작입니다.
deleteReference - 현재 데이터 셰이프의 인스턴스가 삭제될 때 참조된 데이터 셰이프의 인스턴스에 대해 수행되는 동작입니다.
삭제 동작에 대한 자세한 내용은 외래 키를 사용하여 삭제 동작 설정 항목을 참조하십시오.
속성에 대한 추가 데이터베이스 제약 조건을 지정하려면 해당 제약 조건을 fields 배열에 엔트리로 추가합니다.
name - 새 속성의 이름입니다. 필수 사항입니다.
length - 데이터베이스의 기본 열 길이와 다른 경우에 대한 새 속성의 열 길이입니다.
notNull - 속성이 null이 아니어야 하는지 여부를 지정합니다.
* 
데이터베이스 열에 고유한 값이 있어야 하는 경우 fields 배열이 아니라 indexedFields 배열의 unique을 사용하여 지정합니다.
이 예에서는 Location의 열 길이가 4000자이고 null 값을 가질 수 없도록 지정하려면 PTC.SCA.SCO.JobOrder_AP 데이터 셰이프에 대한 엔트리를 다음과 같이 업데이트합니다.
{
"dataShapeName": "PTC.SCA.SCO.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "Location",
"length": 4000
"notNull": true
}]
},
5. 저장을 클릭하여 변경 내용을 서비스에 저장합니다.
데이터베이스 정보를 데이터베이스 스키마와 동기화
데이터베이스 정보를 데이터베이스 스키마와 동기화합니다. 자세한 내용은 데이터베이스 정보 및 데이터베이스 스키마 동기화 항목을 참조하십시오.
사용자 정의 속성 채우기
다음 코드는 사용자 정의 속성을 서비스에 포함하여 프로그래밍 방식으로 속성을 채우는 방법을 보여주는 예입니다. 이 코드는 CreateInfoTable 서비스를 사용하여 단일 인포테이블에 PTC.SCA.SCO.JobOrderPTC.SCA.SCO.JobOrder_AP 데이터 셰이프를 병합하고 새 Location 속성을 Montreal 값으로 채웁니다.
var jobOrderDataShapeName = "PTC.SCA.SCO.JobOrder";
var productionManagerThingName = Things["PTC.Factory.LaunchPointConfigurationThing"].GetProductionOrderManagerThingName();
var jobOrders = Things[productionManagerThingName ].CreateInfoTable({
dataShapeName: jobOrderDataShapeName
});
var jobOrder = {};
jobOrder.ID = "" + 121;
jobOrder.WorkType = 1;
jobOrder.Description = "test";
jobOrder.Location = "Montreal";
jobOrders.AddRow(jobOrder);

var newJobOrders = Things[productionManagerThingName ].CreateJobOrders({
JobOrders: jobOrders
});