Benutzerdefinierte Eigenschaften und Data Shapes hinzufügen
Benutzerdefinierte Eigenschaften und Data Shapes hinzufügen
Das Operator Advisor Datenmodell kann erweitert werden, um unternehmensspezifische Daten zum Modell hinzuzufügen, die nicht standardmäßig bereitgestellt werden. Dies wird auf folgende Weise erreicht:
Hinzufügen von benutzerdefinierten Eigenschaften zu vorhandenen Operator Advisor Entitäten durch Aktualisieren des _AP-Data Shape, welches der Entität Operator Advisor zugeordnet ist.
Hinzufügen neuer Entitäten zu Operator Advisor durch Erstellen von benutzerdefinierten Data Shapes und den Diensten, um diese zu verwalten.
Benutzerdefinierte Eigenschaften zu _AP-Data Shapes hinzufügen
Die meisten Entitäten im Operator Advisor Datenmodell verfügen über einen zugehörigen _AP-Data Shape, um benutzerdefinierte Eigenschaften hinzuzufügen. Beispiel: Der Projektauftrag-Data Shape (PTC.SCA.SCO.JobOrder) hat einen zugeordneten PTC.SCA.SCO.JobOrder_AP-Data Shape.
Gehen Sie wie folgt vor, um einer Operator Advisor Entität eine benutzerdefinierte Eigenschaft hinzuzufügen. Im Beispiel wird dem PTC.SCA.SCO.JobOrder_AP-Data Shape eine neue Eigenschaft Location hinzugefügt.
1. Navigieren Sie in ThingWorx Composer zum _AP-Data Shape für die Entität. Navigieren Sie in diesem Beispiel zu PTC.SCA.SCO.JobOrder_AP.
2. Klicken Sie unter Felddefinitionen auf Hinzufügen.
3. Geben Sie im Fensterbereich Neue Felddefinition Folgendes an:
Name – Der Name der Eigenschaft. Geben Sie für dieses Beispiel Location ein.
Basistyp – Der Datentyp für die Eigenschaft. Wählen Sie für dieses Beispiel STRING aus.
4. Klicken Sie auf , um die neue Felddefinition hinzuzufügen.
5. Klicken Sie auf Speichern, um die Aktualisierungen im Data Shape zu speichern.
6. Navigieren Sie zum Datenbankding, welches für Ihr System konfiguriert ist, z.B. PTC.SCA.SCO.PostgresDatabase.
7. Führen Sie unter Dienste den Dienst AddColumn mit den folgenden Eingaben aus:
Suchen Sie nach dem _AP-Data Shape, zu dem Sie die neue Felddefinition hinzugefügt haben, und wählen Sie ihn für dataShapeName aus. Suchen Sie in diesem Beispiel nach PTC.SCA.SCO.JobOrder_AP, und wählen Sie ihn aus.
Geben Sie den Namen der neuen Felddefinition in fieldName ein. Geben Sie für dieses Beispiel Location ein.
Geben Sie für dbInfo die Datenbankinformationen für die neue Spalte ein:
name – Der Name der Spalte, die der Datenbank für die neue Eigenschaft hinzugefügt wird. Erforderlich
length – Spaltenlänge für die neue Spalte, wenn sie von der Standardspaltenlänge für die Datenbank abweicht.
unique – Angabe, ob die Spalte einen eindeutigen Wert aufweisen muss.
notNull – Angabe, ob die Spalte nicht Null sein darf.
Geben Sie für dieses Beispiel Folgendes ein:
{"name":"Location","length":4000}
Der folgende Code ist ein Beispiel dafür, wie die benutzerdefinierte Eigenschaft in einen Dienst integriert werden kann, um das Attribut programmgesteuert zu füllen. Dieser Code verwendet den Dienst CreateInfoTable, um die Data Shapes PTC.SCA.SCO.JobOrder und PTC.SCA.SCO.JobOrder_AP zu einer einzelnen Infotable zusammenzuführen, und füllt das neue Attribut Location mit dem Wert 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
});
Benutzerdefinierte Eigenschaften in ein Mashup einschließen
Die folgenden Schritte stellen eine optimale Vorgehensweise für das Einschließen von Eigenschaften in ein Mashup dar.
1. Fügen Sie dem Data Shape _AP eine benutzerdefinierte Eigenschaft hinzu, und führen Sie den Dienst AddColumn gemäß der Beschreibung im vorherigen Abschnitt aus. Für dieses Beispiel wird weiterhin die benutzerdefinierte Eigenschaft Location verwendet, die dem Data Shape PTC.SCA.SCO.JobOrder_AP im vorherigen Abschnitt hinzugefügt wurde.
2. Erstellen Sie einen neuen Data Shape mit Felddefinitionen sowohl aus dem Data Shape der Haupt-Entität als auch aus dem Data Shape _AP.
Erstellen Sie für dieses Beispiel einen neuen Data Shape mit dem Namen MyJobOrder. Fügen Sie Felddefinitionen für ID (aus dem Data Shape PTC.SCA.SCO.JobOrder) und für Location (aus dem Data Shape PTC.SCA.SCO.JobOrder_AP) hinzu.
3. Navigieren Sie zum Ding PTC.SCA.SCO.ProductionOrderUtils.
4. Fügen Sie unter Dienste einen neuen Dienst hinzu, um Instanzen des in Schritt 2 erstellten Data Shape zu erstellen. Verwenden Sie als Eingabe- und Ausgabeparameter eine Infotable des neuen Data Shape.
Fügen Sie für dieses Beispiel einen neuen Dienst namens CreateMyJobOrder mit einer Infotable des Data Shape MyJobOrder für sowohl die Eingabe- als auch die Ausgabeparameter hinzu. Geben Sie im Dienst-Editor einen ähnliche Code wie den folgenden ein:
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. Wenn Sie den neuen Dienst in einem Mashup verwenden, werden neue Instanzen der Entität erstellt, in denen die benutzerdefinierte Eigenschaft enthalten ist. In diesem Beispiel führt die Verwendung des Dienstes CreateMyJobOrder in einem Mashup dazu, dass neue Projektaufträge erstellt werden, wobei in der Datenbanktabelle PTC.SCA.SCO.JobOrder die Eigenschaft ID und in der Datenbanktabelle PTC.SCA.SCO.JobOrder_AP die benutzerdefinierte Eigenschaft Location gefüllt wird.
Benutzerdefinierte Data Shapes hinzufügen
Um neue Entitäten zu Operator Advisor hinzuzufügen, erstellen Sie einen neuen Data Shape für die Entität mit den erforderlichen Diensten zum Verwalten von Data Shape-Instanzen.
1. Erstellen Sie in ThingWorx Composer einen neuen Data Shape. Benennen Sie für dieses Beispiel den Data Shape MyObject.
2. Klicken Sie unter Felddefinitionen auf Hinzufügen, und geben Sie neue Felddefinitionen für jede Eigenschaft an, die in den Data Shape integriert werden soll.
3. Klicken Sie auf Speichern, um den neuen Data Shape zu speichern.
4. Navigieren Sie zum Datenbankding, welches für Ihr System konfiguriert ist, z.B. PTC.SCA.SCO.PostgresDatabase.
5. Führen Sie unter Dienste den Dienst CreateTable mit den folgenden Eingaben aus:
Suchen Sie in dataShapeName nach dem neuen Data Shape, der in Schritt 1 erstellt wurde, und wählen Sie ihn aus.
Geben Sie für dbInfo ein JSON-Array ein, das die Datenbankinformationen für den Data Shape enthält:
dataShapeName – Name des Data Shape, für den die neue Datenbanktabelle hinzugefügt wird.
indexedFields – Spalten, die indiziert werden sollen. Die Indizierung ermöglicht ein schnelleres Suchen und Sortieren. Mehrere indizierte Felder können in einem Array definiert werden. Jedes Element in dem Array kann die folgenden Eigenschaften enthalten:
name – Name der Spalte. Erforderlich.
unique – Angabe, ob die Spalte einen eindeutigen Wert aufweisen muss.
fields – Jede Spalte, für die eine zusätzliche Angabe erforderlich ist. Mehrere Felder können in einem Array definiert werden. Jedes Element in dem Array kann die folgenden Eigenschaften enthalten:
name – Name der Spalte. Erforderlich.
length – Länge der Spalte, wenn es sich bei der Spalte um einen String handelt und eine andere Länge als die Standardlänge der Datenbank erforderlich ist.
unique – Angabe, ob die Spalte einen eindeutigen Wert aufweisen muss.
notNull – Angabe, ob die Spalte nicht Null sein darf.
foreignKeys – Alle Fremdschlüssel-Spaltendefinitionen für die neue Datenbanktabelle. Mehrere Fremdschlüssel können in einem Array definiert werden. Jedes Element in dem Array muss die folgenden Eigenschaften enthalten:
name – Name der Spalte im aktuellen Data Shape, bei der es sich um einen Fremdschlüssel handeln soll.
referenceDataShapeName – Der Data Shape der referenzierten Datenbanktabelle.
referenceFieldName – Der Name des Felds mit dem referenzierten Wert.
Weitere Informationen finden Sie unter Fremdschlüssel hinzufügen oder entfernen.
Wenn beispielsweise für den neuen Data Shape MyObject keine indizierten Felder jedoch aber ein Fremdschlüssel vorhanden sein sollen und die Länge des Feldes Location auf 4000 Zeichen festgelegt werden soll, geben Sie Folgendes ein:
{
"dataShapeName": "MyObject",
"indexedFields": [],
"foreignKeys": [{"name":"WorkDefinitionUID", "referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition", "referenceFieldName":"UID"}],
"fields": [
{
"name": "Location",
"length": 4000
}
]
}
6. Navigieren Sie zum standardmäßigen Produktionsauftrags-Manager (PTC.SCA.SCO.DefaultProductionOrderManager).
7. Klicken Sie unter Dienste auf Hinzufügen, und erstellen Sie die erforderlichen Dienste, um die Entitäten des neuen Data Shape zu verwalten. Verwenden Sie die vorhandenen CRUD-Dienste für Operator Advisor Entitäten als Modelle.
Erstellungsdienst – Geben Sie für dieses Beispiel CreateMyObjects als Dienstnamen ein. Geben Sie im Dienst-Editor den folgenden Code ein:
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
Löschdienst – Geben Sie für dieses Beispiel DeleteMyObject als Dienstnamen ein. Geben Sie im Dienst-Editor den folgenden Code ein:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
Aktualisierungsdienst – Geben Sie für dieses Beispiel UpdateMyObjects als Dienstnamen ein. Geben Sie im Dienst-Editor den folgenden Code ein:
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
Dienst, um eine einzelne Instanz dieses Data Shape abzurufen – Geben Sie für dieses Beispiel GetMyObject als Dienstnamen ein. Geben Sie im Dienst-Editor den folgenden Code ein:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].GetEntity(params);
Dienst zum Abrufen mehrerer Instanzen dieses Data Shape, optional einschließlich Filter-, Versatz- und Grenzwert-Eingabeparameter – Wenn keine Eingabeparameter angegeben werden, werden alle Instanzen von MyObject zurückgegeben. Geben Sie für dieses Beispiel GetMyObjects als Dienstnamen ein. Geben Sie im Dienst-Editor den folgenden Code ein:
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
8. Klicken Sie auf Speichern, um die neuen Dienste im standardmäßigen Produktionsauftrags-Manager (PTC.SCA.SCO.DefaultProductionOrderManager) zu speichern.