De fleste som har satt opp Microsoft Office SharePoint Server 2007 har satt opp synkronisering av brukerprofiler (User profiles) med Active Directory. Da har man grunnlaget for å kunne lage en oversiktlig firmakatalog i SharePoint (skal lage en artikkel på hvordan en kan sette opp synk med Active Directory i MOSS).
Når man har brukerprofiler i SharePoint så kan en bruke Data View Web Part for å lage f.eks. firmakatalog eller telefonliste. En Data View Web Part kan kobles til forskjellige datakilder – deriblant Web Services. Det er denne jeg benytter i mitt eksempel for å gjøre spørring i SharePoint’s brukerprofiler. I mitt eksempel benytter jeg en MOSS 2007 server som kalles INTRANETT01.
På Codeplex finnes det et verktøy som heter “SharePoint Search Service Tool” og som kan hjelpe deg å definere spørringer i SharePoints web services. Mitt eksempel baserer seg på dette verktøyet.
Eksempelet går gjennom hvordan du definerer spørring og hvordan du kan konfigurere en Data View Web part for å lage en telefonliste for din bedrift. Jeg forutsetter at du på forhånd har definert en side i SharePoint hvor du plasserer telefonlisten i form av en Data View Web Part.
- Start SharePointSearchServiceTool
- Skriv inn navnet på din SharePoint-server og bruk server type MOSS:
- Under “Scopes” velger du “People” (hvor du skal søke):
- I listen “Managed Search Properties” krysser du av i “IncludeInResults” på for “Lastname”, “Firstname”, “WorkPhone”, “MobilePhone” og “WorkEmail” - ta eventuelt med andre felter som du ønsker i oversikten din.
- Under “Choose Query Syntax and Options” lar du alle standardinnstillingene stå.
- Klikk på “Step 1: Generate QueryPacket Request XML” – dette vil generere spørringen som vi er ute etter i vinduet “Step 2: Review QueryPacket Request XML”. Du kan teste spørringen med å klikke på en av de to knappene under “Step 3”.
- Spørringen i “Step 2” vil se slik ut dersom du har valgt feltene som jeg har spesifisert:
<?xml version="1.0" encoding="utf-8" ?>
<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000">
<Query domain="QDomain">
<SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats>
<Context>
<QueryText language="en-US" type="MSSQLFT"><![CDATA[ SELECT Size, Rank, Path, Title, Description, Write, MobilePhone, FirstName, WorkEmail, LastName, WorkPhone FROM portal..scope() WHERE ( ("SCOPE" = 'People') ) ORDER BY "Rank" DESC ]]></QueryText>
</Context>
<Range><StartAt>1</StartAt><Count>20</Count></Range>
<EnableStemming>false</EnableStemming>
<TrimDuplicates>true</TrimDuplicates>
<IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery>
<ImplicitAndBehavior>true</ImplicitAndBehavior>
<IncludeRelevanceResults>true</IncludeRelevanceResults>
<IncludeSpecialTermResults>true</IncludeSpecialTermResults>
<IncludeHighConfidenceResults>true</IncludeHighConfidenceResults>
</Query></QueryPacket>
- Ta en kopi av spørringen som du har generert og lim den inn i Notepad. Her skal du fjerne linjeskift og mellomrom som forekommer mellom “>” og “<” slik at “> <” blir til “><”. Resultatet av dette lar du ligge i Notepad til du er klar til å bruke det i din Data View Web Part litt senere. Fjern gjerne også uvesentlige felter fra SELECT-setningen som Size, Rank, Path, Title, Description og Write. Mitt ferdige resultat ser slik ut (uten linkjeskift):
<?xml version="1.0" encoding="utf-8" ?><QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000"><Query domain="QDomain"><SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats><Context><QueryText language="en-US" type="MSSQLFT"><![CDATA[ SELECT LastName, FirstName, WorkPhone, MobilePhone, WorkEmail FROM portal..scope() WHERE ( ("SCOPE" = 'People') ) ORDER BY "Rank" DESC ]]></QueryText></Context><Range><StartAt>1</StartAt><Count>100</Count></Range><EnableStemming>false</EnableStemming><TrimDuplicates>true</TrimDuplicates><IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery><ImplicitAndBehavior>true</ImplicitAndBehavior><IncludeRelevanceResults>true</IncludeRelevanceResults><IncludeSpecialTermResults>true</IncludeSpecialTermResults><IncludeHighConfidenceResults>true</IncludeHighConfidenceResults></Query></QueryPacket>
- Start Microsoft Office SharePoint Designer 2007 og åpne området og den siden hvor du vil legge til telefonlisten i form av en Data View Web Part.
- Velg “Data View” –> “Insert Data view”
- Under Data Source Library, ekspander “XML Web Services” og klikk på “Connect to a web services..”
- Skriv inn /_vti_bin/search.asmx">/_vti_bin/search.asmx">/_vti_bin/search.asmx">/_vti_bin/search.asmx">/_vti_bin/search.asmx">http://<servernavn>/_vti_bin/search.asmx - i vårt eksempel http://intranett01/_vti_bin/search.asmx i dialogboksen og klikk på “Connect now”, endre “Operation” til “QueryEx”:
Velg queryXml og klikk Modify.
- Hent spørringen fra Notepad og lim den inn i feltet “Value” og klikk OK:
Klikk OK i neste skjema også slik at du er tilbake i hovedvinduet til SharePoint Designer.
- Åpne siden hvor du skal plassere telefonlisten/Data View Web Part.
- Velg “Insert” – > “SharePoint Controls” – > “Data View”
- Under Data Sources Library – XML Web Services – velg “Show Data”.
- Naviger ned i listen current data source til du finner feltene som vi ønsker å presentere:
- Mer alle og dra dem over til “Data view web part”
- Lagre siden.
Nå skal du ha et resultat som ser omtrent ut som dette når du åpner i nettleseren:
Herfra kan du jobbe videre med Data View Web Part for å sette på filtrering, sortering etc.