Aggiunta di proprietà e data shape personalizzate
Aggiunta di proprietà e data shape personalizzate
Il modello di dati di Operator Advisor può essere esteso per aggiungere dati specifici dell'azienda non forniti per default al modello. Questo obiettivo può essere raggiunto nei modi di seguito indicati.
Aggiungendo proprietà personalizzate alle entità di Operator Advisor esistenti tramite aggiornamento della data shape _AP associata all'entità di Operator Advisor.
Aggiungendo nuove entità a Operator Advisor tramite creazione di data shape personalizzate e relativi servizi di gestione.
Aggiunta di proprietà personalizzate a data shape _AP
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.
Per aggiungere una proprietà personalizzata a un'entità di Operator Advisor, attenersi alla procedura descritta di seguito. Nell'esempio viene aggiunta una nuova proprietà Location alla data shape PTC.SCA.SCO.JobOrder_AP.
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.
6. Passare all'oggetto database configurato per il sistema, ad esempio PTC.SCA.SCO.PostgresDatabase.
7. In Servizi, eseguire il servizio AddColumn con gli input indicati di seguito.
Per dataShapeName, cercare e selezionare la data shape _AP a cui è stata aggiunta la nuova definizione di campo. In questo esempio, cercare e selezionare PTC.SCA.SCO.JobOrder_AP.
Per fieldName, immettere il nome della nuova definizione di campo. In questo esempio, immettere Location.
Per dbInfo, immettere le informazioni di database per la nuova colonna.
name - Nome della colonna da aggiungere al database per la nuova proprietà. Obbligatorio
length - Lunghezza della nuova colonna, se diversa dalla lunghezza di colonna di default per il database.
unique - Specificare se la colonna deve avere un valore univoco.
notNull - Specificare se la colonna non deve essere nulla.
In questo esempio, immettere:
{"name":"Location","length":4000}
Il codice riportato di seguito mostra come includere la proprietà personalizzata in un servizio per completare l'attributo 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 nuovo attributo Location con il valore di 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
});
Inclusione di proprietà personalizzate in un mashup
I passi riportati di seguito forniscono una best practice per l'inclusione di proprietà in un mashup.
1. Aggiungere una proprietà personalizzata alla data shape _AP ed eseguire il servizio AddColumn, come descritto nella sezione precedente. In questo esempio, si prosegue con la proprietà personalizzata Location aggiunta alla data shape PTC.SCA.SCO.JobOrder_AP nella sezione precedente.
2. Creare una nuova data shape con definizioni di campo sia dalla data shape dell'entità principale che dalla data shape _AP.
In questo esempio, creare una nuova data shape denominata MyJobOrder. Aggiungere le definizioni di campo per ID (dalla data shape PTC.SCA.SCO.JobOrder) e Location (dalla data shape PTC.SCA.SCO.JobOrder_AP).
3. Passare all'oggetto PTC.SCA.SCO.ProductionOrderUtils.
4. In Servizi, aggiungere un nuovo servizio per creare istanze della data shape creata al passo 2. Per i parametri di input e output, utilizzare una infotable della nuova data shape.
In questo esempio, aggiungere un nuovo servizio denominato CreateMyJobOrder, con una infotable della data shape MyJobOrder per i parametri di input e di output. Nell'editor servizi, immettere codice simile a quello riportato di seguito:
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. L'utilizzo del nuovo servizio in un mashup determina la creazione di nuove istanze dell'entità con la proprietà personalizzata presente. In questo esempio, l'utilizzo del servizio CreateMyJobOrder in un mashup determina la creazione di nuove commesse con la proprietà ID inserita nella tabella di database PTC.SCA.SCO.JobOrder e la proprietà personalizzata Location inserita nella tabella di database PTC.SCA.SCO.JobOrder_AP.
Aggiunta di data shape personalizzate
Per aggiungere nuove entità a Operator Advisor, creare una nuova data shape per l'entità con i servizi necessari per gestire le istanze della data shape.
1. In ThingWorx Composer, creare una nuova data shape. In questo esempio, denominare la data shape MyObject.
2. In Definizioni campi, fare clic su Aggiungi e specificare le nuove definizioni di campo per ciascuna proprietà da includere nella data shape.
3. Fare clic su Salva per salvare la nuova data shape.
4. Passare all'oggetto database configurato per il sistema, ad esempio PTC.SCA.SCO.PostgresDatabase.
5. In Servizi, eseguire il servizio CreateTable con gli input indicati di seguito.
Per dataShapeName, cercare e selezionare la nuova data shape creata al passo 1.
Per dbInfo, immettere una matrice JSON contenente le informazioni di database per la data shape.
dataShapeName - Nome della data shape per la quale viene aggiunta la nuova tabella di database.
indexedFields - Colonne da indicizzare. L'indicizzazione consente di eseguire ricerche e ordinamento più rapidamente. È possibile definire più campi indicizzati in una matrice. Ogni elemento nella matrice può contenere le proprietà riportate di seguito.
name - Nome della colonna. Obbligatorio.
unique - Specificare se la colonna deve avere un valore univoco.
fields - Qualsiasi colonna per cui è necessario specificare altri valori. È possibile definire più campi in una matrice. Ogni elemento nella matrice può contenere le proprietà riportate di seguito.
name - Nome della colonna. Obbligatorio.
length - Lunghezza della colonna, se la colonna è di tipo String e occorre specificare una lunghezza diversa dalla lunghezza di default del database.
unique - Specificare se la colonna deve avere un valore univoco.
notNull - Specificare se la colonna non deve essere nulla.
foreignKeys - Qualsiasi definizione di colonna di chiave esterna per la nuova tabella di database. È possibile definire più chiavi esterne in una matrice. Ogni elemento nella matrice deve contenere le proprietà riportate di seguito.
name - Nome della colonna 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.
Per ulteriori informazioni, vedere Aggiunta o rimozione di chiavi esterne.
Ad esempio, perché la nuova data shape MyObject non presenti campi indicizzati, una chiave esterna e l'impostazione della lunghezza del campo Location su 4000 caratteri, immettere:
{
"dataShapeName": "MyObject",
"indexedFields": [],
"foreignKeys": [{"name":"WorkDefinitionUID", "referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition", "referenceFieldName":"UID"}],
"fields": [
{
"name": "Location",
"length": 4000
}
]
}
6. Passare al manager degli ordini di produzione di default (PTC.SCA.SCO.DefaultProductionOrderManager).
7. In Servizi, fare clic su Aggiungi e creare i servizi necessari per gestire le entità della nuova data shape. Utilizzare i servizi CRUD esistenti per le entità Operator Advisor come modelli.
Un servizio di creazione. In questo esempio, immettere CreateMyObjects come nome del servizio. Nell'editor servizi, immettere il seguente codice:
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
Un servizio di eliminazione. In questo esempio, immettere DeleteMyObject come nome del servizio. Nell'editor servizi, immettere il seguente codice:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
Un servizio di aggiornamento. In questo esempio, immettere UpdateMyObjects come nome del servizio. Nell'editor servizi, immettere il seguente codice:
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
Un servizio per recuperare una singola istanza di questa data shape. In questo esempio, immettere GetMyObject come nome del servizio. Nell'editor servizi, immettere il seguente codice:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].GetEntity(params);
Un servizio per recuperare più istanze di questa data shape, includendo facoltativamente i parametri di input di filtro, offset e limite. Se non vengono specificati parametri di input, vengono restituite tutte le istanze di MyObject. In questo esempio, immettere GetMyObjects come nome del servizio. Nell'editor servizi, immettere il seguente codice:
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
8. Fare clic su Salva per salvare i nuovi servizi nel manager degli ordini di produzione di default (PTC.SCA.SCO.DefaultProductionOrderManager).