新增自訂內容與資料形式
新增自訂內容與資料形式
Operator Advisor 資料模型可以延伸以將企業特定資料新增至未在出廠時提供的模型中。可使用下列方法來實現此目的:
透過更新與 Operator Advisor 實體相關聯的 _AP 資料形式,將自訂內容新增至現有的 Operator Advisor 實體。
透過建立自訂資料形式與用來對其進行管理的服務,來將新實體新增至 Operator Advisor
新增自訂內容至 _AP 資料形式
Operator Advisor 資料模型中的大多數實體都有相關的 _AP 資料形式,目的是為了新增自訂內容。例如,工作訂單資料形式 (PTC.SCA.SCO.JobOrder) 具有相關的 PTC.SCA.SCO.JobOrder_AP 資料形式。
請遵循下列步驟來將自訂內容新增至 Operator Advisor 實體。此範例說明了如何將新的 Location 內容新增至 PTC.SCA.SCO.JobOrder_AP 資料形式。
1. ThingWorx Composer 中,導覽至此實體的 _AP 資料形式。在此範例中,導覽至 PTC.SCA.SCO.JobOrder_AP
2. 「欄位定義」下,按一下「新增」
3. 「新欄位定義」窗格中,指定下列內容:
「名稱」- 內容的名稱。在此範例中,輸入 Location
「基礎類型」- 內容的資料類型。在此範例中,選取 STRING
4. 按一下 以新增新的欄位定義。
5. 按一下「儲存」以更新對資料形式的更新。
6. 導覽至針對您的系統配置的資料庫物件,例如,PTC.SCA.SCO.PostgresDatabase
7. 「服務」下方,以下列輸入執行 AddColumn 服務︰
針對 dataShapeName,搜尋並選取您新增了新欄位定義的 _AP 資料形式。在此範例中,搜尋並選取 PTC.SCA.SCO.JobOrder_AP
針對 fieldName,輸入新欄位定義的名稱。在此範例中,輸入 Location
針對 dbInfo,輸入新欄的資料庫資訊:
name - 新增至新內容資料庫的欄名稱。必要
length - 新欄的欄長度 (如果其不同于資料庫的預設欄長度)。
unique - 指定欄是否必須有具唯一性的值。
notNull - 指定欄是否不得為空值。
在此範例中,輸入下列內容:
{"name":"Location","length":4000}
下列程式碼範例示範如何在服務中包括自訂內容,進而以程式化的方式填入此屬性:此程式碼使用 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
});
在混搭中包括自訂內容
下列步驟提供了使用「在混搭中包括內容」的最佳作法。
1. 將自訂內容新增至 _AP 資料形式,並執行 AddColumn 服務,如前一節所述。在此範例中,我們將繼續使用上一節中新增至 PTC.SCA.SCO.JobOrder_AP 資料形式的自訂 Location 內容。
2. 從主要實體資料形式與 _AP 資料形式建立具有欄位定義的新資料形式。
在此範例中,建立名為 MyJobOrder 的新資料形式。為 ID (從 PTC.SCA.SCO.JobOrder 資料形式) 與 Location (從 PTC.SCA.SCO.JobOrder_AP 資料形式) 新增欄位定義。
3. 導覽至 PTC.SCA.SCO.ProductionOrderUtils 物件。
4. 「服務」下新增服務以便為步驟 2 中建立之資料形式建立實例。針對輸入與輸出參數使用新資料形式的資料負載。
在此範例中,新增名為 CreateMyJobOrder 的新服務,並且輸入與輸出參數都具有 MyJobOrder 資料形式的資料負載。在服務編輯器中,輸入與以下內容類似的程式碼:
var productionManagerThingName = Things["PTC.Factory.LaunchPointConfigurationThing"].GetProductionOrderManagerThingName();
var newJobOrders = Things[productionManagerThingName].CreateJobOrders({
JobOrders: myJobOrders
});
//Put new job orders in a new info table of MyJobOrder in order to filter the return attribute, this is not required.
var params = {
infoTableName : "InfoTable",
dataShapeName : "MyJobOrder"
};
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var tableLength = newJobOrders.rows.length;
for (var x=0; x < tableLength; x++) {
var row = newJobOrders.rows[x];
result.AddRow(row);
}
5. 在混搭中使用新服務會透過顯示的自訂內容建立實體的新實例。在此範例中,在混搭中使用 CreateMyJobOrder 服務會建立新的工作訂單,且該工作訂單會透過在 PTC.SCA.SCO.JobOrder 資料庫表格中填入的 ID 內容以及在 PTC.SCA.SCO.JobOrder_AP 資料庫表格中填入的 Location 內容建立。
新增自訂資料形式
欲將新實體新增至 Operator Advisor,請為具有必要服務的實體建立新資料形式,以管理此資料形式的實例。
1. ThingWorx Composer 中,建立新資料形式。在此範例中,將此資料形式命名為 MyObject
2. 「欄位定義」下,按一下「新增」,並為要包括在此資料形式中的每個內容指定新的欄位定義。
3. 按一下「儲存」以儲存新資料形式。
4. 導覽至針對您的系統配置的資料庫物件,例如,PTC.SCA.SCO.PostgresDatabase
5. 「服務」下方,以下列輸入執行 CreateTable 服務︰
針對 dataShapeName,搜尋並選取在步驟 1 中建立的新資料形式。
針對 dbInfo,輸入包含資料形式之資料庫資訊的 JSON 陣列:
dataShapeName - 要新增新資料庫表格之資料形式的名稱。
indexedFields - 要建立索引的欄。索引有助於加快搜尋及排序。可在陣列中定義多個索引欄位。陣列中的每個元素都可以包含下列內容:
name - 欄的名稱。必填。
unique - 指定欄是否必須有具唯一性的值。
fields - 需要額外一些規格的任何欄。可在陣列中定義多個欄位。陣列中的每個元素都可以包含下列內容:
name - 欄的名稱。必填。
length - 欄的長度 (欄為 String,且所需長度並非資料庫預設長度時)。
unique - 指定欄是否必須有具唯一性的值。
notNull - 指定欄是否不得為空值。
foreignKeys - 新資料庫表格的任何外部索引鍵欄定義。可在陣列中定義多個外部索引鍵。陣列中的每個元素都必須包含下列內容:
name - 目前資料形式上要成為外部索引鍵的欄名稱。
referenceDataShapeName - 參考資料庫表格的資料形式。
referenceFieldName - 包含所參考值的欄位名稱。
若需進一步資訊,可參閱 新增或移除外部索引鍵
例如,若要使新的 MyObject 資料形式沒有索引欄位,有一個外部索引鍵,並將 Location 欄位的長度設定為 4000 個字元,請輸入下列內容:
{
"dataShapeName": "MyObject",
"indexedFields": [],
"foreignKeys": [{"name":"WorkDefinitionUID", "referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition", "referenceFieldName":"UID"}],
"fields": [
{
"name": "Location",
"length": 4000
}
]
}
6. 導覽至預設生產訂單管理員 (PTC.SCA.SCO.DefaultProductionOrderManager)。
7. 「服務」下方,按一下「新增」,並建立必要的服務來管理新資料形式的實體。將 Operator Advisor 實體的現有 CRUD 服務作為模型使用。
建立服務。在此範例中,輸入 CreateMyObjects 作為服務名稱。在服務編輯器中,輸入下列程式碼:
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
刪除服務。在此範例中,輸入 DeleteMyObject 作為服務名稱。在服務編輯器中,輸入下列程式碼:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
更新服務。在此範例中,輸入 UpdateMyObjects 作為服務名稱。在服務編輯器中,輸入下列程式碼:
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
一種服務,用來擷取此資料形式的個別實例。在此範例中,輸入 GetMyObject 作為服務名稱。在服務編輯器中,輸入下列程式碼:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].GetEntity(params);
一種服務,用來擷取此資料形式的多個實例,其中可包括 filter、offset 及 limit 輸入參數。如果未指定任何輸入參數,則會傳回 MyObject 的所有實例。在此範例中,輸入 GetMyObjects 作為服務名稱。在服務編輯器中,輸入下列程式碼:
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
8. 按一下「儲存」以儲存預設生產訂單管理員 (PTC.SCA.SCO.DefaultProductionOrderManager) 中的新服務。