Sottosistema Trasferimento file
Il sottosistema Trasferimento file include i metodi obbligatori per la gestione dei trasferimenti di file tra oggetti remoti, repository di file e server federati.
Se non diversamente specificato, per i trasferimenti di file tra un client edge e ThingWorx Platform è necessario che il client sia connesso dall'inizio del trasferimento fino al completamento. I trasferimenti di file in ThingWorx Platform possono essere avviati mentre il client edge è disconnesso, configurando ThingWorx Platform per l'esecuzione della copia con la funzionalità di accodamento dei file. I trasferimenti di file accodabili sono inseriti in una coda non in linea ed eseguiti dopo la connessione dell'agente.
* 
Se si utilizza PostgreSQL come provider di persistenza, la coda non in linea è resa persistente allo scopo di supportare il failover per la disponibilità elevata in ThingWorx.
Dopo l'avvio del trasferimento, il client edge non può disconnettersi, altrimenti il trasferimento non viene eseguito. I trasferimenti di file in coda scadono se non iniziano prima del valore indicato nell'impostazione di configurazione Durata (sec) di un trasferimento di file accodabili.
In genere, i trasferimenti di file sono controllati da ThingWorx Platform. Tuttavia, possono essere presenti trasferimenti di file controllati da edge, che sono attivati aggiungendo la thing shape EdgeControlled all'oggetto remoto coinvolto nel trasferimento di file. È necessario che l'origine o la destinazione dei trasferimenti di file controllati da edge sia impostata come oggetto FileRepository in ThingWorx Platform. Un trasferimento di file controllato da edge è gestito dal client edge. Il client edge richiama il servizio Touch per aggiornare data e ora del trasferimento di file durante l'avanzamento. In caso contrario, ThingWorx Platform interrompe il trasferimento di file. Il client edge indica se il trasferimento è riuscito o è stato completato con un errore.
È possibile incorporare il contesto specificando il parametro metadata quando si avvia il trasferimento di file. Questo campo è un oggetto JSON, che può contenere qualsiasi codice JSON arbitrario. Alcune funzionalità di base determinano l'utilizzo di questo campo in ThingWorx Platform allo scopo di fornire istruzioni aggiuntive al client edge. Per questi trasferimenti le informazioni nel campo metadata non devono essere modificate da processi diversi da ThingWorx Platform.
Trasferimento di file tra server federati
Per trasferire file tra server federati, attenersi alla procedura descritta di seguito.
* 
Una barra (/) è il delimitatore di percorso consigliato per i repository di file.
1. Configurare un ambiente federato tra ServerA ThingWorx e ServerB ThingWorx. Per ulteriori informazioni, vedere Configurazione di un ambiente federato.
2. Aggiungere ThingA a ServerA mediante il modello di oggetto FileRepository.
a. Selezionare la casella di controllo Pubblicato per ThingA, in modo che sia accessibile ad altri server ThingWorx.
3. Aggiungere RemoteThingA a ServerB mediante il modello di oggetto RemoteThingWithFileTransfer.
a. Nel campo Identificatore immettere ThingA@ServerA.
4. Copiare il file (ad esempio, test.txt) nella cartella radice SystemRepository di ServerB.
5. Aprire FileTransferSubsystem in ServerB ed eseguire il servizio copy con i valori di parametro riportati di seguito.
sourceRepo: SystemRepository
sourcePath: /
sourceFile: test.txt
targetRepo: RemoteThingA
targetPath: /
targetFile: test.txt
Non modificare gli altri parametri rispetto ai valori di default.
6. Passare alla cartella /ThingworxStorage/repository/ThingA in ServerA e verificare che vi sia stato copiato il file test.txt.
Configurazione
Impostazioni trasferimento file
Tipo di dati
Default
Note
Numero min di thread allocati a un pool di trasferimento file
NUMBER
10
Definisce la dimensione del pool di base di ThreadPoolExecutor. Questo pool di thread viene utilizzato per coordinare la logica di trasferimento file controllata dalla piattaforma.
Numero max di thread allocati a un pool di trasferimento file
NUMBER
10
Definisce la dimensione massima del pool di thread di ThreadPoolExecutor.
I trasferimenti di file asincroni possono andare persi in caso di arresto di ThingWorx. Ad esempio, si supponga che il valore di default di questa impostazione sia pari a 10 e venga eseguito l'invio di 50 trasferimenti di file di lunga durata. Se ThingWorx si arresta, 40 file andranno persi.
Numero max di voci della coda prima di aggiungere un nuovo thread di lavoro
NUMBER
100
Definisce il limite superiore del numero di voci nella coda utilizzate in ThreadPoolExecutor.
Ciò limita il numero di trasferimenti attivi consentiti in contemporanea.
Timeout thread inattivi (sec)
NUMBER
600000
Definisce per quanto tempo è necessario mantenere attivi i thread inattivi in ThreadPoolExecutor. Il pool terminerà i thread e tornerà alla dimensione dei pool di base dopo il tempo specificato.
Timeout di inattività trasferimento file (sec)
NUMBER
30
Durante il processo di trasferimento file (checksum, ReadFromBinaryFile, WriteToBinaryFile, validation) il timeout di inattività viene controllato tra un passo e l'altro. Se il passo richiede più tempo del timeout definito, il trasferimento viene annullato.
* 
Non utilizzare questo parametro per copie asincrone.
Dimensione max blocco trasferimento file (byte)
NUMBER
128000
Definisce il numero di byte richiesti per le operazioni ReadFromBinaryFile e WriteToBinaryFile. Rappresenta la dimensione del blocco per ogni scrittura.
Questa variabile richiede una dimensione massima del blocco durante un trasferimento di file a livello di sistema.
La configurazione di EMS ha la precedenza. Tuttavia, se EMS è configurato con buffer_size con dimensioni maggiori rispetto a quelle specificate in questa variabile, quest'ultima limiterà la dimensione del blocco. Se tramite EMS si configurano dimensioni del blocco superiori (128 KB), è necessario aumentare questo valore. Il livello di compilazione massimo è 1 MB.
Dimensione max trasferimento file (byte)
NUMBER
100000000
Definisce il numero massimo di byte supportati da un'operazione di copia.
Se la dimensione del file di origine è superiore a questo valore, il trasferimento ha esito negativo e viene visualizzato un messaggio di errore.
Numero max di trasferimenti file consentiti nella coda non in linea
NUMBER
50000
Definisce il numero massimo di trasferimenti di file nella coda non in linea consentiti nel sistema.
Numero max di trasferimenti file consentiti per oggetto nella coda non in linea
NUMBER
10
Definisce il numero massimo di trasferimenti di file nella coda non in linea consentiti per oggetto.
Durata (sec) di un trasferimento di file accodabili
NUMBER
86400
Definisce il tempo massimo per cui un trasferimento file in coda può essere attivo nella coda non in linea.
Allo scadere della quantità di tempo specificata, un trasferimento di file viene rimosso dalla coda non in linea.
Totale numero max di trasferimenti file controllati da edge consentiti
NUMBER
500
Definisce il numero massimo di trasferimenti di file attivi controllati da edge consentiti nel sistema.
Totale dei trasferimenti simultanei controllati da edge a livello di piattaforma. Questa impostazione è diversa dal numero massimo di trasferimenti sempre attivi consentiti, che sono controllati dall'impostazione Numero max di voci della coda prima di aggiungere un nuovo thread di lavoro.
Il limite superiore di questa proprietà è controllato da MaxConcurrentFileTransfersEdgeCtrl nel file platform-settings.json. Il valore di default è 1000. 
Totale numero max di trasferimenti file controllati da edge consentiti per oggetto
NUMBER
2
Definisce il numero massimo di trasferimenti simultanei consentiti da e verso un oggetto controllato da edge. Ad esempio, un valore 2 significa che un oggetto controllato da edge può disporre solo di due trasferimenti attivi (caricamento o download) in un dato momento. Le richieste successive di rimozione dalla coda del trasferimento di file in uscita vengono rifiutate finché non vi è sufficiente capacità.
Timeout di inattività trasferimenti file controllati da edge (sec)
NUMBER
600
Definisce il tempo massimo durante il quale un'operazione attiva può rimanere tale senza alcun intervento, ad esempio trasferimento dati o aggiornamento dello stato dell'operazione. L'intervallo è compreso tra 1 e 3600 secondi. È simile al timeout di inattività per le operazioni di trasferimento sempre attive, ma è generalmente maggiore per tenere conto del ciclo di ping dei dispositivi di polling.
File Transfer Cleanup Frequency (sec)
NUMBER
10
Definisce la frequenza dell'operazione di pulizia per la valutazione delle operazioni di trasferimento file.
La pulizia rimuove le operazioni obsolete e scadute dalla tabella delle operazioni attive. Questa azione rilascia gli slot di trasferimento file, consentendo l'esecuzione di altre operazioni in coda. I valori minimo e massimo consigliati devono essere rispettivamente 1 secondo e 60 secondi.
Il valore per questa impostazione deve essere scelto con attenzione. Si prevede che nella maggior parte dei casi di utilizzo funzioni il valore di default, ovvero 10 sec.
Un valore molto basso avvia il task in background con eccessiva frequenza. Tutte le operazioni di trasferimento file attualmente attive vengono recuperate dalla cache e ne viene valutata la scadenza. La conseguenza è un eccesso di operazioni di calcolo e un carico non necessario sulla cache.
Un valore molto alto avvia il task con minore frequenza. Questo potrebbe causare problemi con trasferimenti file che tengono bloccata una prenotazione valida e potrebbero non rilasciarla in tempo utile. Se il numero di operazioni bloccate è elevato, questo potrebbe avere un impatto su tutte le operazioni di trasferimento file, ad esempio instabilità della rete, difficoltà a connettere il dispositivo e così via.
È stato utile?