Se c’è un aspetto che determina il successo di una applicazione, quel qualcosa è senza dubbio la capacità di soddisfare il bisogno che ha un utente di trovare quello che cerca nel più breve tempo possibile.
Non è un mistero, infatti, che la popolarità dei più famosi motori di ricerca sia dovuta proprio a questo aspetto.
Anche le applicazioni gestionali non fanno eccezione e secondo me dovrebbero sempre mettere a disposizione degli utente funzionalità di ricerca avanzate.
Mi riferisco in particolare alla possibilità di eseguire nei sistemi delle ricerca globali, ovvero capaci di restituire all’utente i riferimenti a diverse tipologie di oggetti.
Cosa significa esattamente?
Bene, facciamo qualche esempio concreto per capirci meglio.
Immaginiamo di avere un CRM all’interno del quale vengono gestiti leads, contatti, opportunità, offerte, ecc..
Quando un venditore fa una ricerca per nome cliente sarebbe utile che il sistema restituisse tutti gli oggetti correlati al quel cliente affinché possa vedere in sola pagina tutti i risultati, opportunamente raggruppati per tipo.
In questo modo l’utente non dovrebbe navigare tra pagine diverse per andare letteralmente a caccia di quello di cui ha bisogno.
Un altro esempio potrebbe essere quello di un operatore del customer care che effettuando anch’esso una ricerca per nome cliente dovrebbe accedere velocemente a tutte le richieste di supporto, gli ordini effettuati e gli interventi di assistenza che sono stati prestati nel tempo.
Ovviamente questi sono solo due casi d’uso ma se ne potrebbero fare a decine.
In questo articolo ti spiegherò come puoi costruire con Oracle APEX una pagina di ricerca globale, ovvero capace di fare più ricerche simultaneamente.
IN QUESTO ARTICOLO
Prima di Iniziare
Per fare questo esercizio utilizzeremo una APP di prova messa a disposizione nella APP Gallery di Oracle APEX che si chiama Opportunities e che altro non è che un semplice CRM.
- Accedi all’APP Builder
- Clicca su Create New APP > Starter APP e seleziona l’applicazione chiamata Opportunities
- Clicca Install e avvia l’applicazione.

Come noterai immediatamente, usando questo semplice CRM puoi gestire i tipici oggetti di un qualsiasi CRM come Leads, le Opportunità e i Clienti.
Quello che faremo è creare una pagina di ricerca globale che sia in grado di restituire i riferimenti a più oggetti.
Utilizzeremo un metodo molto facile ed immediato basato sull’utilizzo del componente Search, introdotto con la Release 22.2 di Oracle APEX.
Come configurare le Ricerche (Searches)
L’oggetto Search è indubbiamente il modo più immediato e veloce per creare una funzionalità di ricerca globale.
Per configurarlo dovremo prima di tutto impostare le Ricerche (Search Configurations).
Cosa sarebbero esattamente?
Si tratta di una novità che è stato introdotta proproio con la Release 22.2 di Oracle APEX.
Una Ricerca è un oggetto condiviso (Shared Component) che devi configurare per definire gli oggetti che devono essere cercati dal componente Search (tra poco capirai di cosa parlo).
Dovrai configurare una Ricerca per ciascun oggetto che desideri cercare.
Poichè nel mio caso vorrei costruire una ricerca globale che lavori su Leads, Contacts, Accounts ed Opportunities, dovrò configurare una Ricerca per ciascuno di questi oggetti.
Ricerca dei Leads
- Accedi all’APP Builder e vai in Shared Components > Search Configurations

- Clicca Create per configurare una nuova Ricerca. Seleziona il tipo di ricerca Standard (ma puoi usare anche delle Liste oppure una tabella indicizzata da Oracle Text)

- Nella schermata successiva devi configurare l’Origine Dati della Ricerca
- Data Source: Local Database
- Source Type: SQL Query

- Inserisci la query seguente e premi Next
select l.id lead_id,
l.row_key ,
nvl(l.lead_priority, 5) lead_priority,
c.customer_name account_name,
slsc.status_code lead_status,
ls.lead_source,
t.territory_name,
l.lead_name_01 name
from eba_sales_leads l
left join eba_sales_customers c
on c.id = l.account_id
left join eba_sales_territories t
on t.id = c.customer_territory_id
left join eba_sales_lead_status_codes slsc
on slsc.id = l.lead_status_id
left join eba_sales_lead_sources ls
on ls.id = l.lead_source_id
- Nella sezione Column Mapping andremo a configurare i campo della Ricerca.
- Primary Key Column: LEAD_ID
- Title Column: NAME
- Icon Source: Icon Class
- Icon CSS Classes: fa-flag
- Clicca Create Search Configuration per completare la procedura

