Scrittura automatica metadati

Da wiki.maggioli.it.
Versione del 24 apr 2014 alle 12:33 di imported>Root
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). Ognino 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 intenda modificare 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. 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 resteranno con il valore precedente.
  • 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 fino ad esaurimento. Nel caso in cui l'array di valori contenga piu' valori di quanti siano i figli verranno creati tanti metadati "figli" quanti servono per gestire 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 acuisirà nome "Luca" e successivamente verrà generato un nuovo figlio 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.

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 verificherebbe un errore a runtime. Per risolvere questi tipi di problemi è necessario scrivere il nome completo di classe "padre.persona.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 vuglia effettuare la conversione. Si suggerisce di impostare un tipo dati congruo con quello del metadato.

attr_X_value (input)

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