Sharepoint Server 2016: Creare un Content Source basato su Business Data Connectivity Services
Utilizzando la Search Service Application in SharePoint è possibile indicizzare diverse tipologie di dati. Gli approcci sono spesso specifici per tipologia e basati sulle singole esigenze. Come fare se ciò che dobbiamo indicizzare persiste esclusivamente su DB?
In questa guida vedremo come creare un content source relativo a dati contenuti in una tabella (o una vista) SQL Server, utilizzando Business Data Connectivity Service e Secure Store Service.
Prerequisiti:
- SharePoint 2016
- Business Data Connectivity Service Application
- Secure Store Service Application
- Search Service Application
- SQL Server
- SharePoint Designer 2013
Secure Store Service Application
Dopo aver aperto la Central Administration Console di SharePoint, clicchiamo su “Manage Service Applications”. Selezioniamo la nostra Secure Store Service Application e clicchiamo, nella ribbon bar, sul pulsante “Manage”:
Figura 1: Central Administration Console – Service Applications
Generiamo una nuova chiave cliccando su “Generate New Key”:
Figura 2: Secure Store Service Application
Inseriamo una pass phrase e clicchiamo su OK.
Figura 3: Secure Store Service Application – Nuova Chiave
L’obbiettivo è indicizzare il contenuto della tabella SQL “Utenti” senza lavorare direttamente su SQL Server. La tabella è la seguente:
Figura 4: SQL Server Management Studio – Tabella
Per fare ciò clicchiamo su “NEW” e seguiamo il wizard per la creazione di una nuova Secure Store Target Application.
Figura 5: Secure Store Service Target Application
Clicchiamo su Next per continuare.
In questa fase possiamo scegliere di configurare le modalità di visualizzazione dei campi Username e Password. Questa configurazione non potrà essere modificata successivamente quindi è necessario prestare attenzione. Lasciando tutto di default la password sarà mascherata come da standard. Clicchiamo su Next per continuare.
Figura 6: Secure Store Service Target Application
Configuriamo l’amministratore (o gli amministratori) della Target Application ed i membri che potranno utilizzarla.
Figura 7: Secure Store Service Target Application
Figura 8: Secure Store Service Target Application – Gestione Utenti
Cliccando su OK terminiamo la prima configurazione.
Figura 9: Secure Store Service Target Application
Selezioniamo l’applicazione appena creata e clicchiamo sul pulsante Set:
Figura 10: Secure Store Service Target Application
Configuriamo le credenziali che verranno utilizzate dal gruppo configurato.
Figura 11: Secure Store Service Target Application – Credenziali
Clicchiamo su OK per confermare.
Business Data Connectivity Service Application
Con lo strumento SharePoint Designer 2013 colleghiamoci alla farm e clicchiamo su “Tipi di contenuto esterno”:
Figura 12: SharePoint Designer – Menu
Clicchiamo sull’omonimo pulsante nella ribbon bar “Tipi di contenuto esterno”.
Figura 13: SharePoint Designer – Creazione External Content Type
Inseriamo un nome e configuriamo il Sistema esterno collegato a questo elenco:
Figura 14: SharePoint Designer – Configurazione External Content Type
Clicchiamo su “Aggiungi connessione” configurare la connessione al nostro DB.
Figura 15: SharePoint Designer – Configurazione Connessione
Selezioniamo SQL Server e clicchiamo OK
Figura 16: SharePoint Designer – Selezione Fonte Dati
Configuriamo la connessione inserendo i dati relativi. Per poter utilizzare la secure target application creata in precedenza utilizziamo la configurazione “Connetti con identità di Windows rappresentata”.
Nel mio caso:
Figura 17: SharePoint Designer – Configurazione Fonte Dati
Clicchiamo su OK per confermare.
Dopo aver inserito le credenziali richieste la connessione viene effettuata.
Figura 18: SharePoint Designer – Selezione Tabella
Selezioniamo la tabella desiderata, clicchiamo con il tasto destro del mouse e selezioniamo “Crea tutte le operazioni“.
Figura 19: SharePoint Designer – Selezione Operazioni di CRUD
Con questa configurazione potremmo effettuare tutte le operazioni di CRUD operando solo sulla lista. Le modifiche verranno riportate sulla tabella direttamente da SharePoint.
Seguendo il wizard ottengo un errore: la tabella non ha chiavi primarie.
Figura 20: SharePoint Designer – Configurazioni Parametri Operazioni
Selezioniamo il campo ID in modo da poter configurare il mapping a identificatore e forzare questa configurazione sulla lista.
Figura 21: SharePoint Designer – Configurazioni Parametri Operazioni
Clicchiamo su Fine.
Per salvare la configurazione effettuata, clicchiamo sul tab DBUtenti con il tasto destro, successivamente su Salva.
Figura 22: SharePoint Designer – Configurazione Connessione
Clicchiamo con il tasto destro sul nuovo Tipo di contenuto esterno creato e selezioniamo Elenco esterno:
Figura 23: SharePoint Designer – Creazione Elenco Esterno
Inseriamo un nome ed eventualmente una descrizione
Figura 24: SharePoint Designer – Configurazione Elenco Esterno
Clicchiamo su OK per terminare.
La lista è stata creata, non ci resta che cliccare sulla URL per verificarne il funzionamento.
Figura 25: SharePoint Designer – Configurazione Elenco Esterno
Il risultato sarà il seguente:
Figura 26: SharePoint – Lista
Assicuriamoci di essere loggati per non incappare nell’errore “Permission Denied”.
Da questo momento è possibile utilizzare questa lista con tutti gli strumenti messi a disposizione da SharePoint.
Figura 27: SharePoint – Dettaglio Elemento Lista
Search Service Application
Apriamo la Search Administration console e clicchiamo su “Content Sources“.
Creiamo un nuovo Content Source che punta alla nuova lista:
Figura 28: Search Service Application – Creazione Content Source
Clicchiamo su OK per confermare.
Figura 29: Search Service Application – Elenco Content Source
Lanciamo il comando Full Crawl per eseguire l’indicizzazione cliccando su “Start Full Crawl“:
Figura 30: Search Service Application – Full Crawl
Terminata l’operazione dobbiamo creare un mapping tra i titoli delle colonne della tabella e delle managed properties ricercabili. Dobbiamo creare tre variabili per mappare:
- Nome;
- Cognome;
- Città.
Per fare ciò, clicchiamo su Search Schema
Figura 31: Search Service Application – Menu
Successivamente su “New Managed Property“:
Figura 32: Search Service Application – Search Schema
Compiliamo il campo Property name, nel mio caso “nome” ed abilitiamo i flag Searchable, Queryable e Retrivable
Figura 33: Search Service Application – Creazione Managed Property
Figura 34: Search Service Application – Configurazione Managed Property
Scorrendo verso il basso, clicchiamo su Add a Mapping
Selezioniamo il filtro “Business Data” e cerchiamo “nome”, ovvero il titolo della specifica colonna della tabella e clicchiamo su Find.
Figura 35: Search Service Application – Configurazione Mapping
Clicchiamo su OK per confermare il mapping e nuovamente su OK per completare la creazione della nuova managed property.
Ripetiamo l’operazione creando “cognome” e “città”.
Il risultato atteso è il seguente:
Figura 36: Search Service Application – Elenco Managed Properties 1
Figura 37: Search Service Application – Elenco Managed Properties 2
Rilanciamo nuovamente l’azione di full crawl ed attendiamo il termine dell’operazione.
Per interpretare meglio i risultati, utilizziamo lo SharePoint Search Query Tool disponibile al link https://github.com/SharePoint/PnP-Tools/tree/master/Solutions/SharePoint.Search.QueryTool
Una volta eseguito il programma, nel campo “Query Text” cerchiamo, ad esempio, Scarlet ed inseriamo tra le Selected Properties le managed properties configurate in precedenza “nome, cognome, città”:
Figura 38: Search Service Application – Search Query Tool – Chiamata API
Tra i Primary Results saranno visibili le colonne della nostra tabella.
Come ulteriore test, effettuiamo una chiamata alle API utilizzando il browser e puntando alla seguente URL:
http://localhost/_api/search/query?querytext=’scarlet’&selectproperties=’nome%2c+cognome%2c+città’&clienttype=’ContentSearchRegular’
Figura 39: Search Service Application – Chiamata API
Conclusioni
Indicizzare una fonte dati esterna è spesso un’operazione problematica, soprattutto in grandi infrastrutture. Il metodo descritto in questa guida è molto comodo quando la base dati è gestita da altri gruppi di lavoro e, di conseguenza, non si hanno (o non si devono avere!) responsabilità sui contenuti.
Questo è solo un tipo di approccio: Microsoft ha reso la Search Service Application molto versatile ed estremamente personalizzabile!