<< Fare clic per visualizzazione il sommario >> Percorso: API di piattaforma > JamioPlug > JamioPlug Elastic Storage > Definizioni e logiche |
I metodi di JamioPlug Elastic Storage condividono delle strutture e delle logiche per poter creare, aggiornare ed eliminare Dataset in una specifica configurazione del plug Elastic Storage, denominata indice del plug Elastic Storage.
Di seguito alcune definizioni e logiche di indicizzazione, aggiornamento e esportazione di dati.
Identificativo del Dataset
I Dataset inseriti in un indice del plug Elastic Storage dispongono di un campo identificativo che può essere specificato dal progettista o assegnato in automatico dalla piattaforma. L'identificativo viene memorizzato in un campo del Dataset, denominato _id, di tipo testo e di lunghezza massima di 150 caratteri, non visibile nell'indice. Descrivendo in maniera generica i metodi deputati a creazione/aggiornamento di Dataset in un indice del plug Elastic Storage , si può affermare che essi prevedono tipicamente in input due tipologie di parametri:
•parametri utili a specificare le informazioni da scrivere nel Dataset nell'indice del plug Elastic Storage i campi dei dati di input (inputDataSet, inputDataSetList, inputFile, catalogReference);
•idFields, utile a calcolare il valore del campo identificativo, utilizzando campi disponibili nei dati in input.
L'identificativo del Dataset viene creato secondo le seguenti logiche, se nei campi dei dati in input :
•è presente un campo che si chiama "_id", di tipo testo breve o numerico intero, allora viene utilizzato come campo identificativo e il parametro IdFields viene ignorato;
•è presente un campo che si chiama "Id", di tipo testo breve o numerico intero, allora viene aggiunto al Dataset un campo "_id" che ha il medesimo valore del campo "Id" e viene usato come identificativo, il paramtro IdFields viene ignorato;
•non è presente un campo che si chiama "Id" o "_id" ed è valorizzato il parametro IdFields con valori che fanno riferimento a campi di tipo testo breve e numerico intero, allora viene aggiunto al Dataset un campo “_id", valorizzato con la concatenazione dei valori riportati nel parametro IdFields; nel caso in cui la stringa ottenuta è più lunga di 150 caratteri viene generato un errore. La concatenazione dei valori viene effettuata seguendo l'ordine dei campi riportati nella lista. I campi di IdFields devono essere presenti in InputDataSet, diversamente si ottiene un errore. Inoltre se la concatenazione dei campi di IdFields generano lo steso id viene generato errore;
• non è presene un campo che si chiama "Id" o "_id" ed è valorizzato il parametro IdFields con valore {id}, allora viene aggiunto al Dataset un campo “_id" valorizzato con l'id della risorsa Jamio o del collegamento esteso.
•non è presente un campo che si chiama "_id" o "Id" e non è valorizzato il parametro IdFields, viene generato errore, ad accezione del metodo ImportFromCsv, per il quale il campo identificativo viene generato automaticamente dal plug Elastic Storage.
Gestione dei campi Jamio in un indice del plug Elastic Storage
Per quanto riguarda i nomi dei campi da inserire in un indice del plug Elastic Storage bisogna tener conto di alcune limitazioni:
•non è possibile inserire il carattere . (punto) nel nome di un campo;
•se i dati contenuti nell'indice devono essere utilizzati in un'orchestrazione Jamio, si deve tener conto delle restrizioni applicate ai nomi dei campi in Jamio.
Per quanto riguarda i dati contenuti nei campi Jamio Openwork, inseriti o aggiornati in un indice del plug Elastic Storage, vengono rappresentati nell'indice ed esportati con modalità differenti a seconda del tipo.
Se il campo Jamio è di tipo:
•scalare, in fase di creazione dell'indice, viene impostata una colonna, il cui nome coincide con quello del campo Jamio, al cui interno è riportato il contenuto del campo. I campi di tipo data e data/ora con valore 01/01/0001 00:00:00 vengono importati nell'indice del plug Elastic Storage con valore nullo. Risultano essere ordinabili solo i campi di tipo Booleano e Data, mentre per i predicati di filtro si veda la tabella.
Se si esporta l'indice, i dati vengono esportati in un file csv che riporta per ogni colonna il contenuto del campo. Per questo tipo di dati è possibile la selezione e l'esportazione;
•collegamento, in fase di creazione dell'indice, viene impostata una colonna, il cui nome coincide con quello del campo Jamio, al cui interno è riportata la sola proprietà Name del collegamento;
Se si esporta l'indice, i dati vengono esportati in un file csv che riporta in tre colonne distinte le proprietà Name, Type e Url del collegamento. Per questo tipo di dati è possibile la selezione e l'esportazione;
•dato strutturato che contiene campi di tipo scalare, senza dati annidati al suo interno, in fase di creazione dell'indice vengono create tante colonne quanti sono i campi del dato strutturato. Il nome di ogni colonna dell'indice viene composto concatenando il nome del dato strutturato e quello del sottocampo. Ad esempio, un dato strutturato, denominato Contatto, che contiene i campi Nome, Cognome e NumTelefono di tipo testo, viene indicizzato nel plug Elastic Storage in tre colonne denominate Contatto.Nome, Contatto.Cognome e Contatto.NumTelefono.
Il contenuto dei sottocampi del dato strutturato viene visualizzato nella corrispondente colonna dell'indice.
Se si esporta l'indice, i dati vengono salvati in un file csv che riporta come intestazione il nome di ogni colonna e per ognuna il contenuto del campo.
Per questo tipo di dati è possibile la selezione e l'esportazione, anche del singolo sottocampo, i criteri di ordinamento sono applicabili solo ai campi di tipo Booleano e Data.
E' possibile applicare filtri di ricerca basati sui predicati riportati nella tabella sottostante;
•dato strutturato che contiene campi di tipo collegamento, senza dati annidati al suo interno, in fase di creazione dell'indice vengono create tante colonne quanti sono i campi del dato strutturato. Il nome di ogni colonna dell'indice viene composto concatenando il nome del dato strutturato e quello del sottocampo.
Il contenuto dei sottocampi del dato strutturato viene visualizzato nella corrispondente colonna dell'indice tramite la sola proprietà Name del collegamento.
Se si esporta l'indice, i dati vengono esportati in un file csv che riporta in tre colonne distinte le proprietà Name, Type e Url di ogni campo di tipo collegamento.
Per questo tipo di dati è possibile la selezione e l'esportazione, anche del singolo sottocampo.
E' possibile applicare filtri di ricerca basati sui predicati riportati nella tabella sottostante;
•collegamento esteso che contiene campi di tipo scalare o collegamento, senza dati annidati al suo interno, in fase di creazione dell'indice, vengono create tante colonne quanti sono i campi del collegamento esteso più quella che riporta il name del collegamento esteso. Il nome di ogni colonna viene composto concatenando il nome del collegamento esteso con quello del sottocampo. Ad esempio, dato un collegamento esteso, denominato Contatto, che contiene i campi Nome, Cognome e NumTelefono di tipo testo e un campo Scheda che contiene il collegamento ad una risorsa di tipo Identità, viene indicizzato nel plug Elastic Storage in cinque colonne denominate Contatto (che riporta il Name del collegamento esteso), Contatto.Nome, Contatto.Cognome, Contatto.NumTelefono e Contatto.Scheda.
Il contenuto dei sottocampi del collegamento esteso viene visualizzato nella rispettiva colonna dell'indice, per i campi di tipo collegamento viene visualizzata la sola proprietà Name.
Se si esporta l'indice, i dati vengono salvati in un file csv che riporta come intestazione il nome di ogni colonna e per ognuna il contenuto dei campi scalari, mentre per i campi di tipo collegamento riporta in tre colonne distinte le proprietà Name, Type e Url.
E' possibile applicare filtri di ricerca basati sui predicati riportati nella tabella sottostante;
•dato strutturato o collegamento esteso che contiene uno o più campi annidati (ad es. di tipo dato strutturato o collegamento esteso) in fase di creazione dell'indice viene impostata una sola colonna col nome del campo. Il contenuto del campo non viene visualizzato nell'indice nè sono visualizzate informazioni sulla sua struttura.
Se si esporta l'indice, i dati vengono salvati in un file csv che riporta la serializzazione in una stringa JSON del valore del campo ed ha come intestazione il nome della colonna. Non è possibile applicare filtri di selezione.
•lista di campi di qualsiasi tipo, l'inserimento e l'aggiornamento di questo tipo di dati in un indice del Plug Elastic Storage non sono gestiti.
In generale, in fase di aggiornamento, se l'indice è stato creato con una tipologia di campi (strutturati o non strutturati) e si aggiungono ulteriori Dataset all'indice con campi con lo stesso nome, ma tipologia diversa da quelli precedentemente memorizzati nell'indice, tutti i dati verranno memorizzati senza informazioni sulla loro struttura.
Tabella dei predicati validi per i cataloghi di Elastic Storage che sono applicabili ai sottocampi dei Dataset di un indice del Plug Elastic Storage
Tipo di sottocampo |
Predicati applicabili |
Testo |
NotNull EqualsTo BeginsWith |
Numerico |
EqualsTo |
Booleano |
EqualsTo |
Data e ora |
NotNull |
Collegamento |
--- |