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.JobOrder 및 PTC.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
});