Building block > Estensione del modello di dati > Aggiunta di proprietà personalizzate alle entità del modello di dati
Aggiunta di proprietà personalizzate alle entità del modello di dati
Molte entità nel modello di dati dei building block presentano una data shape _AP correlata che consente di aggiungere proprietà personalizzate. Ad esempio, la data shape delle commesse (PTC.JobOrder.JobOrder) presenta una data shape PTC.JobOrder.JobOrder_AP associata. L'esempio riportato in questo argomento aggiunge una nuova proprietà City alla data shape PTC.JobOrder.JobOrder_AP.
L'aggiunta di proprietà personalizzate al modello di dati richiede diversi passi:
Per un esempio che mostra come completare a livello di programmazione la nuova proprietà personalizzata utilizzando un servizio, vedere Completamento di una proprietà personalizzata.
Aggiungere un campo alla data shape
1. In ThingWorx Composer, passare alla data shape _AP per l'entità. In questo esempio, passare a PTC.JobOrder.JobOrder_AP.
2. In Definizioni campi, fare clic su Aggiungi.
3. Nel riquadro Nuova definizione campo, specificare gli elementi di seguito indicati.
Nome - Il nome della proprietà. In questo esempio, immettere City. Il nuovo nome non può corrispondere al nome dei campi della data shape originale.
Tipo di base - Il tipo di dati per la proprietà. In questo esempio, selezionare STRING. Sono supportati i tipi di dati di seguito indicati.
STRING
NUMBER
INTEGER
BOOLEAN
LONG
TEXT
DATETIME
THINGNAME
THINGSHAPENAME
THINGTEMPLATENAME
USERNAME
SCHEDULE
IMAGELINK
* 
I nomi di colonna nelle tabelle di database corrispondono ai nomi di campo della data shape in lettere minuscole. Ad esempio, un campo denominato MyPrimaryCity restituisce una colonna denominata myprimarycity. Di conseguenza, i nomi di campo con le stesse lettere, ma con maiuscole diverse, ad esempio MyName, myName e myname, non sono supportati nella stessa data shape.
4. Fare clic su Icona Segno di spunta. per aggiungere la nuova definizione di campo.
5. Fare clic su Salva per salvare gli aggiornamenti apportati alla data shape.
Aggiornare le informazioni del database con eventuali vincoli di database
Se la nuova proprietà richiede vincoli di database, attenersi alla procedura descritta di seguito.
1. Passare al manager per l'entità a cui si intende aggiungere la nuova proprietà. In questo esempio, passare all'oggetto PTC.JobOrderImpl.Manager.
2. Creare un duplicato dell'oggetto manager per poterlo personalizzare. In questo esempio, assegnare all'oggetto manager duplicato il nome MyCompany.MyJobOrderImpl.Manager. Per il valore di Progetto nell'oggetto manager duplicato, utilizzare il progetto per un building block creato. In questo esempio si utilizza un building block basato sul building block PTC.JobOrderImpl, che ha un progetto denominato MyCompany.MyJobOrderImpl. Per ulteriori informazioni, vedere Creare un nuovo building block.
3. Registrare il manager duplicato.
a. Passare all'oggetto PTC.Base.Manager.
b. In Configurazione, modificare la riga del manager appropriato nella tabella di configurazione DefaultGlobalManagerConfiguration e impostare il valore di managerThingName sul nuovo oggetto manager duplicato creato al passo 2. In questo esempio, aggiornare la riga per PTC.JobOrder.Manager per impostare MyCompany.MyJobOrderImpl.Manager come managerThingName.
c. Fare clic su Salva per salvare le modifiche apportate all'oggetto manager.
4. Passare all'oggetto manager duplicato creato al passo 2. In questo esempio, passare a MyCompany.MyJobOrderImpl.Manager.
5. In Servizi, individuare e sostituire il servizio GetDBInfo.
6. Nell'editor dello script, scorrere verso il basso fino alla voce per la data shape a cui è stata aggiunta la proprietà. In questo esempio, cercare la seguente voce:
"dataShapeName": "PTC.JobOrder.JobOrder_AP",
"indexedFields": []
7. Aggiornare la voce per la data shape con le informazioni del database per la nuova proprietà.
Se la proprietà deve essere indicizzata, aggiungerla alla matrice indexedFields per la data shape, con le seguenti proprietà:
name - Nome della colonna. Obbligatorio.
unique - Specificare se la proprietà deve avere un valore univoco.
fieldNames - Matrice contenente i nomi delle colonne. Se si specifica una sola colonna, viene creato un indice singolo. Se si specificano più colonne, viene creato un indice composito.
* 
È possibile creare un indice singolo specificando name con un singolo valore corrispondente al nome della colonna anziché specificare un singolo valore per fieldnames. Se si specifica sia name che fieldnames, name viene ignorato e l'indice viene creato utilizzando i valori di fieldnames.
identifier - Nome dell'entità nel database. Se non specificato, il sistema genera automaticamente il valore nel formato <nome_tabella>_<nome_colonna1>_<nome_colonna2>_<nome_colonnaN>_idx. Se specificato, il valore deve essere univoco sia per i valori specificati che per tutti i valori generati automaticamente. La lunghezza massima per il valore è la lunghezza massima consentita dal database per gli identificatori.
Se la proprietà deve essere una chiave esterna, aggiungere una matrice foreignKeys per la data shape, con le seguenti proprietà:
name - Nome della proprietà sulla data shape corrente che fungerà da chiave esterna.
referenceDataShapeName - Data shape della tabella di database referenziata.
referenceFieldName - Nome del campo contenente il valore da referenziare.
onDelete - Cosa accade eventualmente alle istanze della data shape corrente quando vengono eliminate le istanze della data shape referenziata.
deleteReference - Cosa accade eventualmente alle istanze della data shape referenziata quando vengono eliminate le istanze della data shape corrente.
Per ulteriori informazioni sui comportamenti di eliminazione, vedere Impostazione del comportamento di eliminazione con chiavi esterne.
Per specificare ulteriori vincoli di database per la proprietà, aggiungerla come voce in una matrice fields:
name - Nome della nuova proprietà. Obbligatorio.
length - Lunghezza di colonna per la nuova proprietà, se diversa dalla lunghezza di colonna predefinita per il database.
notNull - Specificare se la proprietà non deve essere nulla.
defaultValue - Valore di default della proprietà.
* 
Se una colonna di database deve avere un valore univoco, specificarlo utilizzando unique nella matrice indexedFields anziché nella matrice fields.
In questo esempio, per specificare che City ha una lunghezza di colonna di 4000 caratteri e non può avere un valore nullo, aggiornare la voce per la data shape PTC.JobOrder.JobOrder_AP come segue:
{
"dataShapeName": "PTC.JobOrder.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "City",
"length": 4000
"notNull": true
}]
},
8. Fare clic su Salva per salvare le modifiche al servizio.
Sincronizzare le informazioni del database e lo schema del database
Sincronizzare le informazioni del database con lo schema del database. Per ulteriori informazioni, vedere Sincronizzazione delle informazioni del database e dello schema del database.
Completamento di una proprietà personalizzata
Il codice riportato di seguito offre un esempio di come includere la proprietà personalizzata in un servizio per inserire la proprietà a livello di programmazione. Questo codice utilizza il sevizio CreateInfoTable disponibile in ogni oggetto manager nei building block dello schema di progettazione di implementazione per unire le data shape PTC.JobOrder.JobOrder e PTC.JobOrder.JobOrder_AP in una sola infotable e assegna alla nuova proprietà City il valore di 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
});
È stato utile?