Bausteine > Datenmodell erweitern > Datenmodell-Entitäten benutzerdefinierte Eigenschaften hinzufügen
Datenmodell-Entitäten benutzerdefinierte Eigenschaften hinzufügen
Viele Entitäten im Baustein-Datenmodell verfügen über einen zugehörigen _AP-Data-Shape, um benutzerdefinierte Eigenschaften hinzuzufügen. Beispiel: Der Projektauftrags-Data-Shape (PTC.JobOrder.JobOrder) hat einen zugeordneten Data Shape PTC.JobOrder.JobOrder_AP. In dem in diesem Thema beschriebenen Beispiel wird dem Data Shape PTC.JobOrder.JobOrder_AP eine neue Eigenschaft City hinzugefügt.
Das Hinzufügen benutzerdefinierter Eigenschaften zum Datenmodell 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.JobOrder.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 City ein. Der neue Name darf nicht mit dem Namen eines Felds auf dem ursprünglichen Data Shape übereinstimmen.
Basistyp – Der Datentyp für die Eigenschaft. Wählen Sie für dieses Beispiel STRING aus. Die folgenden Datentypen werden unterstützt:
STRING
NUMBER
INTEGER
BOOLEAN
LONG
TEXT
DATETIME
THINGNAME
THINGSHAPENAME
THINGTEMPLATENAME
USERNAME
SCHEDULE
IMAGELINK
* 
Die Spaltennamen in den Datenbanktabellen entsprechen den Feldnamen aus dem Data Shape in Kleinbuchstaben. Beispiel: Ein Feld mit dem Namen MyPrimaryCity resultiert in einer Spalte mit dem Namen myprimarycity. Daher werden Feldnamen mit denselben Buchstaben, jedoch abweichender Groß-/Kleinschreibung, wie MyName, myName und myname, nicht für denselben Data Shape unterstützt.
4. Klicken Sie auf Häkchen, 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 Manager für die Entität, der Sie die neue Eigenschaft hinzufügen. Navigieren Sie in diesem Beispiel zum Ding PTC.JobOrderImpl.Manager.
2. Erstellen Sie ein Duplikat des Manager-Dings, das Sie anpassen können. Benennen Sie das duplizierte Manager-Ding in diesem Beispiel MyCompany.MyJobOrderImpl.Manager. Verwenden Sie als Wert für Projekt des duplizierten Manager-Dings das Projekt für einen von Ihnen erstellten Baustein. Verwenden Sie für dieses Beispiel einen Baustein, der auf dem Baustein PTC.JobOrderImpl mit einem Projekt namens MyCompany.MyJobOrderImpl basiert. Weitere Informationen finden Sie unter Neue Bausteine erstellen.
3. Registrieren Sie den duplizierten Manager.
a. Navigieren Sie zu dem Ding PTC.Base.Manager.
b. Bearbeiten Sie unter Konfiguration die entsprechende Manager-Zeile in der Konfigurationstabelle DefaultGlobalManagerConfiguration, und legen Sie den Wert managerThingName auf das neue duplizierte Manager-Ding fest, das Sie in Schritt 2 erstellt haben. Aktualisieren Sie für dieses Beispiel die Zeile für PTC.JobOrder.Manager, um MyCompany.MyJobOrderImpl.Manager als managerThingName festzulegen.
c. Klicken Sie auf Speichern, um die Änderungen am Manager-Ding zu speichern.
4. Navigieren Sie zum duplizierten Manager-Ding, das Sie in Schritt 2 erstellt haben. Navigieren Sie in diesem Beispiel zu MyCompany.MyJobOrderImpl.Manager.
5. Suchen Sie unter Dienste nach dem Dienst GetDBInfo und überschreiben Sie ihn.
6. 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.JobOrder.JobOrder_AP",
"indexedFields": []
7. 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 – Name der Spalte. Erforderlich.
unique – Angabe, ob die Eigenschaft einen eindeutigen Wert aufweisen muss
fieldNames – Array, das die Namen der Spalten enthält. Wenn nur eine Spalte angegeben wird, wird ein einzelner Index erstellt. Wenn mehrere Spalten angegeben werden, wird ein zusammengesetzter Index erstellt.
* 
Ein einzelner Index kann erstellt werden, indem name mit einem einzelnen Wert angegeben wird, der der Name der Spalte ist, anstatt einen einzelnen Wert für fieldnames anzugeben. Wenn sowohl name als auch fieldnames angegeben werden, wird name ignoriert, und der Index wird mit den Werten für fieldnames erstellt.
identifier – Der Name der Entität in der Datenbank. Wenn kein Name festgelegt wird, generiert das System den Wert automatisch im Format <Tabellenname>_<Spaltenname1>_<Spaltenname2>_<SpaltennameN>_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
defaultValue – Der Standardwert für die Eigenschaft.
* 
Wenn eine Datenbankspalte einen eindeutigen Wert aufweisen muss, legen Sie dies anhand von unique im Array indexedFields fest und nicht im Array fields.
Aktualisieren Sie den Eintrag für den Data Shape PTC.JobOrder.JobOrder_AP wie folgt, um in diesem Beispiel festzulegen, dass die Spaltenlänge von City 4000 Zeichen beträgt und keinen Null-Wert aufweisen darf:
{
"dataShapeName": "PTC.JobOrder.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "City",
"length": 4000
"notNull": true
}]
},
8. 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, der für jedes Manager-Ding in den Implementierungs-Entwurfsmuster-Bausteinen verfügbar ist, um die Data Shapes PTC.JobOrder.JobOrder und PTC.JobOrder.JobOrder_AP in einer einzelnen Infotable zusammenzuführen, und füllt die neue Eigenschaft City mit dem Wert von Montreal.
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
});
War dies hilfreich?