Scrittura automatica metadati

Da wiki.maggioli.it.
Jump to navigation Jump to search

Questa azione permette di modificare i metadati associati ad un generico oggetto (che supporti i metadati). E' possibile specificare la tipologia dell'oggetto ed il suo identificativo. L'esecuzione della action avviene esclusivamente lato server.

Premessa sui mapping

Per descrivere il funzionamento della action supponiamo di avere scelto una tipologia di dati sulla quale siano stati definiti tre mapping chiamati padre (scalare), madre (scalare), figli (array). Ognuno di questi mapping utilizza la classe chiamata persona (quindi padre, madre e figli sono tutti persona). Supponiamo inoltre che la classe persona definisca gli attributi cognome, nome, data_nascita.

Parametri

Segue la lista dei parametri della action con la loro funzione.

owner_class_name (input)

E' la tipologia di oggetti da gestire (classe java del DAC). Il default vale it.saga.library.gestioneDocumentale.flows.DocDACElementi, che si presume essere il caso di più frequente utilizzo ma è sufficiente modificare il nome per utilizzare altre tipologie di oggetti. La tipologia di oggetti specificata deve obbligatoriamente supportare la gestione dei metadati, pena un errore a runtime.

owner_pkid (input)

E' la chiave di accesso dell'oggetto specifico di cui si vuole gestire i metadati.

input_count (input)

Indica il numero di attributi che si intende accedere con questa action.

scalar_to_array (input)

Indica come la action deve comportarsi quando il workflow riceve in input un parametro di tipo scalare e lo deve applicare all'attributo di mapping di tipo array. I possibili valori sono FIRST_ITEM e ALL_ITEMS di seguito spiegati.

Supponiamo che si voglia accedere al cognome dei figli figli.cognome e che l'oggetto specifico contenga tre figli. Se passiamo uno scalare di tipo stringa che contiene il valore Rossi, è possibile:

  • in caso di FIRST_ITEM: Solo al primo figlio verrà impostato il cognome con il valore Rossi. I rimanenti non verrano alterati.
  • in caso di ALL_ITEMS: A tutti i figli verrà impostato il cognome con il valore Rossi.

Se invece viene passato un valore di tipo array verranno utilizzati tutti gli elementi di quest'ultimo fino ad esaurimento. Nel caso in cui l'array di valori contenga piu' elementi di quanti siano i figli, verranno creati tanti metadati figli quanti servono per esaurire completamente l'array di valori.

Esempio: Si vuole accedere a figli.nome con i valori [ "Luca", "Marco" ]. Se i metadati contengono un unico figlio, questo acquisirà nome Luca e successivamente verrà generato un nuovo metadato figli che acquisirà nome Marco. Eventuali attributi obbligatori verranno ignorati. Se i figli sono due i nomi verranno impostati nell'ordine ai due figli. Se invece sono tre il terzo figlio non verrà alterato.

array_behavior (input)

Permette di specificare se i valori in input agli array debbano andare a sostituire il valore precedente (SET) oppure se debbano essere accodati (APPEND).

Parametri variabili

In funzione del parametro input_count vengono generate delle triplette di parametri come segue (X indica il numero progressivo)

attr_X_name (input)

Descrive il nome completo dell'attributo che si intende accedere. Se ad esempio vogliamo accedere il cognome del padre dovremo scrivere padre.cognome. In realtà questa è una notazione compatta accettata dalla action fintanto che la classe di metadati non utilizza l'erediterietà multipla. In caso di ereditarietà multipla potrebbe accadere che la classe erediti da due superclassi entrambe con l'attributo cognome. In questo caso si potrebbero verificare dei malfunzionamenti. Infatti la action utilizza implicitamente il nome della classe presente nel mapping (persona in questo caso). Se tale classe contiene l'attributo specificato questo viene trovato, se invece l'attributo appartiene ad una superclasse questo non viene trovato e la action non ha effetti su tale attributo. Per risolvere questo tipo di problemi è quindi necessario scrivere il nome completo di classe padre.<superclasse>.cognome.

attr_X_type (input)

Indica il tipo dati dell'attributo. Potenzialmente può essere differente dal tipo dati dell'attributo dei metadati, è solo una indicazione al workflow di come si voglia effettuare la conversione. Si suggerisce di impostare un tipo dati congruo con quello del metadato.

attr_X_value (input)

Permette di inviare alla action il valore da impostare nell'attributo. Il sistema effettua eventuali conversioni di tipo (quando possibile).