自訂 Operator Advisor > 延伸 Operator Advisor 資料模型 > 將自訂內容新增至 Operator Advisor 實體
將自訂內容新增至 Operator Advisor 實體
Operator Advisor 資料模型中的大多數實體都有相關的 _AP 資料形式,目的是為了新增自訂內容。例如,工作訂單資料形式 (PTC.SCA.SCO.JobOrder) 具有相關的 PTC.SCA.SCO.JobOrder_AP 資料形式。本主題中的範例說明了如何將新的 Location 內容新增至 PTC.SCA.SCO.JobOrder_AP 資料形式。
將自訂內容新增至 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 - 指定內容是否不得為空值。
* 
如果資料庫欄必須有具唯一性的值,請使用 indexedFields 陣列而不是 fields 陣列中的 unique 指定此值。
在此範例中,若要指定 Location 欄長度為 4000 個字元且不能包含空值,請依如下所示更新 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 資料形式合併至單一資料負載,並將 Montreal 值填入新 Location 內容。
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
});