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

Documentum - IDfQueryBuilder e query su attributi repeating

Per realizzare una ricerca custom all'interno di un'applicazione web Documentum-based (mediante l'utilizzo di Webtop oppure di WDK) è solitamente necessario creare un'apposito "component" e conseguentemente una classe Java per le eventuali funzionalità custom di business.
Questa classe Java solitamente estende le superclassi AdSearchEx (oppure direttamente AdvSearchExBase) andando a specificare il metodo:

protected IDfQueryBuilder buildQuery() throws Exception;


che si occupa di configurare e restituire un oggetto IDfQueryBuilder contenente la struttura della query da eseguire.
Supponiamo quindi di dover eseguire una query DQL su di un campo di tipo repeating e vediamo come configurare l'oggetto IDfQueryBuilder; la query da eseguire è la seguente (notare la clausola ANY per la ricerca su attributi repeating):

SELECT * FROM my_document WHERE ANY my_field = 'text';

Il codice Java che andremo a scrivere è il seguente:

protected IDfQueryBuilder buildQuery() throws Exception {
// si recupera dalla superclasse un oggetto preconfigurato

// su cui lavorare
IDfQueryBuilder qb = super.buildQuery();
// in alternativa sarebbe stato possibile creare un nuovo

// oggetto da zero ricordandosi però di configurare

// correttamente la DOCBASE di riferimento
// IDfQueryBuilder qb = getSearchInfo().getSearchService()
.newQueryMgr()

// .newQueryBuilder("my_document", -1, true);
// qb.addSelectedSource(getDfSession().getDocbaseName());

// [...] eventuali colonne da restituire in output

// si recupera l'insieme delle clausole di WHERE
IDfExpressionSet expressionSet = qb.getRootExpressionSet();
expressionSet.addSimpleAttrExpression("my_field",

IDfValue.DF_STRING,

IDfSimpleAttrExpression.SEARCH_OP_EQUAL,

false,

true,

"text");

// [...] eventuali clausole di ordinamento

return qb;
}


Il punto fondamentale è il metodo addSimpleAttrExpression pertanto analizziamone i parametri usati (confrontandoli con la query DQL vista sopra):

  1. "my_field", è il nome del campo su cui dobbiamo fare la ricerca;
  2. IDfValue.DF_STRING, è il tipo del campo (stringa, intero, boolean, ...);
  3. IDfSimpleAttrExpression.SEARCH_OP_EQUAL, è l'operazione di filtro da eseguire (=, >, <, ...);
  4. false, abilita/disabilita la ricerca case sensitive;
  5. true, configura l'attributo come repeating in modo che il framework utilizzi la clausola ANY;
  6. "text", testo da cercare.

Enjoy!

Precedente
Commenti
Nessun commento. Vuoi essere il primo.