Una volta creata la Ricerca possiamo personalizzarla ulteriormente. Ad esempio possiamo aggiungere altri campi da visualizzare.
- Vai alla sezione Column Mapping e configura le opzioni seguenti:
- Primary Key Column: LEAD_ID
- Title Column: NAME
- Subtitle Column: ACCOUNT_NAME
- Description Column: LEAD_STATUS

- Vai alla sezione Link per impostare la pagina di destinazione
- Link Type: Redirect to Page in this Application
- Page: inserisci la pagina di destinazione
- Set these items: inserisci il parametri da passare alla pagina
- With these Value: inserisci i valori dei parametri da passare

- Clicca Apply Changes per salvare il lavoro
Ricerca dei Contacts
In maniera del tutto simile a quando visto poco fa, dovrai configurare una Ricerca per i Contatti
- Torna in Shared Components > Search Configurations
- Clicca Create per configurare una nuova Ricerca di tipo Standard di nome Contacts
- Seleziona la Source Type di tipo SQL Query ed inserisci la seguente Query SQL
select cc.id contact_id,
cc.row_key,
cc.contact_title,
cc.contact_name,
cc.contact_email,
c.customer_name account,
t.territory_name
from eba_sales_customer_contacts cc
join eba_sales_customers c
on c.id = cc.customer_id
left join eba_sales_territories t
on t.id = c.customer_territory_id
- Vai in Column Mapping per configurare le informazioni da visualizzare nella Pagina di Ricerca
- Primary Key Column: CONTACT_ID
- Title Column: CONTACT_NAME
- Subtitle Column: CONTACT_TITLE
- Custom Column 1: ACCOUNT

- Vai alla sezione Link e configura come in figura

Ricerca degli Accounts
Configura la Ricerca degli Accounts ovvero i Clienti che sono stati salvati nel CRM
- Query SQL
select c.id account_id,
c.row_key,
c.customer_name,
t.territory_name
from eba_sales_customers c
left join eba_sales_territories t
on c.customer_territory_id = t.id
- Column Mapping
- Primary Key Column: ACCOUNT_ID
- Title Column: CUSTOMER_NAME
- Subtitle Column: TERRITORY_NAME

- Link

Ricerca delle Opportunità
Completiamo la configurazione delle Ricerche con quella per le Opportunità
- Query SQL
select d.id oppty_id,
d.row_key,
d.deal_name,
t.territory_name,
c.customer_name account,
dsc.status_code,
d.deal_amount
from eba_sales_deals d
join eba_sales_customers c
on c.id = d.customer_id
left join eba_sales_deal_status_codes dsc
on dsc.id = d.deal_status_code_id
left join eba_sales_territories t
on t.id = c.customer_territory_id
- Column Mapping
- Primary Key Column: OPPTY_ID
- Title Column: DEAL_NAME
- Subtitle Column: STATUS_COLUMN
- Custom Column 1: ACCOUNT
- Badge Column: DEAL_AMOUNT

- Link

Come creare una Pagina di Ricerca (Search Page)
Ora che abbiamo configurato gli oggetti da cercare possiamo finalmente creare la nostra pagina di ricerca.
- Accedi all’APP Builder e clicca Create Page
- Seleziona il tipo pagina Search Page e clicca Next

- Configura la Search Page:
- Name: Search Page
- Page Mode: Normal
- Nelle opzioni Search Configurations seleziona quali Ricerche tra quelle che hai creato prima desideri che la pagina esegua e poi premi Create Page.

Il risultato che dovresti ottenere è una pagina fatta più o meno così

Search Results è un componente di tipo Search che, come vedi in figura, è collegato alle quattro Ricerche che abbiamo configurato,
Proviamo ad eseguire la pagina per vedere il risultato finale.
- Dal Page Builder clicca su Run Page
- Inserisci la chiave di ricerca che preferisci per eseguire una ricerca.
Se hai fatto tutto correttamente vedrai apparire nei risultato diversi tipi di oggetti.

Poichè abbiamo definito i Link è possibile cliccare su uno qualsiasi dei record per accedere alla sua pagina di dettaglio.
Come configurare la Pagina di Ricerca
Modifichiamo la Page Search affinché sia in grado di cercare altre tipologie di oggetti.
- Accedi all’APP Builder e seleziona il componente Search

- Seleziona Search Sources e con il pulsante destro del mouse clicca Create Search Source

- Seleziona la nuova origine che hai creato

- Assegna un nome e specifica la Ricerca che deve essere utilizzata. Ad esempio io ho creato una nuova Ricerca per i territori (che ho chiamato con grande fantasia Territories)

Conclusioni
Abbiamo finito, spero che questa funzionalità ti piaccia.
Io personalmente l’ho molto apprezzata perché arricchisce non poco le potenzialità delle applicazioni gestionali sviluppate con Oracle APEX.
Se poi desideri approfondire altri metodi di ricerca che puoi costruire ti consiglio di leggere questo articolo.
Un abbraccio
Daniele
Lascia un commento