Building block > Estensione del modello di dati > Aggiunta di entità personalizzate al modello di dati
Aggiunta di entità personalizzate al modello di dati
L'aggiunta di nuove entità al modello di dati richiede diversi passi:
Creare un nuovo building block
Per creare un nuovo building block, attenersi alla procedura descritta di seguito.
1. Creare un nuovo progetto. Utilizzare un prefisso univoco per il progetto, ad esempio il nome dell'azienda. Il prefisso PTC è riservato alle entità fornite da PTC. In questo esempio, creare un progetto denominato MyCompany.MyBuildingBlock. Per ogni nuovo modello di oggetto, oggetto o altra entità creata per questo building block, aggiungere il nuovo progetto come valore di Progetto nella pagina Informazioni generali dell'entità.
2. Creare un modello di oggetto punto di entrata nel progetto. In questo esempio, assegnare al nuovo modello di oggetto il nome MyCompany.MyBuildingBlock.EntryPoint_TT. L'opzione Modello di oggetto di base da utilizzare dipende dal tipo di nuovo building block.
Se il building block si estende da un building block di PTC, utilizzare il modello di oggetto punto di entrata del building block di PTC.
Se il building block è un building block astratto, utilizzare il modello di oggetto PTC.Base.ComponentEntryPoint_TT.
Se il building block è un building block di implementazione, utilizzare il modello di oggetto PTC.DefaultConfiguration.EntryPoint_TT.
Se il building block è un building block standard, utilizzare il modello di oggetto PTC.Base.ComponentEntryPoint_TT.
Se il building block è un building block dell'interfaccia utente, utilizzare il modello di oggetto PTC.Base.ComponentEntryPoint_TT.
3. Creare un oggetto punto di entrata nel progetto che utilizza il modello di oggetto creato al passo 2 come Modello di oggetto di base. In questo esempio, assegnare al nuovo oggetto il nome MyCompany.MyBuildingBlock.EntryPoint.
4. Creare un oggetto manager per il building block.
Se il building block si estende da un building block di PTC, attenersi alla procedura descritta di seguito.
1. Creare un modello di oggetto nel progetto che utilizza il modello di oggetto manager del building block di PTC come Modello di oggetto di base.
2. Creare un oggetto nel progetto che utilizza il modello di oggetto creato al passo a come Modello di oggetto di base. In questo esempio, assegnare al nuovo oggetto il nome MyCompany.MyBuildingBlock.Manager.
Se il building block non si estende da un building block di PTC, attenersi alla procedura descritta di seguito.
1. Creare una thing shape nel progetto per contenere le definizioni di servizio per la gestione della nuova entità. In questo esempio, assegnare alla nuova thing shape il nome MyCompany.MyBuildingBlock.Managment_TS.
2. Creare un modello di oggetto nel progetto che utilizza PTC.Base.CommonManager_TT come Modello di oggetto di base. In questo esempio, assegnare al nuovo modello di oggetto il nome MyCompany.MyBuildingBlock.Manager_TT.
3. Aggiungere la thing shape creata al passo a al campo Shape implementate nel modello di oggetto creato al passo b.
4. Creare un oggetto nel progetto che utilizza il modello di oggetto creato al passo b come Modello di oggetto di base. In questo esempio, assegnare al nuovo oggetto il nome MyCompany.MyBuildingBlock.Manager e utilizzare MyCompany.MyBuildingBlock.Manager_TT come Modello di oggetto di base.
5. Se il building block si estende da un building block di PTC, aggiungere eventuali configurazioni dell'oggetto manager del building block originale all'oggetto manager del nuovo building block.
a. Passare all'oggetto manager creato al passo 4, in questo esempio MyCompany.MyBuildingBlock.Manager.
b. In Configurazione, aggiungere le stesse configurazioni disponibili nella pagina Configurazione dell'oggetto manager del building block originale.
6. Registrare l'oggetto manager per il building block.
a. Passare all'oggetto PTC.Base.Manager.
b. In Configurazione, fare clic su Aggiungi per la tabella di configurazione DefaultGlobalManagerConfiguration.
Per Nome, immettere un nome per il manager personalizzato, ad esempio MyCompany.MyBuildingBlock.Manager.
Per Valore, cercare e selezionare l'oggetto manager personalizzato creato al passo 4.
c. Fare clic su Aggiungi per aggiungere il manager personalizzato alla tabella di configurazione.
d. Fare clic su Salva per salvare gli aggiornamenti apportati all'oggetto manager.
Creare una data shape per la nuova entità
Per creare una data shape per la nuova entità, attenersi alla procedura descritta di seguito.
1. In ThingWorx Composer, creare una nuova data shape. Aggiungere la data shape al progetto per il nuovo building block. In questo esempio, assegnare alla data shape il nome MyObject.
2. In Definizioni campi, fare clic su Aggiungi e specificare le nuove definizioni di campo per ciascuna proprietà da includere nella data shape.
a. Designare un campo come chiave principale selezionando la casella di controllo Chiave principale per il campo.
b. Impostare il Tipo di base del campo chiave principale su LONG. Se il campo chiave principale è un tipo di dati LONG, i valori di questo campo vengono generati automaticamente e la logica per incrementare il valore viene gestita dal database. Se è selezionato un Tipo di base diverso, è necessario gestire la logica per l'univocità della chiave principale.
Per allinearsi al modello di dati del building block, aggiungere un campo UID, con Tipo di base LONG, quindi selezionare la casella di controllo Chiave principale.
3. Fare clic su Salva per salvare la nuova data shape.
* 
Quando la tabella di database viene creata per la data shape, il nome della tabella di database corrisponde al nome della data shape, meno l'eventuale prefisso, in tutte lettere minuscole. Ad esempio, se la data shape è denominata ABC.MyObject, il nome della tabella di database è myobject. Poiché i prefissi non sono inclusi nei nomi delle tabelle di database, non sono supportati più nomi di data shape che determinerebbero lo stesso nome della tabella di database, ad esempio ABC.MyObject e PTC.JobOrder.MyObject.
Analogamente, i nomi di colonna nella tabella di database corrispondono ai nomi di campo della data shape in lettere minuscole. Ad esempio, un campo denominato MyPrimaryLocation restituisce una colonna denominata myprimarylocation. 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.
Aggiornare le informazioni del database per includere la nuova data shape
Aggiornare le informazioni del database per includere la nuova data shape. A tal fine, è possibile aggiungere le informazioni di database per l'entità al servizio GetDBInfo nell'oggetto manager per il nuovo building block (MyCompany.MyBuildingBlock.Manager).
Per aggiungere le informazioni del database per la nuova data shape a un servizio GetDBInfo esistente, procedere nel modo di seguito riportato.
1. Passare all'oggetto manager per il nuovo building block (MyCompany.MyBuildingBlock.Manager).
2. In Servizi, individuare e sostituire il servizio GetDBInfo.
3. Nell'editor dello script, aggiungere una voce per la nuova data shape come matrice, in modo analogo alle voci di data shape esistenti. Includere le informazioni del 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.
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 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.
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.
notNull - Specificare se la colonna non deve essere nulla.
defaultValue - Valore di default della proprietà.
* 
Se una colonna deve avere un valore univoco, specificarlo utilizzando unique nella matrice indexedFields anziché nella matrice fields.
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.
identifier - Nome dell'entità nel database. Se non viene specificato, il sistema genera automaticamente il valore nel formato <nome_tabella>_<nome_colonna>_fk. 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.
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.
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
}
]
}
4. Fare clic su Fine, quindi su Salva per salvare il servizio aggiornato.
Creare i servizi CRUD
Creare i servizi CRUD necessari per la gestione di istanze della nuova data shape.
1. Nella thing shape di gestione per il building block (MyCompany.MyBuildingBlock.Managment_TS), in Servizi, fare clic su Aggiungi e creare i servizi necessari. Utilizzare i servizi CRUD esistenti per le entità del building block come modelli.
Servizio di creazione:
Immettere un nome per il servizio. In questo esempio, immettere AddMyObjects.
Per l'input del servizio, aggiungere un input denominato MyObjects, con Tipo di base corrispondente a INFOTABLE. Come Data shape, selezionare la propria data shape.
Per l'output del servizio, selezionare INFOTABLE e scegliere la propria data shape.
Nel riquadro dello script, immettere codice simile al seguente:
var insertParams = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Insert(insertParams);
Servizio di eliminazione:
Immettere un nome per il servizio. In questo esempio, immettere DeleteMyObject.
Per l'input del servizio, aggiungere un input denominato UID, con Tipo di base corrispondente a STRING.
Per l'output del servizio, selezionare INFOTABLE e scegliere la propria data shape.
Nel riquadro dello script, immettere codice simile al seguente:
var params = {
UID: UID,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Delete(params);
Servizio di aggiornamento:
Immettere un nome per il servizio. In questo esempio, immettere UpdateMyObjects.
Per l'input del servizio, aggiungere un input denominato MyObjects, con Tipo di base corrispondente a INFOTABLE. Come Data shape, selezionare la propria data shape.
Per l'output del servizio, selezionare INFOTABLE e scegliere la propria data shape.
Nel riquadro dello script, immettere codice simile al seguente:
var params = {
infoTable: MyObjects,
dataShapeName: "MyObject"
};
var result = Things[me.GetDatabaseThingName()].Update(params);
Servizio per recuperare una singola istanza di questa data shape:
Immettere un nome per il servizio. In questo esempio, immettere GetMyObject.
Per l'input del servizio, aggiungere un input denominato UID, con Tipo di base corrispondente a STRING.
Per l'output del servizio, selezionare INFOTABLE e scegliere la propria data shape.
Nel riquadro dello script, immettere codice simile al seguente:
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:
Immettere un nome per il servizio. In questo esempio, immettere GetMyObjects.
Per l'input del servizio, procedere nel modo di seguito riportato.
Aggiungere un input denominato filter, con Tipo di base corrispondente a JSON.
Aggiungere un input denominato offset, con Tipo di base corrispondente a INTEGER.
Aggiungere un input denominato limit, con Tipo di base corrispondente a INTEGER.
Per l'output del servizio, selezionare INFOTABLE e scegliere la propria data shape.
Nel riquadro dello script, immettere codice simile al seguente:
var params = {
filter: filter,
dataShapeName: "MyObject",
offset: offset,
limit: limit
};
var result = Things[me.GetDatabaseThingName()].Query(params);
2. Fare clic su Salva per salvare i nuovi servizi nella thing shape.
Sincronizzare le informazioni del database e lo schema del database
Aggiungere la nuova entità al database sincronizzando le informazioni del database con lo schema del database. Per ulteriori informazioni, vedere Sincronizzazione delle informazioni del database e dello schema del database.
È stato utile?