Personalizzazione di Operator Advisor > Estensione del modello di dati di Operator Advisor > Aggiunta di proprietà personalizzate alle entità di Operator Advisor
Aggiunta di proprietà personalizzate alle entità di Operator Advisor
La maggior parte delle entità presenti nel modello di dati di Operator Advisor presenta una data shape _AP correlata che consente di aggiungere proprietà personalizzate. Ad esempio, la data shape delle commesse (PTC.SCA.SCO.JobOrder) presenta una data shape PTC.SCA.SCO.JobOrder_AP associata. L'esempio riportato in questo argomento aggiunge una nuova proprietà Location alla data shape PTC.SCA.SCO.JobOrder_AP.
L'aggiunta di proprietà personalizzate a Operator Advisor 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.SCA.SCO.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 Location.
Tipo di base - Il tipo di dati per la proprietà. In questo esempio, selezionare STRING.
4. Fare clic su 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 all'oggetto PTC.SCA.SCO.DefaultProductionOrderManager.
2. In Servizi, individuare e sostituire il servizio Get<entity>DBInfo per l'entità a cui si aggiunge la proprietà. In questo esempio, individuare e sostituire il servizio GetJobOrderDBInfo.
3. 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.SCA.SCO.JobOrder_AP",
"indexedFields": []
4. 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 (obbligatorio) - Nome della proprietà.
unique - Specificare se la proprietà deve avere un valore univoco.
identifier - Nome dell'entità nel database. Se non viene specificato, il sistema genera automaticamente il valore nel formato <nome_tabella>_<nome_colonna>_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.
* 
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 Location ha una lunghezza di colonna di 4000 caratteri e non può avere un valore nullo, aggiornare la voce per la data shape PTC.SCA.SCO.JobOrder_AP come segue:
{
"dataShapeName": "PTC.SCA.SCO.JobOrder_AP",
"indexedFields": []
"fields": [{
"name": "Location",
"length": 4000
"notNull": true
}]
},
5. 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 servizio CreateInfoTable per unire le data shape PTC.SCA.SCO.JobOrder e PTC.SCA.SCO.JobOrder_AP in una singola infotable e inserisce il valore di Montreal nella nuova proprietà 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
});