建構區塊 > 延伸資料模型 > 將自訂內容新增至資料模型實體
將自訂內容新增至資料模型實體
建構區塊資料模型中的許多實體都有相關的 _AP 資料形式,目的是為了新增自訂內容。例如,工作單資料形式 (PTC.JobOrder.JobOrder) 具有相關的 PTC.JobOrder.JobOrder_AP 資料形式。本主題中的範例說明了如何將新的 City 內容新增至 PTC.JobOrder.JobOrder_AP 資料形式。
將自訂內容新增至資料模型涉及多個步驟:
如需有關使用服務以程式方式填入新自訂內容的範例,請參閱填充自訂內容
將欄位新增至資料形式
1. ThingWorx Composer 中,導覽至此實體的 _AP 資料形式。在此範例中,導覽至 PTC.JobOrder.JobOrder_AP
2. 「欄位定義」下,按一下「新增」
3. 「新欄位定義」窗格中,指定下列內容:
「名稱」- 內容的名稱。在此範例中,輸入 City。新名稱不能與原始資料形式上任何欄位的名稱相符。
「基礎類型」- 內容的資料類型。在此範例中,選取 STRING。支援下列資料類型:
STRING
NUMBER
INTEGER
BOOLEAN
LONG
TEXT
DATETIME
THINGNAME
THINGSHAPENAME
THINGTEMPLATENAME
USERNAME
SCHEDULE
IMAGELINK
* 
資料庫表格中的欄名稱是來自資料形式的欄位名稱,且為小寫。例如,名為 MyPrimaryCity 的欄位會產生名為 myprimarycity 的欄。因此,相同的資料形式不支援具有相同字母但大小寫不同的欄位名稱,例如 MyNamemyNamemyname
4. 按一下 核取標記圖示。 以新增新的欄位定義。
5. 按一下「儲存」以更新對資料形式的更新。
以任何資料庫條件約束更新資料庫資訊
如果新內容需要任何資料庫條件約束,請完成下列步驟:
1. 導覽至您要為其新增內容之實體的管理員。在此範例中,導覽至 PTC.JobOrderImpl.Manager 物件。
2. 建立可進行自訂的管理員物件複本。在此範例中,將複製的管理員物件命名為 MyCompany.MyJobOrderImpl.Manager。針對重複管理員物件上的「專案」值,請使用您所建立之建構區塊的專案。在此範例中,您將使用以名為 MyCompany.MyJobOrderImpl 之專案的 PTC.JobOrderImpl 建構區塊為基礎的建構區塊。如需詳細資訊,請參閱建立新的建構區塊
3. 註冊複製的管理員。
a. 導覽至 PTC.Base.Manager 物件。
b. 「組態」下,編輯 DefaultGlobalManagerConfiguration 組態表中相應的管理員列,並將 managerThingName 值設定為您在步驟 2 中建立之新的管理員物件複本。在此範例中,更新 PTC.JobOrder.Manager 的列,以將 MyCompany.MyJobOrderImpl.Manager 設定為 managerThingName
c. 按一下「儲存」,儲存管理員物件的變更。
4. 導覽至您在步驟 2 中建立之管理員物件複本。在此範例中,導覽至 MyCompany.MyJobOrderImpl.Manager
5. 「服務」下,尋找並覆寫 GetDBInfo 服務。
6. 在指令集編輯器中,向下捲動至已新增內容之資料形式的項目。在此範例中,尋找下列項目:
"dataShapeName": "PTC.JobOrder.JobOrder_AP",
"indexedFields": []
7. 以新內容的資料庫資訊更新資料形式的項目。
如果要對內容進行索引,請將其新增至資料形式的 indexedFields 陣列,並附帶下列內容:
name - 欄的名稱。必填。
unique - 指定內容是否必須有具唯一性的值。
fieldNames - 包含欄名稱的陣列。如果僅指定了一欄,則會建立單一索引。如果指定了多個欄,則會建立複合索引。
* 
透過為 name 指定單一值 (欄名稱),而不是為 fieldnames 指定單一值,可以建立單一索引。如果同時指定 namefieldnames,則會略過 name,且會使用 fieldnames 值建立索引。
identifier - 資料庫中實體的名稱。如果未指定,則系統會以 <table_name>_<column_name1>_<column_name2>_<column_nameN>_idx 格式自動產生值。如果已指定,則該值必須具唯一性,無論對於指定值還是任何自動產生的值。值的最大長度是資料庫所允許的識別元最大長度。
如果內容將作為外部索引鍵,請將其新增至資料形式的 foreignKeys 陣列,並附帶下列內容:
name - 目前資料形式上要成為外部索引鍵的內容的名稱。
referenceDataShapeName - 參考資料庫表格的資料形式。
referenceFieldName - 包含所參考值的欄位名稱。
onDelete - 當刪除所參考資料形式的實例時,會對目前資料形式的實例產生哪些影響。
deleteReference - 當刪除目前資料形式的實例時,會對所參考資料形式的實例產生哪些影響。
如需有關刪除行為的詳細資訊,請參閱使用外部索引鍵設定刪除行為
欲為內容指定其他資料庫條件約束,請將其新增為 fields 陣列中的項目:
name - 新內容的名稱。必填。
length - 新內容的欄長度 (如果其不同于資料庫的預設欄長度)。
notNull - 指定內容是否不得為空值。
defaultValue - 內容的預設值。
* 
如果資料庫欄必須有具唯一性的值,請使用 indexedFields 陣列而不是 fields 陣列中的 unique 指定此值。
在此範例中,若要指定 City 欄長度為 4000 個字元且不能包含空值,請依如下所示更新 PTC.JobOrder.JobOrder_AP 資料形式的項目:
{
"dataShapeName": "PTC.JobOrder.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "City",
"length": 4000
"notNull": true
}]
},
8. 按一下「儲存」,儲存服務組態的變更。
同步處理資料庫資訊與資料庫結構描述
同步處理資料庫資訊與資料庫結構描述。若需進一步資訊,可參閱 同步處理資料庫資訊與資料庫結構描述
填充自訂內容
下列程式碼範例示範如何在服務中包括自訂屬性,進而以程式化的方式填入屬性。此程式碼會使用實行設計模式建構區塊中每個管理員物件上提供的 CreateInfoTable 服務,將 PTC.JobOrder.JobOrderPTC.JobOrder.JobOrder_AP 資料形式合併至單一資料負載,並使用 Montreal 的值填充新的 City 內容。
var jobOrderDataShapeName = "PTC.JobOrder.JobOrder";
var jobOrderManagerThingName = me.GetJobOrderManager();
var jobOrders = Things[jobOrderManagerThingName ].CreateInfoTable({
dataShapeName: jobOrderDataShapeName
});
var jobOrder = {};
jobOrder.ID = "" + 121;
jobOrder.WorkType = 1;
jobOrder.Description = "test";
jobOrder.City = "Montreal";
jobOrders.AddRow(jobOrder);

var newJobOrders = Things[jobOrderManagerThingName ].CreateJobOrders({
JobOrders: jobOrders
});
這是否有幫助?