bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Gestione dei file XML su Bonita Open Solution

Il formato XML è ormai profondamente diffuso in quasi ogni applicativo, e la suite Bonita Open Solution non è da meno fornendo proprio un tipo di dato specifico per manipolare i dati in formato XML.

Peccato che sembra non esistere una guida che spieghi come utilizzare tale tipo di dato; vediamo quindi come fare.

L'obiettivo è quello di creare un processo attraverso il quale fare l'upload di un file XML e visualizzarne il contenuto. A tale scopo utilizzeremo Bonita 5.5.1 e creeremo il seguente processo (do per scontato che Bonita lo sappiate usare):

Come prima cosa definiamo 2 variabili globali di processo:

  • xmlData, di tipo XML a cui associare a priori il file XSD che descrive il formato del file ed in cui selezionare a priori l'elemento radice;
  • xmlFile, di tipo Attachment.

Nel primo task Scegli file creare semplicemente una nuova Entry Pageflow in autocomposizione contenente il widget File per caricare il nostro file XML, da associare alla variabile xmlFile. Tutto molto semplice per ora.

Passiamo al secondo task Visualizza in cui aggiungeremo un connettore di tipo Groovy sull'evento Enter del task. Il codice da inserire nel connettore è il seguente e non fa altro che leggere il contenuto del file xmlFile e memorizzarlo in una stringa:

import org.ow2.bonita.util.AccessorUtil

byte[] content = AccessorUtil.getQueryRuntimeAPI().getDocumentContent(xmlFile.UUID)
new String(content)

L'output del connettore associarlo alla variabile xmlData, su tutta la variabile (Whole variable).

A questo punto il grosso del lavoro è stato fatto, la variabile xmlData contiene i dati da elaborare; cosa che andremo a fare mediante XPath.

Pertanto aggiungiamo una nuova Entry Pageflow al task Visualizza in cui andremo a visualizzare qualche dato.

Inseriamo un widget di tipo Text e selezioniamo la variabile xmlData dalla combo; comparirà un popup con la struttura dei dati in cui selezionare cosa visualizzare. Verrà generata un'espressione Groovy del tipo (che contiene il percorso XPath):

${providedscripts.BonitaXML.evaluateXPathOnVariable(xmlData, "/NOMETAG/@ATTRIBUTO")}

L'unica cosa fondamentale da segnalare (e ricordare) è che il metodo evaluateXPathOnVariable restituisce una stringa nel caso in cui l'espressione XPath riguardi un attributo o contenga la funzione text(); in tutti gli altri casi restituisce un oggetto di tipo org.w3c.dom.Node (che deve quindi essere manipolato con i suoi metodi).

Purtroppo non viene mai restituito un oggetto org.w3c.dom.NodeList, quindi in caso di liste di tag è conveniente recuperare il nodo che li contiene e poi ciclare su di esso.

Enjoy!

Precedente
Commenti
Nessun commento. Vuoi essere il primo.