La definizione della query di ricerca avanzata
La funzionalità di ricerca avanzata è resa disponibile tramite uno schema JSON che definisce query di ricerca.
Struttura principale
La definizione della query di ricerca avanzata in formato JSON è composta da quattro sezioni principali che specificano:
- dove eseguire la ricerca (campo
datasource) - i cui dati devono essere ricercati (campo
population) - quali condizioni aggiuntive le voci di origine devono corrispondere per essere restituite dalla ricerca (campo
filters) - come formattare e presentare i risultati (campo
output)
datasource
La sezione
datasource include i seguenti campi che sono tutti facoltativi:datatype(stringa) definisce il tipo di dati da richiamare:TASKSoINSTANCES.TASKSè il valore predefinito.systemTypes(array di stringhe) definisce il tipo di sistemi in cui devono essere richiamati i dati da:Process,BPEL,Case. Il valore predefinito dipende dal tipo di dati:ProcesseBPELper le attivitàProcesseCaseper le istanze
systemFilter(oggetto) definisce un elenco di sistemi da includere o meno durante la ricerca. Si tratta di un oggetto con due campi (array di stringhe),includeseexcludesper elencare rispettivamente gli ID dei sistemi da includere o escludere per la ricerca.
Il seguente esempio mostra i dettagli di una sezione
datasource per la ricerca di attività BPD (Process) e BPEL su tutti i sistemi tranne quella con ID sistema "4a8a5317-808e-48fe-964e-ff489ed356ce":"datasource": {
"datatype": "TASKS",
"systemTypes": ["Process", "BPEL"],
"systemFilter": {
"excludes": ["4a8a5317-808e-48fe-964e-ff489ed356ce"]
}
}Questo esempio mostra i dettagli di una sezione
datasource per ricercare le istanze del caso su tutti i sistemi:"datasource": {
"datatype": "INSTANCES",
"systemTypes": ["Case"]
}population
La sezione
population attualmente supporta una singola destinazione e può essere omessa dalla query di ricerca:target(stringa):SELF(ricerca delle proprie attività e istanze)
Il seguente esempio mostra i dettagli della sezione
population predefinita:"population": {
"target": "SELF"
}filters
Un filtro è una serie di condizioni sui campi dell'attività pubblica o dell'istanza. Solo le attività o le istanze che corrispondono alle condizioni aggiuntive definite nella sezione
filters verranno restituite dalla ricerca. La sezione filters include i seguenti campi che sono tutti facoltativi:interaction(stringa) sfrutta i campi privati per consentire un facile filtraggio per stato. È l'equivalente del campointeractiondi Ricerche salvate e supporta gli stessi valori:claimed: attività che sono state richieste e che non sono state ancora completate (non valide per la ricerca delle istanze)available: attività non ancora richieste e non ancora completate (non valide per la ricerca di istanze)claimed_and_available: attività non ancora completate (non valide per la ricerca dell'istanza)completed: attività o istanze completateactive: istanze che non sono ancora state completate (non valide per la ricerca di attività)failed: istanze non riuscite (non valide per la ricerca di attività)all: tutte le attività e le istanze indipendentemente dal loro stato corrente.
all.caseScope(stringa) è l'ambito della ricerca per le istanze del caso. I possibili valori sono:Allowed: tutte le istanze del caso che la popolazione può visualizzareAssigned: solo le istanze del caso assegnate alla popolazione
Assigned.v1_conditions: condizioni di ricerca salvate (array di condizioni che devono corrispondere tutte)v1_queryFilter(stringa): sintassi di tipo SQL, uguale al parametro queryFilter dell'API REST GET /v1/tasks e PUT /v1/instances .v1_searchFilter(string): sintassi di ricerca testo completo, uguale al parametrosearchFilterdell'API REST GET /v1/tasks .json_query(oggetto): nuova sintassi JSON che supporta la combinazione AND, OR e NOT di condizioni. Il filtrojson_queryè un oggetto JSON (albero). I campi sono condizioni di ricerca salvata (field, operator, value) che possono essere combinate con and, ore not.Il seguente esempio illustra una query nella sintassi JSON:"json_query": { ”not": { ”or": [{ "field": "taskPriority", "operator": "GreaterThan", "value": 100 }, { ”and": [{ "field": "customer", "operator": "Equals", "value": ”ACME corp." }, { "field": "product", "operator": "Equals", "value": "CP4BA" }] }] } }
Il seguente esempio mostra i dettagli di una sezione
filters per richiamare le attività richieste che hanno una priorità superiore a 100 e che hanno almeno un campo che includa la parola "ACME" (ricerca testo completo in tutti i valori dei campi attività):"filters": {
"interaction": "claimed",
"json_query": {
"field": "taskPriority",
"operator": "GreaterThan",
"value": 100
},
"v1_searchFilter": "ACME"
}output
La sezione
output definisce come presentare i risultati, in base ai seguenti campi che sono tutti facoltativi:fields(array di stringhe): elenco di campi da restituire per ogni attività o istanza.includeAllBusinessData(booleano): restituisce tutti i campi di dati di business contemporaneamente.falseè il valore predefinito.usersFullName(booleano): specifica come formattare le informazioni dell'utente nei risultati (nome completo o ID utente).trueè il valore predefinito.aliases(array di oggetti): elenco di alias (uguale al campo Ricerca salvataaliases)sort(array di oggetti): specifica come ordinare i risultati. Ogni oggetto nell'array ha due campi,field(stringa) è il nome di un campo su cui ordinare i risultati eorder(stringa),ASCoDESC(valore predefinitoASC) a seconda che i risultati debbano essere ordinati rispettivamente in base al valore del campo crescente o decrescente.alphabeticalSort(stringa): ordina per ordine alfabetico e lessicografico (per i campi stringa a cui si fa riferimento nel camposort).size(intero): numero massimo di risultati nella risposta (il valore predefinito è 25).stats(oggetto): statistiche da restituire con i risultati. Attualmente è possibile restituire un singolo tipo di statistiche (uguale a quando si esegue una ricerca salvata con il parametrocalcStatsimpostato sutrue), specificato impostando il parametrotype(stringa) dell'oggettostatssuBasic
Il seguente esempio mostra i dettagli di una sezione
output per una ricerca di attività che richiede il resoconto dell'attività, l'ID attività, l'ID istanza, l'attività a rischio e tutti i dati di business per le attività corrispondenti, ordinati in base all'attività ascendente a rischio, con un massimo di 50 risultati e le statistiche di base insieme ai risultati:"output": {
"fields": ["taskNarrative", "taskId", "instanceId", "taskAtRiskTime"],
"includeAllBusinessData": true,
"sort": [{
"field": "taskAtRiskTime",
"order": "ASC"
}],
"size": 50,
"stats": {
"type": "Basic"
}
}Metadati delle query di ricerca riutilizzabili
Analogamente alle ricerche salvate, le definizioni delle query di ricerca avanzata possono essere archiviate e condivise con il team, utilizzando l'API REST delle query di ricerca riutilizzabili.
metadata
Le query di ricerca riutilizzabili hanno un campo
metadata (oggetto) aggiuntivo, che contiene i seguenti campi:name(string): un nome univoco obbligatorio per la ricerca riutilizzabile;description(stringa): una descrizione facoltativa per la query di ricerca riutilizzabile;sharing(oggetto): vengono condivise informazioni facoltative sulla query di ricerca riutilizzabile. Include i seguenti campi:shared(booleano):trueper condividere con altri utenti,false(valore predefinito) altrimentiteams(array di oggetti): elenco di team di processi con cui condividere la query di ricerca. Senull,undefinedo vuoto mentresharedètrue, la query di ricerca viene condivisa con tutti. Per condividere con un team di processi specifico di cui si è membri o responsabili, definire questo team nell'array (notare che un singolo valore è attualmente supportato) utilizzando un oggetto con il campoteamIdper l'identificativo del team di processi.
owner(oggetto): informazioni sull'utente che possiede la query di ricerca riutilizzabilecreator(oggetto): informazioni sull'utente che ha creato la query di ricerca riutilizzabilelastUpdater(oggetto): informazioni sull'utente che ha aggiornato per ultimo la query di ricerca riutilizzabilecreationDate(stringa): ISO8601 data/ora in cui è stata creata la query di ricerca riutilizzabilelastUpdateDate(stringa): ISO8601 data / ora dell'ultimo aggiornamento della query di ricerca riutilizzabile
L'esempio riportato di seguito mostra i dettagli della sezione
metadata per una query di ricerca riutilizzabile:"metadata": {
"name": "my tasks list",
"description": "a search query that retrieves my task list",
"sharing": {
"shared": true,
"teams": [{
"teamId": "24.6615a4b0-fd38-4ea5-8bc0-69d2f107369e",
"teamName": "Human Resources",
"processAppName": "Hiring Sample"
}],
},
"owner": {
"id": "jane.doe@acme.com",
"fullName": "Jane Doe"
},
"creator": {
"id": "admin@acme.com",
"fullName": "Administrator"
},
"lastUpdater": {
"id": "user.name@ibm.com",
"fullName": "User Name"
},
"creationDate": "2024-01-31T12:34:42.183Z",
"lastUpdateDate": "2024-02-01T16:03:12.874Z"
}