Best practice per lo sviluppo di applicazioni > Creazione di package e distribuzione di applicazioni create in ThingWorx Platform > Best practice per la creazione di package e la distribuzione di applicazioni ThingWorx
Best practice per la creazione di package e la distribuzione di applicazioni ThingWorx
Per sviluppare e distribuire le estensioni, attenersi alle best practice descritte di seguito.
Sviluppare in un'istanza di piattaforma pulita
ThingWorx non fornisce protezione o sandboxing per il codice. Può accadere che l'ambiente diventi instabile. Per tenere l'applicazione fuori dallo stato instabile, eseguire le operazioni descritte di seguito.
Se viene visualizzato un errore nel processo di sviluppo, riavviare il server Apache Tomcat.
È possibile che venga richiesto di rimuovere completamente la directory ThingworxStorage. È consigliabile sviluppare l'applicazione in un'istanza pulita della piattaforma per essere sicuri di non perdere lavoro quando si rimuove la directory ThingWorxStorage.
Struttura di un'estensione
Per gli elementi di un'estensione è necessario creare il package all'interno di un file ZIP nella struttura di cartelle seguente:
/metadata.xml - Informazioni sull'estensione e dettagli dei vari elementi dell'estensione.
/Entities/ - Zero o più file XML di entità organizzati in sottocartelle in base al tipo di entità.
/lib/ - File JAR che include le classi Java personalizzate per l'estensione e i file JAR di terze parti richiesti dall'estensione.
/ui/ - File che definiscono i widget personalizzati utilizzati per creare ed eseguire mashup.
Raggruppare più estensioni in un unico file ZIP per un'applicazione
Le soluzioni IoT che contengono più estensioni possono essere raggruppate in un unico file ZIP contenente file ZIP singoli per ciascuna estensione. Ciò garantisce che ogni estensione sia implementata in modo indipendente. È più facile aggiornare le singole estensioni nelle release successive.
Convenzione per versione e nome di estensione
Non esistono restrizioni per la denominazione di un'estensione e del relativo file ZIP. Dopo avere specificato un nome per l'estensione, non è possibile modificarlo, ma è possibile modificare il nome del file ZIP.
Nonostante sia possibile specificare nomi diversi per l'estensione e il relativo file ZIP, è consigliabile utilizzare lo stesso nome. Il nome del file ZIP può contenere anche il numero di versione.
Nel caso di una soluzione IoT che contiene più estensioni raggruppate come uno o più file ZIP, è consigliabile specificare lo stesso numero di release per tutti i file ZIP. Si consideri una soluzione IoT che contiene due estensioni. Ogni estensione è un file ZIP singolo con un numero di release singolo. È consigliabile specificare lo stesso numero di release nel nome delle due estensioni e nel nome del file o dei file ZIP. Ad esempio, se il numero di release della soluzione IoT è 7.9, specificare 7.9 come numero di release nel nome di tutti i file ZIP.
Nel file metadata.xml, per specificare la versione dell'estensione viene utilizzato l'attributo packageVersion. Si tratta di un attributo obbligatorio, il cui valore segue il formato <major>.<minor>.<patch>, in cui ogni parte della versione è numerica. Le estensioni devono seguire le regole semantiche di controllo delle versioni. Per ulteriori informazioni, vedere la pagina relativa al controllo delle versioni semantiche.
Dipendenze delle estensioni
Nella presente sezione vengono descritte le dipendenze di un'estensione da altre estensioni.
Dipendenza dell'estensione da altre estensioni
Se l'estensione dipende da altre estensioni, è consigliabile utilizzare l'attributo dependsOn nel file metadata.xml per specificare le dipendenze. Il valore dell'attributo è un elenco separato da virgole di versioni e nomi di estensione nel formato <name>:<major>.<minor>.<patch>, in cui le versioni sono specificate solo mediante numeri, ad esempio dependsOn= "ExtensionOne:2.5.1,ExtensionTwo:1.2.0".
È consigliabile evitare troppe dipendenze. Eventuali aggiornamenti a una qualsiasi delle estensioni interessano anche le estensioni dipendenti.
Evitare l'accoppiamento stretto ad altre estensioni
È necessario evitare l'accoppiamento stretto di un'estensione ad altre estensioni.
Se l'estensione è strettamente accoppiata a un'altra estensione che deve essere aggiornata a un nuovo numero di versione principale, per poter eseguire l'aggiornamento viene chiesto di eliminare l'estensione e l'intera catena di dipendenze.
Il modo migliore per evitare l'accoppiamento stretto consiste nel creare oggetti e modelli di oggetto della funzionalità richiesta. Oggetti e modelli di oggetto non fanno parte dell'estensione, pertanto non sono inclusi negli aggiornamenti dell'estensione.
In alcune situazioni può risultare difficile evitare l'accoppiamento stretto quando si utilizzano i widget di altre estensioni nei mashup dell'estensione.
Dimensione di un'estensione
Gestire e aggiornare estensioni grandi e complesse può risultare difficile. Un approccio valido consiste nel suddividere le estensioni in componenti più piccoli in base alla funzionalità per semplificare la manutenzione e l'aggiornamento. È possibile raggruppare più estensioni in un singolo file ZIP. Per ulteriori informazioni, vedere la sezione Raggruppare più estensioni in un unico file ZIP per un'applicazione.
Uso di file JAR esterni in un'estensione
ThingWorx consente agli utenti di includere librerie di terze parti nel codice. Si consiglia tuttavia di evitare di utilizzare i file JAR comuni. Utilizzare invece i file JAR che vengono inseriti nel package insieme all'SDK nell'applicazione. Tenere presente quanto descritto di seguito.
Nell'estensione è possibile utilizzare i file JAR esistenti della cartella /Thingworx/WEB-INF/lib. Se si desidera invece utilizzare un file JAR esterno nell'estensione, assicurarsi che il nome radice del file JAR non sia uguale al nome radice di altri file JAR presenti nella cartella /Thingworx/WEB-INF/lib.
Il nome radice di un file JAR è il nome dal primo carattere fino al primo carattere numerico nel nome del file. La tabella illustra i nomi radice dei seguenti file JAR presenti nella cartella /Thingworx/WEB-INF/lib:
Nome file JAR
Nome radice
postgresql-42.2.5.jar
postgresql-
log4j-1.2.17.jar
log
metrics-core-3.1.2.jar
metrics-core-
ThingWorx Platform consente a più origini di utilizzare gli stessi file JAR.
Quando più origini utilizzano gli stessi file JAR, si può verificare un conflitto durante il caricamento di un'estensione sulla piattaforma o quando si utilizza una versione JAR non corretta durante la creazione dell'estensione.
Per continuare a utilizzare le versioni future della piattaforma potrebbe essere necessario aggiornare le estensioni.
Un cliente non può utilizzare contemporaneamente due estensioni che richiedono gli stessi file JAR.
Rendere le entità non modificabili
Quando si creano entità, ad esempio mashup, definizioni di stile e così via, assicurarsi che le entità dell'estensione siano non modificabili. È possibile aggiornare solo le entità non modificabili. Quelle modificabili non possono essere aggiornate. Per default, le nuove entità sono non modificabili.
Se si desidera modificare alcune entità, raggrupparle in un'estensione separata, in modo da poter aggiornare facilmente gli altri componenti dell'estensione.
Per le entità modificabili, si consiglia di ridurre al minimo le posizioni modificabili in un mashup. Utilizzare mashup incorporati per ridurre al minimo le posizioni modificabili.
Se si desidera offrire la possibilità di personalizzare l'estensione, ad esempio aggiungendo un logo personalizzato, valutare l'eventualità di utilizzare un approccio alternativo.
Si può utilizzare in alternativa la configurazione di un oggetto? Alla tabella di configurazione di un oggetto non modificabile è comunque possibile apportare delle modifiche.
È possibile utilizzare un servizio per cercare una configurazione allo scopo di fornire un'entità multimediale o un mashup incorporato?
Aggiornare un'estensione con entità modificabili
Quando si aggiorna un'estensione con entità modificabili, eseguire un test di migrazione per verificare se, durante il processo di aggiornamento, vengono perse informazioni, ad esempio i tag.
Organizzare entità
Si consiglia di raggruppare le entità utilizzando i progetti e i tag modello. È necessario utilizzare un solo progetto per tutte le entità dell'estensione. Creare almeno un tag modello che possa essere utilizzato per contrassegnare tutte le entità dell'estensione.
Eseguire il backup dell'archiviazione prima dell'eliminazione
Si consiglia di eseguire il backup della cartella ThingworxStorage corrente prima di eliminarla.
Plug-in Eclipse
Il plug-in Eclipse facilita lo sviluppo e la creazione di estensioni. Fornisce azioni che generano automaticamente file di origine, annotazioni e metodi. Le azioni inoltre aggiornano il file di metadati per garantire la corretta configurazione dell'estensione. Inoltre il plug-in garantisce che la sintassi e il formato delle annotazioni e del file di metadati siano corretti.