Operator Advisor anpassen > Operator Advisor Datenmodell erweitern > Operator Advisor Entitäten benutzerdefinierte Eigenschaften hinzufügen
Operator Advisor Entitäten benutzerdefinierte Eigenschaften 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. In dem in diesem Thema beschriebenen Beispiel wird dem Data Shape PTC.SCA.SCO.JobOrder_AP eine neue Eigenschaft Location hinzugefügt.
Das Hinzufügen von benutzerdefinierten Eigenschaften zu Operator Advisor umfasst mehrere Schritte:
Ein Beispiel für das programmgesteuerte Füllen der neuen benutzerdefinierten Eigenschaft anhand eines Dienstes finden Sie unter Benutzerdefinierte Eigenschaften füllen.
Dem Data Shape ein Feld hinzufügen
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.
Datenbankinformationen mit jeglichen Datenbankbeschränkungen aktualisieren
Wenn die neue Eigenschaft Datenbankbeschränkungen erfordert, führen Sie die folgenden Schritte aus:
1. Navigieren Sie zum Ding PTC.SCA.SCO.DefaultProductionOrderManager.
2. Suchen Sie unter Dienste den Dienst Get<entity>DBInfo für die Entität, der Sie die Eigenschaft hinzufügen, und überschreiben Sie ihn. Suchen Sie für dieses Beispiel den Dienst GetJobOrderDBInfo, und überschreiben Sie ihn.
3. Scrollen Sie im Skripteditor nach unten zu dem Eintrag für den Data Shape, dem Sie die Eigenschaft hinzugefügt haben. Suchen Sie in diesem Beispiel nach dem folgenden Eintrag:
"dataShapeName": "PTC.SCA.SCO.JobOrder_AP",
"indexedFields": []
4. Aktualisieren Sie den Eintrag für den Data Shape mit den Datenbankinformationen für die neue Eigenschaft.
Wenn die Eigenschaft indiziert werden soll, fügen Sie sie dem Array indexedFields für den Data Shape mit den folgenden Angaben hinzu:
name (erforderlich) – Name der Eigenschaft
unique – Angabe, ob die Eigenschaft einen eindeutigen Wert aufweisen muss
identifier – Der Name der Entität in der Datenbank. Wenn kein Name festgelegt wird, generiert das System den Wert automatisch im Format <Tabellenname>_<Spaltenname>_idx. Wenn der Name festgelegt wird, muss dieser sowohl für festgelegte Werte als auch für alle automatisch generierten Werte eindeutig sein. Die maximale Länge für den Wert entspricht der in der Datenbank zulässigen maximalen Länge von IDs.
Wenn es sich bei der Eigenschaft um einen Fremdschlüssel handeln soll, fügen Sie für den Data Shape ein Array foreignKeys mit den folgenden Eigenschaften hinzu:
name – Name der Eigenschaft 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.
onDelete – Verhalten des aktuellen Data Shape (sofern überhaupt reagiert wird), wenn Instanzen des referenzierten Data Shape gelöscht werden
deleteReference – Verhalten des referenzierten Data Shape (sofern überhaupt reagiert wird), wenn Instanzen des aktuellen Data Shape gelöscht werden
Weitere Informationen zum Verhalten bei Löschvorgängen finden Sie unter Löschverhalten für Fremdschlüssel festlegen.
Um zusätzliche Datenbankbeschränkungen für die Eigenschaft festzulegen, fügen Sie sie als Eintrag in einem Array fields hinzu:
name – Der Name der neuen Eigenschaft. Erforderlich.
length – Spaltenlänge für die neue Eigenschaft, wenn sie von der Standardspaltenlänge für die Datenbank abweicht
notNull – Angabe, ob die Eigenschaft nicht Null sein darf
* 
Wenn eine Datenbankspalte einen eindeutigen Wert aufweisen muss, legen Sie dies anhand von unique im Array indexedFields fest und nicht im Array fields.
Um in diesem Beispiel festzulegen, dass die Spaltenlänge von Location 4000 Zeichen beträgt und keinen Null-Wert aufweisen darf, aktualisieren Sie den Eintrag für den Data Shape PTC.SCA.SCO.JobOrder_AP wie folgt:
{
"dataShapeName": "PTC.SCA.SCO.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "Location",
"length": 4000
"notNull": true
}]
},
5. Klicken Sie auf Speichern, um die Änderungen an dem Dienst zu speichern.
Datenbankinformationen mit Datenbankschema synchronisieren
Synchronisieren Sie die Datenbankinformationen mit dem Datenbankschema. Weitere Informationen finden Sie unter Datenbankinformationen mit Datenbankschema synchronisieren.
Benutzerdefinierte Eigenschaften füllen
Der folgende Code ist ein Beispiel dafür, wie die benutzerdefinierte Eigenschaft in einen Dienst integriert werden kann, um die Eigenschaft programmgesteuert zu füllen. Dieser Code verwendet den Dienst CreateInfoTable, um die Data Shapes PTC.SCA.SCO.JobOrder und PTC.SCA.SCO.JobOrder_AP in einer einzelnen Infotable zusammenzuführen, und füllt die neue Eigenschaft 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
});