Gestione di un risultato della ricerca in modo programmatico

I risultati della ricerca possono essere sostanziali. Invece di utilizzare un risultato di ricerca di grandi dimensioni in un'interfaccia utente, è possibile analizzare i risultati della ricerca in modo programmatico.

L'analisi dei risultati della ricerca in modo programmatico può essere suddivisa in due metodi: l'analisi di un risultato della ricerca generico, ossia l'analisi di una query standard che restituisce una serie di documenti in oggetti di business e l'analisi di un risultato della ricerca di tipo forte in cui è specificato il tipo di oggetto di business. Un risultato della ricerca fortemente digitato aggiunge una precisione che può migliorare le prestazioni durante l'analisi del risultato della ricerca generico.

Analisi di un risultato della ricerca generico

Il seguente codice JavaScript presuppone che la query per il risultato della ricerca sia stata creata in modo standard, come descritto in Creazione di una query per un'operazione di ricerca Enterprise Content Management. In altre parole, la query non ha utilizzato il parametro di input del tipo di restituzione facoltativo dove è stato specificato un tipo di oggetto di business specifico. Il parametro di input Tipo di restituzione è descritto nella sezione relativa all'operazione di ricerca in Associazione dati nelle operazioni di Enterprise Content Management.

L'istruzione SELECT utilizzata nel seguente esempio è SELECT cmis:name, cmis:creationDate, cmis:objectId FROM cmis:document ORDER BY cmis:name ASC.

In questo esempio, prendiamo un risultato di ricerca generica ed estraiamo gli ID di tutti i documenti trovati e li memorizziamo in un array. Gli ID documento sono informazioni di base utilizzate dalla maggior parte delle operazioni ECM.

Quando non viene specificato un tipo di ritorno per l'operazione di ricerca, il campo ECMSearchResult.resultSet contiene un oggetto ECMSearchResultSet, che a sua volta contiene un elenco di oggetti ECMSearchResultRow.

ECMSearchResult.propertyMetadata contiene le informazioni sulle colonne specificate nella query CMIS e può essere utilizzato per cercare colonne specifiche, come mostrato di seguito.

/* Property metadata is captured by the ECMPropertyMetadata business object */
var columnMetadata = tw.local.searchResult.propertyMetadata;

var idColumnIndex = -1;

/*
 * Check if a search result found. Find which column contains the ID column and
 * save its index so we can retrieve the right value from each row.
 */

if (tw.local.searchResult.numItems > 0) {
	for (var i = 0; i < columnMetadata.length; i++) {
		if (columnMetadata[i].queryName == 'cmis:objectId') {
			idColumnIndex = i;
			break;
		}
	}

	tw.local.documentIds = new tw.object.listOf.ECMID();

	var resultSet = tw.local.searchResult.resultSet;
	for (var i = 0; i < resultSet.row.length; i++) {
		tw.local.documentIds[i] = resultSet.row[i].column[idColumnIndex];
	}
} else {
	/* No search result */
}

Analisi di un risultato di ricerca fortemente digitato

Il seguente codice JavaScript presuppone che la query per il risultato della ricerca sia stata creata con il parametro di input del tipo di restituzione facoltativo in cui è stato specificato un tipo di oggetto di business. Il campo per il parametro di input Tipo di restituzione è modificabile solo se è stata selezionata l'opzione Associazione dati nella pagina Filtri contenuto. Il parametro di input Tipo di restituzione è descritto nella sezione relativa all'operazione di ricerca in Associazione dati nelle operazioni di Enterprise Content Management.

Il parametro Return type deve essere mappato a una variabile di output pubblica, ad esempio documentBO, che ha un tipo ECMSearchResultBO. Si noti che è l'utente a creare ECMSearchResultBO; non viene fornito per l'utente. Selezionare la check box Elenco.

L'istruzione SELECT utilizzata nel seguente esempio è SELECT cmis:objectId AS documentId FROM cmis:document .

/* In this example, we take a strongly typed result and extract the business objects 
returned by the search operation. The ID column is mapped to the business object's 
documentID property in the CMIS SELECT statement. So we simply return the array of 
business objects for the caller to process.
*/

/* Set the return list of ECMSearchResultBO to output the output variable and we are done */
var resultSet = tw.local.searchResult.resultSet;

if(resultSet.row.length > 0){
    tw.local.documentBO = resultSet.row;
}