You are on page 1of 287

SharePoint2010

Dveloppez en .NET pour personnaliser SharePoint

StphaneEYSKENSLudovicLEFORT

Rsum
Ce livre sur SharePoint 2010 sadresse des dveloppeurs .NET justifiant dune exprience en ASP.NET et dsireux de personnaliser la plateforme collaborative quest Microsoft SharePoint Server 2010. Le livre dtaille le dveloppement des principaux composants et distille les conseils indispensables au dploiement de ceux-ci par le biais de fonctionnalits et de solutions SharePoint. La premire partie du livre se focalise sur le dveloppement des composants les plus couramment utiliss tels que les webparts, les colonnes personnelles, les vnements, les pages applicatives et sur la manipulation de donnes SharePoint via le langage CAML et la nouvelle API Linq. Laccent est galement mis sur le modle objet client, toute nouvelle API SharePoint 2010 permettant dinteragir avec des clients .NET, Silverlight et ECMAScript. Vous dcouvrirez aussi comment intgrer vos propres services WCF et manipuler REST dans SharePoint. La deuxime partie du livre est consacre aux divers services et outils intgrs SharePoint 2010. Parmi ceux-ci, SharePoint Designer, Excel Services, Forms Services, Access Services, Visio Services et Business Connectivity Services. Linteraction entre SharePoint et dautres technologies telles que Silverlight, jQuery est galement prsente. Enfin, les bonnes pratiques de dploiement et les possibilits dadministration via PowerShell clturent louvrage. Les deux auteurs sont reconnus Microsoft MVP (Most Valuable Professional) sur SharePoint et vous profiterez de leur exprience de terrain au travers des nombreux exemples de codes contenus dans ce livre et disponibles en tlchargement sur www.editions-eni.fr. Les chapitres du livre : Avant-propos - Les pages dans SharePoint - Personnalisation des interfaces SharePoint Manipuler les donnes dans SharePoint Les flux de travail (Workflows) Administration et dploiement SharePoint et les services SharePoint et les autres technologies

L'auteur
Stephane Eyskens est consultant depuis une douzaine d'annes sur diverses technologies et s'est consacr exclusivement .NET et SharePoint durant ces quatre dernires annes en enchanant les projets dans divers grands groupes. Il est reconnu Microsoft MVP (Most Valuable Professional) sur SharePoint depuis avril 2008. Ludovic Lefort est dveloppeur sur les technologies Microsoft depuis prs de dix ans. Actuellement consultant indpendant, ses missions concernent toutes SharePoint. Il a t reconnu Microsoft MVP (Most Valuable Professional) sur SharePoint pour la troisime anne conscutive. Les deux auteurs sont trs actifs sur les sites communautaires lis SharePoint et partagent volontiers leurs connaissances lors de sessions techniques. Ce livre est pour eux loccasion de transmettre aux lecteurs le fruit dune exprience relle sur le dveloppement autour de SharePoint.

Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI Ce livre numrique intgre plusieurs mesures de protection dont un marquage li votre identifiant visible sur les principales images.

- 1-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
crandetest:

Cet outil peut savrer trs pratique. Dune part car il vous permet de construire vos requtes via un assistant graphiqueet,dautrepart,cariloffrelapossibilitdeseconnecterauserveurSharePointparlesservicesweb.Cela signifie que vous pouvez lutiliser sur nimporte quel client Windows se trouvant en dehors de la ferme sur laquelle voustravaillez. VouspouvezletrouversurlesitedeU2Uladressehttp://www.u2u.info. Notezquaumomentdelardactiondecelivre,cetoutilneprendpasencoreenchargelesjointuresniles projectedfields.Cependant,onpeutraisonnablementesprerunemisejour.

- 24 -

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
quasimentincontournableavecSharePoint2007. Par contre, SPLINQ tant une couche dabstraction supplmentaire gnrant ellemme du CAML, ceci induit forcmentunelgredgradationdesperformances.Letempsdexcutiondescomposantsseratoujoursplusrapide siceuxcignrentdirectementleCAML. Le gain en termes de dveloppement est par contre norme Il est en effet la fois plus facile et plus rapide de travailleravecSPLINQquedetravaillerenCAML.

- 16 -

Lemodleobjetclient
Lesobjectifsdecettesectionsontlessuivants:
q

Comprendrelanotiondeclient/serveur. Apprendre dvelopper des applications Silverlight, .NET et JavaScript qui utilisent le modle objet client de SharePoint2010.

1.Introduction
LemodleobjetclientestunnouvelensembledAPIdestinesfaciliterlacommunicationentreSharePoint2010et lesapplicatifsclients. AvecSharePoint2007,lesapplicatifsclientspursdevaientgrereux mmeslacommunicationaveclesservicesweb expossparSharePoint,notammentlists.asmx. Cenouveaumodleobjetcommuniqueautomatiquementetdemaniretransparenteavecceuxci. En outre, tout est conu pour minimiser la quantit de donnes transportes sur le rseau, le nombre dappels (allers/retours) entre le client et le serveur. Avec cette nouveaut, Microsoft facilite grandement larrive de clients riches DesAPIspcifiquesexistentpourSilverlight,.NETetlECMAScriptquiestenfaitconstitudunframeworkJavaScript. Afin de garantir une certaine cohrence entre ces API, Microsoft a fait en sorte de minimiser les diffrences entre cellesci,notammentenutilisantunenomenclaturesimilaireetunemcaniquecommunepourcharger,initialiserles objetsetenvoyerlesrequtesSharePoint.

2.LeclientECMAScript
a.ParticularitsduclientECMAScript
LeclientECMAScriptestconstitudunframeworkJavaScriptdlivrparSharePoint2010etpermettantauxdivers composantswebhbergssurlesWFEdebnficierduneAPIricheetparfaitementintgreSharePoint. LinteractionentrelAPIclienteetlebackendSharePointsefaitviaunecommunicationasynchrone,cestdireun appelctclientenspcifiantauserveurunemthodedecallbackquidoittreappelelorsqueleserveuratrait larequte. LemodleobjetclientECMAScriptnepeuttreutilisquepardescomposantshbergsdanslafermeSharePoint. En effet, pour viter les problmes de cross site scripting , Microsoft a fait en sorte dinterdire lutilisation de lECMAScriptviadesapplicatifsextrieurslaferme. LeschmasuivantsymboliselacommunicationentreSharePointetleclientECMAScript:

b.OperationsCRUD(CreateReadUpdateDelete)viaECMAScript

- 1-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
List<Client> ListeClients = new List<Client>(); Client ClientSelectionne = null; public MainPage() { InitializeComponent(); ChargerClients(); } //Cette mthode charge les clients dans la liste de gauche private void ChargerClients() { if (Contexte == null) Contexte = new ClientContext("http://intranet/sites/clients"); ClientsSp = Contexte.Web.Lists.GetByTitle( "Clients").GetItems(CamlQuery.CreateAllItemsQuery()); Contexte.Load(ClientsSp, Client => Client.Include( c => c.Id, c => c["Title"], c => c["Ville"])); Contexte.ExecuteQueryAsync(RemplirListeClients, ProblemeExecution); } //mthode de callback appele en cas de problme private void ProblemeExecution(object sender, ClientRequestFailedEventArgs e) { this.Dispatcher.BeginInvoke(() => { MessageBox.Show(e.Exception.Message); }); } //mthode de callback appele si excution ok private void RemplirListeClients(object sender,ClientRequestSucceededEventArgs e) { this.Dispatcher.BeginInvoke(() => { foreach (ListItem Cli in ClientsSp) { Client NouveauClient = new Client(); NouveauClient.id = Cli.Id; NouveauClient.PhotoClient = "http://intranet/sites/clients/Photos/ContosoLogo2.jpg"; NouveauClient.NomClient = Cli["Title"] as string; FieldLookupValue VilleClient = Cli["Ville"] as FieldLookupValue; if (VilleClient != null) { NouveauClient.AdresseClient = VilleClient.LookupValue; } ListeClients.Add(NouveauClient); } Clients.ItemsSource = ListeClients; }); } //mthode appele pour supprimer un client private void SupprimerClient(int id) { ListItem ClientCible = ClientsSp.GetById(id); if (ClientCible != null) ClientCible.DeleteObject(); Contexte.ExecuteQueryAsync(ClientSupprime, ProblemeExecution); }

- 14 -

Openmirrors.com

LaccsauxdonnesviaREST
1.Introduction
La mthodologie REST (Representational State Transfer) est dsormais compltement intgre nativement dans SharePoint2010. Pourrappel,RESTnestpasunprotocolemaisbienunemthodologiequirevientauxfondementsduprotocoleHTTP. En effet, lobjectif de REST est principalement de supporter un grand nombre de requtes entrantes et doffrirune architectureSOA(ArchitectureOrienteServices)robuste.Cebesoindesupporterlachargeestlefondementprincipal duprotocoleHTTP. Celuiciestenralittrssimpleeteststatelesspardfaut,cequisignifiequaucunepersistancededonnenest prvueentrerequtes.CettenongestiondeltatdesdonnesentrelesdiffrentesrequtesHTTPavaitjustement pourbutdeminimiserlachargesupporteparlesserveursweb. Lesapplicationsweb,devenantdeplusenplusnombreusesetdeplusenplusexigeantes,ontprovoqulapparition denouveauxprotocolestelsqueSOAP(SimpleObjectAccessProtocol)etdesmcanismesdegestiondtattelsque lessessions,lecacheserveur,etc. RESTrevientauxfondamentaux,savoirlexploitationduprotocoleHTTPnu.Eneffet,seulslesverbesdebase telsquePOST,GET,PUT,DELETE,MERGEsontutiliss.linversedeSOAP,aucuneenveloppesupplmentairenest utilisepourtransporterlesdonnes. Par ailleurs, REST permet galement de rendre lURL plus significative dans la mesure o celleci ne doit pas forcment pointer vers une ressource physique existante. Au contraire, chaque partie dURL peuttre considre commeunevariable,cequipermetderaccourcirlalongueurdesURLetdelesrendreplusintuitives. LamthodologieRESTdevenantdeplusenpluslamode,iltaitimportantdelintgrercorrectementSharePoint. Ilsagissaitsurtoutdutiliserlescapacitsduframework3.5carWCFexposaitdjdesAPIRESTspcifiques.

2.IntgrationdeWCFetdeRESTdansSharePoint2010
Nativement, WCF tait totalement exclu de SharePoint 2007. Il tait bien sr possible de lintgrermaisauprixde nombreux efforts Dsormais, WCF est automatiquement intgr dans SharePoint 2010 sans qu aucune tape de configurationpralablenesoitrequise. Les services web de SharePoint sont dvelopps en WCF. Les services .asmx sont toujours prsents mais principalementpourassurerunecompatibilitarrire. LintgrationdeWCFsematrialisedelamaniresuivante:

- 1-

savoir,ledploiementdesfichiers.svcauniveaududossier14\ISAPI,desDLLdanslaGACetlaconfigurationdj raliseduserveurIISetdesweb.configlisauxapplicationsSharePoint. EnSharePoint2007,ilfallaitprendreenchargelamodificationdesweb configetlaconfigurationIISavantdepouvoir intgrerdescomposantsWCFauseindeSharePoint. SharePointexposelesservicesWCFsuivants:

Certains sont plutt prvus pour tre utiliss par SharePoint luimme et dautres, tels que ListData.svc, sont clairementdestinstreutilisspardiversesapplications Dans cette section, nous nous proccuperons de ListData.svc, le successeur de Lists.asmx qui nous permet deffectuerdesrequtesREST.

3.SyntaxedesrequtesREST
Entravaillanttoujoursavecnotresitedeclients,nousallonstoutsimplementpointerversleserviceListData.svcqui estaccessiblevialemappagevirtuel_vti_bin/ListData.svc,cestdirelemmeemplacementpourtouslesservices web.

- 2-

Openmirrors.com
Enouvrantlenavigateuretallantsurnotresite,nousdevrionsobtenirceci:

Cestdirelalistedesobjetsfaisantpartiedelastructuredusite.Enloccurrence,lesdiffrentesgaleries,lalistede clients,etc. DonclURLdusiteciblesuiviede_vti_bin/ListData.svcretourneladescriptionXMLdelastructuredusiteenquestion. Lo,avecLists.asmx,ilfallaitappeleruneWebMethodduserviceenluipassantunfluxXMLenparamtredcrivant cequelonsouhaitaitrcuprer,ilestbeaucoupplusaisdobtenirlemmetypedersultatavecListData.svc.En effet,enajoutantsimplementPaysdanslURL: http://intranet/sites/clients/_vti_bin/ListData.svc/Pays

- 3-

LeserviceretournelalistedespayscontenusdanslalistePays.Nousnavonsdoncriendfournircommeparamtre supplmentaire. CestlquelamagieRESTcommencefaireeffet.Parexemple,pourrcuprerseulementlepaysdontlID est 4, commeillustrparlimagecidessus,onpeuttoutsimplementsaisirlURL: http://intranet/sites/clients/_vti_bin/ListData.svc/Pays(4) Lasyntaxedebasesersumedonccommececi: http://<site cible>/_vti_bin/ListData.svc/<Nom Liste>(ID)

a.Filtresadditionnels
Bien sr, bien que cette syntaxe soit trs facile dutilisation, elle nest pas suffisante pour pouvoir effectuer des requtespluscomplexes Un certain nombre de paramtres additionnels peuvent tre ajouts lURL pour spcifier des critres de filtres additionnels.Ceuxcisont:
q

$filterpermetdajouteruneouplusieursconditions. $expandpermetdercuprerdesmtadonnesprovenantdautreslistes,cestsimilaireauxProjectedFields deCAMLvusprcdemment. $orderbypermetdespcifierunordredetri. $skippermetdesupprimerlesnpremierslmentsretourns. $toppermetdeneconserverquelesnpremierslmentsretourns $selectpermetdespcifierlescolonnesinclure.

EnsaisissantlURLsuivante: http://intranet/sites/clients/_vti_bin/ListData.svc/Pays?$filter= Title eq Client 1 OnrcuprelalistedesclientsdontlacolonneTitreestgalelavaleurClient1.Onpeutgalementcombinerles critres: http://intranet/sites/clients/_vti_bin/ListData.svc/Pays?$filter =((Title eq Client 1) and (Age eq 34)) or (Titre eq Client 2) On peut donc combiner des conditions avec des oprateurs logiques et utiliser des parenthses pour tablir des priorits. Lespossibilitssontquasimentinfinies.Enplusduparamtre$filter,ilestpossibledutiliserlesautresparamtres comme,parexemple,$expand. $expandpermetdespcifierquelonsouhaiteincluredesdonnesliesauxdonnesciblesparlarequte.Par exemple,silonsouhaitercuprerleclient1etaffichersonnompluslenomdelavilleetsadescription: .../_vti_bin/ListData.svc/Pays?$filter=Title eq Client 1&$expand=Ville&$select=Ville/Titre,Ville/Description Ilfautfournir$expandlenomdelacolonnederecherchequipointeverslalistedesvilles,enloccurrence,Ville. Leparamtre$selectpermetdespcifierlescolonnesinclure.Onpeutmmeenchanerlesprojections: / vti bin/ListData svc/Pays?$filter Title eq Client 1&$expand=Ville,Ville/Pays&$select=Ville/Titre,Ville/Description ,Ville/Pays/Titre OVille/Paysreprsentelachanesuivante:
- 4-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
public class RestWCFService : RestWCFInterface { public InfoDocument LireInfoDocument(string NomListe, string DocumentId) { int IdElement = 0; InfoDocument RetourMetadonnes = null; WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK; SPList ListeCible = null; try { ListeCible = SPContext.Current.Web.Lists[NomListe]; } catch { try { ListeCible = SPContext.Current.Web.Lists[new Guid(NomListe)]; } catch { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound; return null; } } try { IdElement = Convert.ToInt16(DocumentId); SPListItem ElementCible = ListeCible.GetItemById(IdElement); string ChampTitre = ListeCible.Fields.GetFieldByInternalName("Title").Title; string ChampTaille = ListeCible.Fields.GetFieldByInternalName("File_x0020_Size").Title ; string ChampDateCreation = ListeCible.Fields.GetFieldByInternalName("Created").Title; string ChampDateModification = ListeCible.Fields.GetFieldByInternalName("Last_x0020_Modified").T itle; string ChampUrl = ListeCible.Fields.GetFieldByInternalName("EncodedAbsUrl").Title; string ChampVersion = ListeCible.Fields.GetFieldByInternalName("_UIVersionString").Titl e; RetourMetadonnes = new InfoDocument(); RetourMetadonnes.Taille = (ElementCible[ChampTaille] != null) ? ElementCible[ChampTaille].ToString() : ""; RetourMetadonnes.Titre = (ElementCible[ChampTitre] != null) ? ElementCible[ChampTitre].ToString() : ""; RetourMetadonnes.Cree = (ElementCible[ChampDateCreation] != null) ? ElementCible[ChampDateCreation].ToString() : ""; RetourMetadonnes.Modifie = (ElementCible[ChampDateModification] != null) ? ElementCible[ChampDateModification].ToString() : ""; RetourMetadonnes.Url = (ElementCible[ChampUrl] != null) ? ElementCible[ChampUrl].ToString() : ""; RetourMetadonnes.Version = (ElementCible[ChampVersion] != null) ? ElementCible[ChampVersion].ToString() : ""; } catch (ArgumentException) {

- 13 -

Openmirrors.com

Conclusion
LaccsauxdonnesestgrandementfacilitdansSharePoint2010,quecesoitpourlesapplicatifsclientsouserveurs. Lo,en2007,ilfallaitimprativementmatriserleCAML,en2010,cenestplusunpassageobligmmesicelareste prfrable. Le modle objet client est certainement lune des grandes volutions car SharePoint luimme est bas dessusetlesinterfacessontprsenttrsractivesettrsconfortablesutiliser. Nul doute que des applicatifs clients de tous types (SilverLight notamment) viendront se greffer sur le colosse SharePointdanslesmoisetannesvenir.

- 1-

Openmirrors.com

Introduction
Dans ce chapitre nous allons aborder ensemble en quelques paragraphes les nouveauts apportes par SharePoint 2010encequiconcernelefluxdetravail(ouworkflowsenanglais). Pour commencer, nous allons dfinir ce quest un flux de travail. Un flux de travail est un ensemble dactions squentielles(fluxdetravailsquentiel)ounon(fluxdetravailtats). Le flux de travail est un lment central dans larchitecture de SharePoint. Dans cette nouvelle version de la plate forme collaborative, les outils de cration de flux de travail ont t fortement amliors. Nous verrons cela plus en dtaildanslasuitedecechapitre.

1.Lestypesdefluxdetravail
DanscetteversiondeSharePoint,lesfluxdetravailpeuventtreregroupsentroiscatgories:lesfluxdetravailde liste,lesfluxdetravailrutilisablesetlesfluxdetravaildesite Lesfluxdetravaildesiten taientpasprsentsdans laversion2007deSharePoint.

a.Lesfluxdetravaildeliste
Lefluxdetravaildelisteestletypeleplussimple.Ilestassociunelistebienprciseetnestutilisablequepour leslmentsdecettemmeliste.Etantdonnquelalistecibledoittrespcifiedslacrationdufluxdetravail, vouspouvezlintrieurdeceluiciaccdertousleschampsdelaliste.Cetypedefluxdetravailestpratiquede parsasimplicitdecrationmaisatteintrelativementviteseslimitesparmanquedeflexibilit.

b.Lesfluxdetravailrutilisables
Contrairementauxfluxdetravaildeliste,lesfluxdetravailrutilisablessontassocisavecuntypedecontenu(ou contenttypeenanglais)etnonplusavecunelisteprcise.Celaleurprocureuneflexibilitbeaucoupplusgrande. Eneffet,uncontenttypepeuttreassociavecuneouplusieurslistesetcedemanirecompltementdynamique. Ilnestplusncessairedeconnatrelacibledufluxdetravaildssacration. Lorsdelacrationdecetypedefluxdetravail,ilvousestdemanddechoisiruntypedecontenucibleet,comme pour la liste, cela signifie que tous les champs de ce type de contenu seront disponibles lintrieur du flux de travail. Laflexibilitdecetypedefluxdetravailvaencoreplusloin.Eneffetvouspourriezpenserquilestdoncncessaire decreruntypedecontenuparticulieravectouteslescolonnesncessairesvotrefluxdetravail.Celaauraitpour effetderendrevotrefluxdetravailutilisableuniquementpourcetypedecontenuetpoursesenfants Enralitce nestpaslecas.Vouspouvezdvelopperunfluxdetravailsurletypedecontenulmentcarilestleparentde toutautretypedecontenudeSharePoint.Parfaitdanslide,maisvousvoillimitauxchampsducontenttype lment,autrementditlacolonnetitreetquelquesautrescolonnessystme. Cestlquintervientlanotiondecolonnesdassociation.Ilsagitdecolonnesquevousallezdfinirlintrieurde votrefluxdetravail Cescolonnesserontautomatiquementajoutesl intrieurdelalisteaveclaquellevotreflux detravailseraassoci.Decettemanire,vousgarantissezvotrefluxdetravaillexistencedescolonnesdontila besoin,quelquesoitlendroitoilserautilis.Sympathique,non?

c.Lesfluxdetravaildesite
GrandenouveautdeSharePoint2010.Jusquprsentunfluxdetravailnepouvaittredmarrqupartirdun lmentdeliste.Celanestplusvraigrceaufluxdetravaildesite. Comme leur nom lindique, les flux de travail de site sont associs avec un site dans SharePoint. Un exemple frquemment rencontr est la demande dapprciation dun site. Vous souhaitez donc permettre au visiteur dun sitedevousdonnersescommentairessurceluici.Danscecas,vousnavezaucunementbesoindunelisteoudun lment dans cette liste. Le flux de travail devra simplement poser quelques questions via un formulaire et vous lenvoyerparmail.Voiciunexempleconcretolutilisationdesfluxdetravaildesiteestbienpratique.

- 1-

Lesfluxdetravailenmodedclaratif
1.PrsentationdeSharePointDesigner2010
DanscettesectionvousallezdcouvrirquelquesunesdesnouveautsapportesparSharePointDesigner2010en termesdecrationdefluxdetravail. La premire chose que vous allez remarquer est son changement de look. En effet linterface utilisateur a t compltementrevueetamliore.Commetouslesautresproduits,SharePointDesignerintgredsormaisleruban Officeafinderendresonutilisationlaplusintuitivepossible.

Finiletempsdesfentressouvrantencascadepourlaconceptiondesfluxdetravail.Cettefoislaconstructiondes fluxdetravailestcompltementintgredanslinterfacedeSharePointDesigner.

Parmi les nouvelles actions qui ont t ajoutes SharePoint Designer, vous apprcierez particulirement celle permettantlimpersonalisation.Ilestmaintenantpossibledefairetournerunfluxdetravailsurlecomptedelauteur Workflow.

Uneautreamliorationapprciableestlefaitdepouvoirchoisirlamaniredontonutiliselecontenudunchampde typepersonne.Lorsquevousutilisezcetypedechampdevotrefluxdetravail,vouspouvezdfinirlamaniredont savaleurseraretourne:

- 1-

Openmirrors.com

SharePoint Designer intgre galement un concepteur de tche permettant de crer des tches personnalises compltementparamtrables.

CeDesignervouspermetgalementdedfinirdesoprationsquisexcuterontsuivantlestatutdelatche.

- 2-

Pourterminercetteintroduction,vouspouvezgalementnoterquecontrairementlaversionprcdenteduproduit, cettefoislesadministrateursdecollectiondesitespeuventtrssimplementdfinirsilesutilisateursfinauxpeuvent ounonutiliserSharePointDesigner:

2.Crationdunpremierfluxdetravail
Commenonsparunfluxdetravailleplussimplepossibleafindesefamiliariseraveclanouvelleinterfacegraphique deSharePointDesigner. Cefluxdetravailvasimplementenvoyeruncourrierlectroniqueverslecrateurdunnouvellmentdansuneliste. PourcelanousavonsunsiteavecunelistepersonnalisequenousappelleronsDemoWF. Commenons par crer un nouveau flux de travail sur cette liste. Pour cela, cliquez sur Flux de travail, crez un nouveaufluxdetravaildelisteetchoisissezlalisteDemoWF.

- 3-

Openmirrors.com

Choisissezunnompourvotrenouveaufluxdetravail.

Vousvoiciprsentfacelinterfacedecrationdufluxdetravail.

Uneseuleactionserancessaire:lenvoidecourrierlectronique. Pourajouteruneactionsurlefluxdetravail,deuxpossibilitssoffrentvous:soitentapantledbutdunomde laction:

- 4-

SoitenutilisantlerubanOffice

AjoutezetconfigurezlactionEnvoyeruncourrierlectronique:

- 5-

Openmirrors.com

Notezquilestpossibledajouterdeslmentsdynamiquescommeparexempledanscecas:
q

Lenomcompletdelapersonneayantcrl lmentdanslaliste Letitredellment. Unlienverslestatutactueldufluxdetravail.

normmentdautres informations peuvent tre ajoutes au mail, vous les dcouvrirez par vousmme au fur et mesurequevousutiliserezSharePointDesigner. Danslesparamtresdufluxdetravail,modifiezsesoptionsdedmarragepourquildmarreautomatiquementlors delacrationdunnouvellmentdanslaliste:

Publiezensuitelefluxdetravail.

- 6-

Voil,votrefluxdetravailestmaintenantactif.Crezunnouvellmentdansvotrelistedetestpourletester.

Pour que les flux de travail puissent envoyer des courriers lectroniques, il faut que la configuration des mailssortantssoitcorrecteauniveaudevotreferme.

3.Rutilisationdunfluxdetravailexistant
UneautredesnouvellesfonctionnalitsdeSharePointDesigner2010estlefaitdepouvoirrutiliserunfluxdetravail dj existant comme point de dpart dun nouveau flux de travail. Il peut sagiraussibiendun flux de travail que vousavezcrcommedunfluxdetravailfourniavecSharePoint2010. Il ne sagit pas dhritage mais juste dune copie. Si vous modifiez le flux de travail source, les nouveaux flux de travailneserontpasimpactsparcechangement. Lesfluxdetravailrutilisablespeuventtrecopis. Copiezetmodifiez,parexemple,lefluxdetravaildapprobationfourniavecSharePoint.

Vousserezinvitchoisirunnompourvotrenouveaufluxdetravail:

- 7-

Openmirrors.com

VoustesprsentenmesuredecrervotrepropreversiondufluxdetravaildapprobationdeSharePoint2010.

4.Lesfluxdetravailrutilisablesetlescolonnesdassociation
DansSharePoint2010vouspouvezcrerdesfluxdetravailquinesontpasattachsunelisteprcisemaisplutt untypedecontenu Celapermetdedvelopperdesfluxdetravailquipourronttreattachsuneouplusieurslistes. Pourcequiestdudveloppement,ladiffrencemajeurersidedanslefaitquevousneconnaissezpaslalistedes champsquiserontdisponibleslorsdelexcutiondufluxdetravail. Admettonsquevoussouhaitiezdvelopperunfluxdetravailquipourratreattachnimportequellelistedunsite, quellequesoitsastructure Leproblmeestquedanscecasvousn aurez accs qu auchampcommuntousles typesdecontenu:Titre.
- 8-

Heureusement, une solution existe pour dfinir des champs au niveau du flux de travail et pour que ces champs soient automatiquement ajouts la liste sur laquelle le flux de travail sera attach. Il sagit des colonnes dassociation. Retournez dans SharePoint Designer et crez un nouveau flux de travail (mais, cette fois, un flux de travail rutilisable).

EntrezunnometchoisissezTouscommetypedecontenu:

prsent,dfinissezdeuxcolonnesdassociation:
q

Datedbut(Typedate,obligatoire) DateFin(Typedate,obligatoire)

- 9-

Openmirrors.com

Ajoutezensuiteuneactionenvoyantsimplementunmailaucrateurdellmentaveclesdeuxdatesdfinies.

Cesdeuxcolonnesserontdoncautomatiquementcreslorsdelassociationdufluxdetravail.Pourletester,publiez votrefluxdetravaildansSharePoint Retournezdansvotrelistedetestsurvotresiteetajoutezunnouveaufluxdetravailcetteliste:

- 10 -

Openmirrors.com

Choisissezlefluxdetravailquevousvenezdecreretassociezlevotreliste:

prsent,crezunnouvellmentdansvotreliste.Vouspouvezremarquerquevosdeuxcolonnesonttajoutes laliste

5.Lesparamtresdeformulairedinitiation
Ilestpossibleaufluxdetravaildercuprerdesdonnesentresparlutilisateuretdelesstocker.Cesdonnesne sontpasstockesdanslalistecommepourlescolonnesdassociationmaisdanslefluxdetravailluimme. Prenons l exemple suivant nous souhaitons modifier le flux de travail cr prcdemment afin qu il rcupre un commentaire de la part de lutilisateur lors du dmarrage du flux de travail. Autrement dit, lorsque lutilisateur dcideradedmarrerlefluxdetravaililseraenvoydevantunformulaireluidemandantdelaisseruncommentaire. ModifiezvotrefluxdetravaildansSharePointDesignerafindeluiajouterunparamtredeformulairedinitiation

CeparamtreseradetypeplusieurslignesdetexteetsappelleratoutsimplementCommentaire.

- 11 -

Openmirrors.com

Publieznouveauvotrefluxdetravailetdmarrezlesurunlmentdevotreliste.Vousserezinvitdfinirune valeurpourvotreparamtre.

6.ModifierlesformulairesdefluxdetravailavecInfoPath2010
Tous les formulaires de flux de travail dans SharePoint 2010 sont des formulaires InfoPath. Que lon parte dun formulaire dinitiation ou dun formulaire de tches, il sagit toujours dun formulaire pouvant tre modifi avec InfoPath2010. Lapagedespropritsdesfluxdetravailcontientunesectionformulaireslistanttouslesformulairesutilissparle fluxdetravail.Dansnotrecas,nousretrouvonsleformulairepermettantdentreruncommentairelorsdudmarrage.

Pourlemodifier,ilsuffitdecliquersursonnom.IlseraautomatiquementouvertenmodedesigndansInfoPath.

- 12 -

Openmirrors.com

Openmirrors.com

Effectuezquelquesmodificationsdestyleetrenvoyezleverslefluxdetravaillaideduboutonpublicationrapide dInfoPath.

Et voil, un vrai jeu denfant ! Dmarrez une nouvelle instance de votre flux de travail pour tester votre nouveau formulaire.

Pour en savoir plus sur la personnalisation de formulaires avec InfoPath 2010, reportezvous la section consacreInfoPathetFormServicesduchapitreSharePointetlesservicesdecelivre.

7.Import/ExportdefluxdetravaildepuisSharePointDesigner2010
TroisoutilspermettentlacrationdefluxdetravaildansSharePoint2010:
q

SharePoint2010

- 13 -

Openmirrors.com
q

Visio2010 VisualStudio2010

SharePointDesignersesitueentrelesdeuxautresoutils. UnanalystepeutparexempledfinirunnouveaufluxdetravaildansVisio2010laidedunouveaumodlefourni dorigine.EnsuiteilpeutexporterceprototypeetlefournirundveloppeurquipourralimporterdansSharePoint Designerafindelecomplter. EnsuitelesfluxdetravailrutilisablesdeSharePointDesignerpeuventtresauvscommetemplates.Celasignifie quils seront compacts dans un fichier WSP et sauvs dans la liste lment de site prsente dans votre site SharePoint. Ensuite vous devez tlcharger ce fichier WSP localement et limporter dans Visual Studio. Pour cela VisualStudiocontientuntemplatedeprojetappelImportreusablefluxdetravail.

- 14 -

LesfluxdetravaildansVisualStudio2010
1.Crationdunfluxdetravaildeliste.
PourillustrerlacrationdunfluxdetravaildelistedepuisVisualStudionousallonsutiliserunexemplesimple.Notre flux de travail dmarrera chaque modification dun lment dans une liste et crera une tche demandant la personneassignederevoirllment.Lefluxdetravailsetermineralorsquecettetcheseratermineetunmail seraenvoylapersonneayantmodifillment. CrezunnouveauprojetdansVisualStudio2010detypeSequentialWorkflow.

EntrezlURLdevotresiteetchoisissezListworkflowcommetypedefluxdetravail.

Lesfluxdetravailnepeuventpastredploysdansunesandboxedsolution. Dcidezdassocierdirectementvotrefluxdetravailavecvotrelistedetest.Celafaciliteravotredbogage.

ENI Editions - All rigths reserved - Openmirrors.com

- 1-

Openmirrors.com

Pourterminer,dfinissezquelefluxdetravaildevradmarrerchaquefoisquunlmentdelalisteestmodifi.

Vousvoiciprsentdansvotrenouveauprojetfaceaufluxdetravail.Commencezpardposerquelqueslments surleplandetravailcommececi

- 2-

ENI Editions - All rigths reserved - Openmirrors.com

Pourrsumer,vousdevezajouterlesactionssuivantes:
q

logToHistoryListActivity createTask whileActivity onTaskChanged

Configurezlesactionscommececi: LogToHistoryListActivity1

LaseulepropritdfinirestHistoryDescription,ilsagitdutextequiseraajoutlhistoriquedufluxdetravailet quiseravisibledanslapagedestatutdufluxdetravail. createTask1

ENI Editions - All rigths reserved - Openmirrors.com

- 3-

Openmirrors.com
Il sagit de lactivit qui va crer une nouvelle tche pour une personne qui sera en charge de vrifier llment modifi. AssignezlapropritCorrelationTokenaveclavaleurtaskToken. Le CorrelationToken permet dans ce cas de sassurer que lors de lexcution du flux de travail, la tche concerneparlactiononTaskChangedserabiencellecreparlactivitcreateTask1.

IlvousfautgalementcrerunnouveauFieldquicontiendralIDdelatcheetlattacherlapropritTaskId.

Doublecliquezsurlactionpourluiajoutercecode:

- 4-

ENI Editions - All rigths reserved - Openmirrors.com

Openmirrors.com

Openmirrors.com

Lestchesplanifies
Lesobjectifsdecettesectionsontlessuivants:
q

Connatrelutilitdestchesplanifies. Apprendrecrer,excuteretsupprimerunetcheplanifie. Apprendreplanifierunetche. Apprendrechoisiruntypedenregistrementpourunetche.

1.Introduction
Les tches planifies (Timer Jobs) sont des composants permettant dexcuter frquence rgulire une srie doprations.EllessontencapsulesentantquecomposantsdelafermeSharePoint. Un administrateur peut dcider de dsactiver/activer une tche, il peut galement consulter ltat de la dernire excutiondirectementdepuislacentraledadministration. SharePointlui mmeutilisecemcanismepoursesproprestchesadministrativescomme,parexemple,l envoides alertes,lavrificationdesquotasspcifis,lenvoidemails,etc. LexcutiondetoutescestchesestpriseenchargeparunserviceWindowstournantsurleserveurquisappelle WindowsSharePointServicesTimermatrialisparleprocessusOWSTIMER.EXE. EnplusdestchesstandardgnresetgresparSharePoint,ilestpossibledecrersesproprestches. La cration de tche est indique pour toute opration devant tre excute de manire rgulire (une fois par jour/semaine/mois,toutesles10minutes). Enfin, les tches planifies de SharePoint offrent une alternative celles de Windows qui jusquel taient systmatiquementutilises. CettepossibilitrestetoujoursintressantepourdestcheshybridesncessitantlafoisdaccderSharePointet desressourcesphysiquessurleserveurcarbienqu ilsoitpossibled accdercelui cidepuisunetcheSharePoint, ilestprfrabledelviter.

2.Lesdfinitionsdestches(JobDefinitions)
UnedfinitionestlentitSharePointquireprsenteunetche.Touteslesdfinitionsainsiqueltatdexcutiondes tchespeuventtreconsultsdanslacentraledadministration:

- 1-

Openmirrors.com

Surcettecapturedcran,toutescestchessontinternesSharePoint.Lesinformationsaffichessontsimplement lenomdelatche,sonchampdapplicationetsontypedeplanification.Encliquantsurunetchespcifique,vous obtenezgalementsadernireheuredexcutionetlapossibilitdactiver/dsactiverlatche:

Vouslavezsansdouteremarqu,ilnyapasdeboutonSupprimer.Poursupprimerunetche,ilfaututiliser lAPI(ApplicationProgrammingInterface). En cliquant sur tat du travail du minuteur, vous obtenez la liste des tches et leur taux de russite lors de leur dernireexcution

- 2-

Openmirrors.com
namespace Chap05.TachesPlanifiees { public class TachePlanifiee: SPJobDefinition { public TachePlanifiee() { } public TachePlanifiee( string TitreTache, SPWebApplication App, string SiteCible, string ListeCible,string ListeArchive) : base(TitreTache, App, null, SPJobLockType.Job) { this.Title = TitreTache; this.Properties["SiteCible"] = SiteCible; this.Properties["ListeCible"] = ListeCible; this.Properties["ListeArchive"]= ListeArchive; } public override void Execute(Guid targetInstanceId) { base.Execute(targetInstanceId); string NomSite = this.Properties["SiteCible"].ToString(); string NomListe = this.Properties["ListeCible"].ToString(); string NomListeArchive = this.Properties["ListeArchive"].ToString(); SPWebApplication App = this.Parent as SPWebApplication; if (App == null) throw new ApplicationException("Web application nulle"); try { SPContentDatabase Db = App.ContentDatabases[targetInstanceId]; using (SPSite Site = Db.Sites[NomSite]) { using (SPWeb Web = Site.RootWeb) { SPList ListeCible = Web.Lists[NomListe]; SPList ListeArchiveCible = Web.Lists[NomListeArchive]; SPQuery Requete = new SPQuery(); Requete.Query = "<Where><Lt><FieldRef Name=Created/><Value Type=DateTime>"; Requete.Query += SPUtility.CreateISO8601DateTimeFromSystemDateTime( DateTime.Now.AddDays(-1)).ToString(); Requete.Query+= "</Value></Lt></Where>"; SPListItemCollection ListeCibleItems = ListeCible.GetItems(Requete); foreach (SPListItem Item in ListeCibleItems) { SPListItem ItemArchive = ListeArchiveCible.Items.Add(); foreach (SPField Colonne in Item.Fields) { if (!Colonne.ReadOnlyField && ! Colonne.Hidden && Colonne.InternalName != "Attachments") ItemArchive[Colonne.Title] = Item[Colonne.Title]; } foreach (string NomFichier in Item.Attachments) { SPFile Fichier = Web.GetFile( Item.Attachments.UrlPrefix + NomFichier); ItemArchive.Attachments.Add( NomFichier, Fichier.OpenBinary()); }

- 4-

Openmirrors.com

Openmirrors.com
Pour dboguer une tche, vous devez attacher Visual Studio au processus OWSTIMER.exe et insrer un point darrtdansvotrecode,commeillustrcidessous:

VousaurezprissoinaupralablededployerlaDLL,deredmarrerIISetderedmarrerOWSTIMER.

g.Grerleserreurs
Dans SharePoint, en fonction du composant que vous dveloppez, vous pouvez dans certains cas lever une ApplicationExceptionquiseraintercepteparSharePointetaffichelcran.Dansdautrescas,commepourles tches planifies, lancer une telle exception basculera la tche en tat Failed et ajoutera une entre dans les fichiersdelogsSharePointprsentsdanslerpertoire14\LOGS
- 8-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Introduction
Depuis 2001, Microsoft a dcid de sattaquer au march des portails collaboratifs avec SPS 2001. En 2003 une nouvelleversiondummeproduitvoitlejour.Ilfautensuiteattendre2007pourvoirapparatreSharePointdclinen troisversions :WindowsSharepointServicesv3,MicrosoftOfficeSharepointServer2007standard/etMicrosoftOffice SharePointServerenterprise. Jusqualors,cettemouturetaitdeloinlapluscompltedelasrieetcellequirencontraleplusdesuccsauprsdes socits. Rares sont les entreprises aujourdhui qui nont pas implment SharePoint en leur sein. Un vritable engouementestnautourdeSharePointgrcelaversion2007. Fortdecetterussitepeucommune,MicrosoftrempileensortantSharePoint2010quisedclinegalemententrois versions :SharePointFoundation,SharePointServerStandardetSharePointServerEnterprise. Vous noterez que le mot Office nest plus inclut dans le nom, ceci afin dviter la confusion dans lesprit des nophytesquipouvaientparfoispenserqueSharePointntaitquun simple produitdelasuiteOfficetelsqueWord ouExcel.Commevousledcouvrirez,ilnenestrien,SharePointestuneplateformepartentirencessitantparfois dlaborerdesarchitecturesphysiquesetlogiquestrscomplexes. SharePoint2010comblelargementleslacunesdesonprdcesseuretoffredavantagedepossibilitsentermesde gestion documentaire, de gestion de contenu, de portail de publication etc. Lune des volutions majeures rside galement dans sa capacit implmenter des espaces accessibles depuis Internet de manire plus aise que prcdemment et galement de proposer des solutions dhbergement flexibles notamment grce au tout nouveau conceptde SandboxedSolutions . De nouvelles API destines faciliter linterfaction entre SharePoint et dautres systmes font leur apparition, SharePointdevientdeplusenplusuneplateformeapplicative. Enfin, cette version de SharePoint fait galement la part belle aux outils de personnalisation tels que SharePoint Designer, InfoPath et encapsule toute une srie de services puissants destins faciliter ladapdation de la plate formeauxbesoinsspcifiquesdesentreprises.IlestdsormaisvidentquelapersonnalisationdeSharePointnese fera pas seulement au travers de dveloppements purs et durs mais aussi en utilisant les outils et services gravitantalentours. Cestprcismentledfiquetentederelevercelivre,vouspermettredapprhenderleproduitdanstoutesadiversit afindefairelesmeilleurschoixlorsquevousserezenchargedimplmenterSharePointauseindevotreentreprise. Richesdeleurexprience,lesauteursontagrmentcelivredenombreuxexemplesdecode,dastucesetdemises engardeafindevouspermettredidentifierrapidementlesavantagesetinconvnientsdechaquesituation.Louvrage sarticuleentirementautourdexemplespratiquesprcdsdunebrveintroductionthorique. Aprs lecture de ce livre, vous serez mme dapprhender la majorit des problmatiques inhrentes la personnalisationdelaplateformeSharePoint2010.

- 1-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

LesressourcesphysiquesdunserveurSharePoint
1.SharePointRoot,laracine
LerpertoireC:\Program Files\Fichiers Communs\Microsoft Shared\web server extensions\14\estrgulirement appel la racine SharePoint ou encore SharePointRoot en anglais. Il tait appel 12Hive dans la version 2007. Sicerpertoireattireautantlattention,cestparcequelamajoritdescomposantsSharePointquevousdveloppez doiventytredploys. Pour bien comprendre la manire dont SharePoint est organis, le plus simple est de parcourir les principaux rpertoires et didentifier leur rle. Le rpertoireTEMPLATE intresse plus particulirement les dveloppeurs, voici doncsacomposition:

Etvoicilerledesprincipauxrpertoires:
q

ADMIN:contientlespagesetlesdiffrentesressourcesutilisesparlacentraledadministration. CONTROLTEMPLATES : contient tous les contrles utilisateurs qui sont utiliss dans les colonnes personnelles,ventuellementlesWebPart. FEATURES:contienttouteslesfonctionnalitsdelaferme. IMAGES:contienttouteslesimagesaffichesdanslessites. LAYOUTS:contienttouteslespagesapplicativesetcertainespagesmatres. SiteTemplates:contientlesfichiersrelatifsauxmodlesdesites. SQL:contientdiffrentsscriptsSQLetcertificats. THEMES:contientlesimagesetlesfichiersCSSutilissparlesthmes.

- 1-

XML : contient les schmas XSD de CAML, contient les fichiers CAML dcrivant les colonnes standard & personnelles

Cesrpertoiressontlamajoritdutempslacibleprincipaledesdploiements. Directementendessousdu14,vousretrouvezaussilesrpertoiressuivants:
q

LOGS : tous les fichiers logs de SharePoint sy trouvent et doivent tre consults lorsque vous avez un problme. ISAPI:touteslesDLLSharePointsytrouventainsiquelesservicesweb. BIN:touslesexcutablesSharePoint(dontstsadm)sytrouvent. Resources:fichiersderessourcesdeSharePointpourgrerlemultilinguisme.

2.LesrpertoiresWeb
SharePointtantbassurASP.NETetdoncsurIIS,ilbnficiedunestructurederpertoireswebsimilairecelledes applicationswebclassiques. VousretrouverezdonctoutelastructureSharePointdanslerpertoireC:\Inetpub\wwwroot\wss\VirtualDirectories. Ensuite,unrpertoireparapplicationyfigure.Voicisastructure:

Soit,unsousrpertoireparapplicationdontlenomestleportsurlequellapplicationSharePointcoute. Dans chacun de ces rpertoires, vous retrouvez les standards dASP.NET, savoir, le rpertoire bin, App_GlobalResourcesetc.

3.LaGAC(globalassemblycache)
LaGACnestpasdutoutspcifiqueSharePointmaispluttlaplateformeDotNet.Cestunesortedemplacement systme o est localise toute une srie dassemblages qui peuvent tre versionns. En outre, tout assemblage placdanslaGACbnficiedumodedescurit FullTrustsignifiantquelecodeexcutparunassemblagedela GAC peut plus ou moins tout faire. Certains composants SharePoint doivent imprativement tre dploys dans la GACmaiscenestpaslecasdetous. LesWebPartparexemplepeuventtoutfaittredploysdanslerpertoirebindelapplicationwebdanslaquelle onsouhaitelesutiliser. UnebonnepratiqueconsisteviterlaGACautantquepossibleafindenepasoctroyerunassemblageplusde droitsqueceuxdontilarellementbesoin.

- 2-

Openmirrors.com

LessolutionsSharePoint
1.CrerdessolutionsaveclesmodlesdeprojetVisualStudio
AvantSharePoint2010etVisualStudio2010,lesmodlesdeprojetSharePoint2007deVisualStudio2008ntaient pas idaux dans la mesure o ils ne donnaient pas la main au dveloppeur sur la manire dont la solution SharePoint.wsptaitgnre. Pour certains types de projet, la solution tait dailleurs mme directement supprime par Visual Studio aprs dploiement. Or, il va de soi que la seule mthode professionnelle et industrialise de dploiement de composants SharePoint passepardessolutions. Ilfautdoncoubliertoutemthodequiconsisteraitdployermanuellement,viadesfichiersbatch,viaPowerShell des composants pour aller faire des copies de fichiers sur les diffrents serveurs de la ferme, de redmarrer manuellementIISetc. LecaractremultiserveursdeSharePointrendledploiementdecomposantstrsimportant.Eneffet,lesdutemps, lesdveloppeursdveloppentsurunemachinedetypestandaloneotoutesttoujoursdploysurcetteseule machine.Ducoup,destechniquesdedploiementmanuelssonttoujourspossiblesmaislejouroilfautdployeren production, elles ne sont plus adaptes et peuvent mme poser de gros problmes. Par exemple, dans une architecturedefermesimplifiecommecelleillustrecidessous:

SilondploieuncomposantWebPart,ilfautquauminimumlaDDLetlefichier.webpartsoientdployssurlesdeux serveurs WFE (Web Front End). Si vous omettez de les dployer sur un des deux WFE, lorsquun visiteur se connectera, cela fonctionnera ou non en fonction du WFE sur lequel le load balancer (rpartisseur de charge) aura rediriglarequteHTTP. Dans les environnements rels, SharePoint est systmatiquement install en mode ferme et donc sur plusieurs serveurs. LessolutionsSharePointpermettentdedployerautomatiquementlescomposantssurtouslesserveursdelaferme.
- 1-

Openmirrors.com

Openmirrors.com
SharePoint2010,ilestdsormaispossiblededployerdessolutionsauniveaudescollectionsdesites.Cetypede solutionestappelSandBoxedSolution. Cessolutionsoffrentlesavantagessuivants:
q

Un administrateur de collection de sites peut ajouter/dployer/activer une solution au niveau de sa propre collectionsansdemanderuneassistancesupplmentaireauxquipestechniques. Laconsommationdecessolutionspeuttrecontrleparladministrateurdelaferme.Ilpeutleurallouerplus oumoinsderessources. Ces solutions ne peuvent pas dpasser la porte dune collection. Cela signifie quaucun lment de la solution ne peut tre dploy physiquement sur lun des serveurs. Tout est stock entirement en base de donnes. En cas dhbergement mutualis de sites SharePoint, les diffrents espaces peuvent indpendamment dployerleurspropressolutionssansinterfreraveclesautres. Ellesoffrentuneplusgrandegarantieenmatiredescurit.

Cetypedesolutionestsansdoutepromisunbelavenir.

- 5-

Rsum
Bien comprendre la gestion des solutions et des fonctionnalits constitue certainement une tape majeure dans lapprentissagedeSharePoint.Toutdveloppementprofessionneldoittredlivrsousformedesolutionauxquipes grantlinfrastructure. Bien quilexistedestechniquesalternatives,ilfautidalementtoujoursrecourirauxsolutions mmedansunenvironnementdedveloppement,quilsoitdentrepriseoupersonnel. Danscechapitre,vousavezappris:
q

dployervoscomposantsauseindefonctionnalits. comprendrelesdiffrentsniveauxdefonctionnalitsetlesinterdpendancesentreceuxci. identifierlesdiffrentesressourcesciblesparlesdploiements(lesrpertoiresweb,laracineSharePoint,la GAC). comprendrelintrtdetravailleravecdessolutions. gnrerdessolutionsavecVisualStudiooumanuellement. utiliserPowerShellpourladministrationrguliredeSharePoint. crervosproprescommandesPowerShell. utiliserlestchesplanifies.

- 1-

Openmirrors.com

Introduction
SharePoint2010marquelafindesfournisseursdeservicespartags(Shared Services Provider).LesSSPtaientune briqueimportantedanslarchitecturedeMOSS2007.Ilspermettaientdepartagerdesfonctionnalitslintrieurdela ferme.Cesfonctionnalitstaientparexemplelesprofilsutilisateurs,lemoteurderechercheouencoreformsservices. Danslaversion2010deSharePoint,lesSSPsontremplacsparcequelonappelleplussimplementdesServices.Il nestplusncessairemaintenantdecrerdesSSPpourutiliserlesservices.LesservicesdeSharePointpeuventtre compars aux services de Windows : il sagit de processus tournant en arrireplan et disponibles par tous les composantsdevotreferme.

Dans ce chapitre, nous allons aborder quelquesuns de ces services, plus prcisment les services permettant dinteragiraveclesproduitsdelagammeOffice2010.

- 1-

ExcelServices
1.Introduction
Le service de calcul Excel (Excel Services) est un lment des applications de services offert par SharePoint. Dans beaucoupdesocits,lesclasseursExcelreprsententunepartieimportantedesapplicationsutilises,etcedans presquetouslesdpartements.Cesfichierssontquelquefoisrelativementcomplexesetunercriturecompltede touteslesoprationsreprsenteuntravaillongetcoteux. CestpourtoutescesraisonsqueSharePointoffrelapossibilitdintgrercesclasseursdirectementpartirdeson interface afin de permettre leur partage entre tous les utilisateurs. Une autre fonctionnalit intressante est dautoriserleurutilisationautraversduneinterfaceWeb,sansncessiterlinstallationduclientExcel. Les services de calcul Excel apportent galement encore plus de puissance votre classeur en vous donnant la possibilitdcrirevospropresfonctionsExceldanslelangage.NETdevotrechoix. Linverseestgalementvrai,vosclasseursExcelpeuventleurtourfournirunebasedecalculpuissantepourvos applicationsautraversduserviceWebExcelServices.

2.ConfigurerSharePointpourutiliserleservicedecalculExcel
La configuration de ce service se fait par la page des applications de services accessible par la console dadministrationSharePoint

a.Activerleservice
Pour commencer, il faut vrifier que le service est bien actif dans la ferme. Pour cela ouvrez la console dadministration SharePoint et allez dans la partie Gestion des applications, puis Grer les applications de service. Cettepageaffichelalistedesservicesdisponiblesdanslaferme,ainsiqueleurstatut.SileservicedecalculExcel nestpasactif,dmarrezle:

b.Dfinirunemplacementcommefiable
PourpouvoirtreutilisparlesservicesdecalculExcel,unclasseurdoitsetrouverdansunemplacementapprouv. Cela signifie quun administrateur doit dsigner un emplacement conteneur comme tant fiable et pouvant tre utilis par les services de calcul Excel. Ceci peut tre une bibliothque de documents, un rpertoire Windows partagouundossierWeb. Pourcommencer,rendezvousdanslacentraledadministrationdeSharePointdanslapartieGrerlesapplications deserviceetensuitedanslapartieExcelServices.

- 1-

Openmirrors.com

CliquezensuitesurlelienEmplacementsdefichiersapprouvs.

Cettepageaffichelalistedesemplacementsapprouvsexistants.Pardfautuneligneestdjajoute,elleactive ExcelServicespourtouslessites.

- 2-

Vouspouvezvidemmentdfinirlesemplacementsapprouvsdemanireplusgranulaireetgalementdfinirdes sourcesnonSharePoint.

Vousconstatezquelesemplacementspersonnalisspeuventtredetroistypes.

3.PublierunclasseurExcel
Pour tre utilisable dans les services de calcul Excel, un classeur doit tre publi dans un emplacement approuv. C estl objetdeslignesquisuivent CrezunnouveauclasseurdansunclientExcel.CeclasseurcalculeunmontantTTCsurlabasedunprixHTVA.

- 3-

Openmirrors.com

PourpublierleclasseurdansExcelServices,allezdanslemenuFichier,sousEnregistreretenvoyeretEnregistrer dansSharePoint.

Ilnefautpasoublierdeprciserquelefichierdoittreouvertdanslenavigateur.

- 4-

Nouspouvonsensuitetlchargercedocumentdansunebibliothquededocumentsetlouvrirdanslenavigateur:

Cette application peut donc tre utilise depuis nimporte quelle machine, avec ou sans Excel install, oprant sur Windowsousurnimportequelautresystmedexploitation. Sous SharePoint 2007, aucune bibliothque ntait dfinie comme fiable par dfaut. Sous SharePoint 2010 touteslesbibliothqueslesontpardfaut. Bien que le classeur sexcute sans problme en mode Web, toutes les cellules sont en lecture seule : vous ne pouvezeffectueraucunemodificationsurcellesci. Pourautoriserlamodificationdecertainesvaleurs,vousdeveztoutdabordleurassignerunnom.Assignezlenom HTVAlacelluleB1.

PublieznouveauleformulairedansSharePoint,maiscettefoismodifiezlesparamtresdepublication.

AjoutezunparamtrepartirdelacellulenommeHTVA.

- 5-

Openmirrors.com

Ouvreznouveauleclasseurdanslenavigateur,cettefoisvouspouvezmodifierlavaleurdelacellulevialevoletde droite.

4.Ecriredesfonctionspersonnalises
Exceloffreunemultitudedefonctionsrpondantnormmentdebesoins.Malgrcelailnepermetpastoujoursde remplirtouslesbesoinsdunesocit.LesservicesdecalculExcelpermettentdcriredanslelangage.NETdevotre choixdenouvellesfonctionsutilisablesdansExcel.CesfonctionsneserontutilisablesquauseindesservicesExcel. LesclasseurspublisdanslesservicesdecalculExcelnepeuventpascontenirdecodeVBA.Lesfonctions personnalisessontuntrsbonmoyendecontournercettelimitation. Pour commencer, pour que les fonctions personnalises soient fonctionnelles, il faut que lemplacement approuv danslequelestdployleclasseurlautorise.CelaestdfinivialacentraledadministrationdeSharePoint

- 6-

Openmirrors.com

CliquezsurlelienAssemblysdefonctionsdfinisparlutilisateur.

Cette page contient la liste des assemblys autorises contenir des fonctions personnalises. Vous avez la possibilitdajoutervotrepropreassemblydedeuxmaniresdiffrentes:
q

SilassemblyestdployedanslaGAC:enentrantsasignature. Silassemblyestdployedansunrpertoireduserveur:enentrantsimplementlemplacementcompletde ladll.

- 8-

Voil,votrefonctionestprsentutilisable.Modifiezdoncvotreclasseurpourutiliserlesnouvellesfonctionscres.

Ilestnormalquelersultatdelafonctionsoit#NOM?carvosfonctionspersonnalisesnesontpasutilisablesdans leclientExcelmaisleserontdansvotrenavigateurweb. PubliezleformulairedansSharePointettesteznouveauvotreclasseur.

- 9-

Openmirrors.com

- 10 -

InfoPath2010etFormsServices
1.Introduction
La plupart des applications mtier ncessitent des informations entres par lutilisateur. Une faon commune de demandercesinformationsestlutilisationdeformulaires.InfoPathestloutilidaldanslagammeOffice2010pour construiredesformulaireslectroniques. Contrairementlaversionprcdente,touslesformulairesdeliste,librairieoufluxdetravaildansSharePoint2010 sontdesformulairesInfoPath,dolimportancedeceproduit. InfoPath est galement prsent dans les autres outils Office 2010. Il permet par exemple dafficher les "panneaux dinformationdedocument"(documentinformationpanel)dansWord. LaconceptiondeformulairesdansInfoPathtourneautourdetroisaxesmajeurs:
q

Lavalidationdedonnesquipermetdevrifierlesinformationsentresparlutilisateurafindviterquedes donnesinvalidesnesoientsoumises. Ledesign:InfoPathfournitdenombreuxcontrlespermettantdeconstruiredesformulairescomplexes.La notion de vue permet quant elle damliorer lexprience de lutilisateur en dcoupant un formulaire en plusieurs "pages" pouvant tre affiches suivant le contexte. InfoPath contient galement une notion de formatageconditionnelvouspermettantdafficherounoncertainscontrlesdevotreformulaire. Lesconnexionsdedonnes:lesdonnessontaucentredesformulairesInfoPath.Toutformulairecontient auminimumunesourcededonnes,ilsagitdelasourcededonnesprincipalequicontientlesdonnesdu formulaire luimme (la valeur de ses champs). Dautres sources de donnes peuvent tre ajoutes afin dintgrerdesdonnesvenantdesourcesexternes.

Revenons dans le contexte de SharePoint 2010. Premirement, InfoPath va vous permettre de personnaliser les formulairesstandard.Cesontlesformulairesvouspermettantdevoir,dajouteroudemodifierdeslmentsdune listeoud unelibrairie Nousajouteronscesformulairesceuxpermettantd interagiravecunfluxdetravail La modification de ces formulaires est extrmement simple et ne ncessite pas lutilisation de code. Un clic dans le ruban de SharePoint ouvre le formulaire courant en mode dition dans InfoPath, un deuxime clic dans InfoPath publielenouveauformulairedansSharePoint.

InfoPath vous permet galement de dvelopper de vritables applications mtier utilisant un formulaire en entre. Lesutilisateursremplissentunformulaireetlesoumettent.Lesdonnesduformulaireserontsauvesdansuneliste SharePoint.Ensuite,diffrentesoprationspourronttreexcutessurcesdonnes,commeparexemplelexcution dunfluxdetravail.

2.DiffrenceentreFormsServicesetInfoPath

- 1-

Openmirrors.com
La diffrence entre InfoPath et Forms services nest pas toujours claire pour beaucoup de personnes. Il sagit pourtantdedeuxtechnologiesdiffrentes. InfoPathestunproduitdelagammeOffice,toutcommeExcel,Word,PowerPoint,etc.Ilpeutdonctreutilissans SharePoint,toutcommenimportequelautreoutilOffice. Depuiscettenouvelleversion,leclientInfoPathestdivisendeuxapplications
q

InfoPath Designer 2010 pour la conception de modles de formulaires et la publication du modle dans SharePoint. InfoPathFiller2010pourleremplissagedesformulairesparlesutilisateursfinaux.

FormsServicesestunservicedeSharePointpermettantdafficherunformulaireInfoPathsousformedepagewebet donc de lutiliser sans quInfoPath ne soit install sur le poste client. Cependant, il faut garder lesprit que les formulairesdestinsFormServicesnebnficientpasdetouteslesfonctionnalitsdeInfoPath,contrairementau formulaireutilisdansleclientInfoPath. FormsServicesestdisponibleentantquefonctionnalitEntreprisedansSharePointServer2010.

3.Personnalisationdesformulairesdeliste
CommencezparlutilisationlaplussimpledInfoPathdansSharePoint2010:lapersonnalisationdesformulairesde liste. Chaque fois que vous visionnez, modifiez ou crez un nouvel lment dans une liste SharePoint, vous tes confrontunformulairedelisteprsentdansunefentremodale. CettefentreestenralitunepagecontenantunWebPartetaffichantunformulaireInfoPath.

Commeditprcdemment,unsimpleclicdanslerubanpermetdouvrirleformulaireenmodeditiondansInfoPath. LactionenquestionsetrouvedanslongletListe.

Pour cet exemple, vous utiliserez une liste simple de type "Liste personnalise" qui par dfaut ne contient quune colonnenommetitre Nousallonsmodifierlecomportementetledesigndeceformulaireenluiajoutantuneimageetennacceptantque lestitrescontenantauminimumtroiscaractres. Commencez par ajouter une image au formulaire. Pour cela, insrez limage depuis longlet Insertion dInfoPath commevousleferiezavecnimportequelautreprogramme.

- 2-

Cette tape avait pour seul objectif de dmontrer la simplicit dutilisation dInfoPath. Voyons prsent comment ajouterunergledevalidationsurlechamptitreduformulaire CliquezsurlechamptitrepourleslectionnerpuiscliquezsurGrerlesrglesdelongletProprits,celaaurapour effetdouvrirlevoletdegestiondesrglespourcechamp.

Ajoutezunergledetypevalidationdepuiscevolet,cetterglenevalideraquelestitresdaumoinstroiscaractres.

Lafonctionstringlengthretournelalongueurduntexte,lepoint(.)quantluisignifiequelafonctionseraapplique surlechampluimme,autrementditceluisurlequellargleestapplique. Voicidoncquoidoitressemblervotrenouvellergle:

- 3-

Openmirrors.com

Voyonsensuitecommentpubliernotreformulairemodifi.Commepourlditiondeceluici,lapublicationsefaitenun seulclic.UtilisezleboutonPublicationrapide.

Pourterminer,testezvotrenouveauformulairedansSharePoint.

4.CrationdelisteSharePointdepuisInfoPath
DanslexempleprcdentnousavonsvucommentpersonnaliserlesformulairesdelistedansSharePoint.Danscelui cinousallonsdcouvrircommentutiliserInfoPathetFormsservicespourcrerdeslistessousSharePoint. DmarrezInfoPathDesigner2010etcrezunnouveauformulairedetypeListeSharePoint

- 4-

Openmirrors.com

Lassistantvousdemandealorsdedfinirlesitecible,cestdirelesitesurlequelleformulaireseradploy.

Openmirrors.com

Derniretapedelassistant:dfinirlalistecible,lintrieurdusiteslectionnltapeprcdente. ceniveau,deuxchoixsoffrentvous:crerunenouvellelisteoumodifierunelisteexistante.Danslecasprsent, ajoutezunenouvellelisteetappelezlaMonApplication.

- 5-

Openmirrors.com

Vousvoicifaceunformulairenecontenantquunseulchampappeltitre.Celanestpasunesurpriseetcorrespond autypedecontenudebasedeSharePoint:Elment.

Lorsquevousallezpublierleformulairesurlaliste,chaquechampduformulaireseratransformencolonnedansla liste. Vous ne devrez donc pas vous soucier de la liste lors de votre dveloppement, tout se fera essentiellement dansInfoPath. Vous allez ajouter quelques champs sur votre formulaire, l objectif est que la liste contienne une collection de formations.Ajoutezquelquescontrles:

Pourrsumer,vousavezajoutleschampssuivants:
q

Description(zonedetexteformate) Formateur(Zonedetexte) Niveau(listedeslection,champnepouvantpastrevide)

Unefoistouslescontrlesajouts,noubliezpasderenommerleschampsdelasourcededonnesprincipale.Cela

- 6-

peuttrefaitdepuislongletPropritsdurubanlorsquelecontrleestslectionn.

CestcenomquiserautilispourcrerlescolonnesdanslalisteSharePoint.Commeprcisavant,lechampNiveau estunelistedeslection.Cettelistepeutcontenirtroisvaleurs:Dbutant,AvancetExpert. Ouvrezlespropritsducontrleetmodifiezleschoixdelaliste.

Rendezgalementlechampobligatoiredepuiscettefentre.

CliquezensuitesurleboutonPublicationrapidepourcrerlanouvellelisteetpublierleformulaire. Tentezdoncdajouterunnouvellmentdanslalistepourtestervotrenouveauformulaire.

- 7-

Openmirrors.com

NousvenonsdevoircommentcrerunelistedansunsitebassurunmodledeformulaireInfoPath.

5.Lessourcesdedonnesexternes
Jusquprsentnousnavonsutilisquuneseulesourcededonnesdansnosformulaires:lasourcededonnes principale,autrementditlesdonnesduformulaireluimme. LessourcesdedonnesexternesdansInfoPathpermettentdincorporerdesdonnestrangresauformulaire.Ces donnespeuventprovenirdediffrentessources.

ServiceWebSOAP ServiceWebREST BibliothqueoulisteSharePoint Basededonnes(MicrosoftSQLServeruniquement) DocumentXML

Pournotreexemple,nousallonsremplacerlechampFormateur(quiestpourlinstantunesimplezonedetexte)pour unelistedeslectionconnecteunelistedansnotresiteSharePoint.CettelistesappelleFormateursetcontient bienentenduunelistedepersonneschargesdecours.

Ouvrez nouveau le formulaire de votre premire liste afin de remplacer la zone de texte Formateur par une liste droulantelievotrenouvelleliste.

- 8-

Notre but est donc de remplacer une zone de texte par une liste droulante. Pour cela il nest pas ncessaire de supprimerlecontrleinitialnidecrerunnouveauchampduformulaire.InfoPathpermetderemplaceruncontrle parunautretrssimplement. FaitesunclicdroitsurlecontrleremplaceretchoisissezChangerlecontrleZonedelistedroulante.

prsent, il vous reste lier la zone droulante avec la liste Formateurs sur votre site. Pour ce faire, affichez les propritsducontrle. Pardfautleslmentsdelalistedoiventtredfinisstatiquement.Celasignifiequevousdevezentrertoutesles valeurspossibleslamain.Cenestvidemmentpascequenousvoulonsdanscecas. Lesvaleursproviennentdunesourcededonnesexterneauformulaire:

Votreprochaineactionconsistedfinircettenouvellesourceexterne.CliquezsurAjouter. Ilsagitduneconnexionderceptiondedonnes:

VersunelisteSharePoint:

- 9-

Openmirrors.com

Entrezensuitel adressedusiteSharePointetchoisissezlalisteFormateurs

SeullechampTitrevousintresse,ilcontientlenomduformateur.Danscetcranvouspouvezgalementdfinirun tri pour les rsultats retourns. Cela fait partie des petites amliorations par rapport la version prcdente dInfoPathetfacilitelaviedesdveloppeurs.

Terminezl assistantetsauvezvotreconnexionsouslenomFormateurs

- 10 -

Dfinissez le champTitrelafoiscommevaleuretcommenomcomplet.Celasignifiequecechampseraprsent danslalistedroulanteetsauvdanslalisteSharePoint.

Publieznouveauleformulaireettestezle.VousconstatezquelalisteabientrempliedepuisSharePoint.

6.UtilisationduWebPartdeformulaireInfoPath
ParmilesnouveauxWebPartlivrsavecSharePoint2010figureleWebPartdeformulaireInfoPath(Formsservices WebPart).CecomposantpermetdeprsenternimportequelformulaireInfoPathdansunepagedesite. En regardant un peu plus loin, nous pouvons voir dans InfoPath une manire de crer des WebPart de manire graphiquesansaucuneconnaissancedeprogrammationetsansncessitdedploiementsurleserveur. Nousallonsrepartirduformulairecrprcdemment.Notrebutseradelajouterdansunebasequicontiendrala foisleformulaireluimmeetlalistedeslmentsdjcrs.Leformulaireseraaffichenmodeajoutetpermettra donclacrationdenouveauxlments. Voicilersultatfinalquenoussouhaitonsobtenir:

- 11 -

Openmirrors.com

Une modification a t apporte au formulaire prcdent : lajoutdun boutonAjouter qui permet de soumettre le formulaire. ModifieznouveauleformulairedansInfoPathetajoutezunbouton:

Danslespropritsdubouton,dfinissezsonactionEnvoyer:

Publieznouveauleformulaire. RendezvousmaintenantsurlapagedaccueildevotresiteetajoutezdeuxWebPart.Toutdabordunevuesurnotre listeprincipale:

EtensuiteleWebPartdeformulaireInfoPath:

- 12 -

ModifiezensuitelespropritsdeceWebPartpourquilaffichevotreformulaire.

Dans cet exemple, vous devez modifier la liste cible et le comportement aprs lenvoi du formulaire pour quun nouveauformulaireviergesoitprsentaprslenvoi. VousconstatezalorsqueleWebPartdeformulaireInfoPathvouspermetrellementdintgrervosdveloppements InfoPathdansvospagesSharePointdemaniretoutfaittransparente. IlestgalementpossibledeconnecterleWebPartdeformulaireInfoPathunautreWebPart.

7.UtilisationdecodedanslesformulairesInfoPath
JusqulaversionprcdentedInfoPath,lutilisationdecodedanslesformulairesInfoPathncessitaitledploiement de ceuxci par un administrateur de la ferme. En effet le dploiement du formulaire ne pouvait se faire que via ladministrationcentraledeSharePoint. Grce aux sandboxed solutions de SharePoint 2010, il est prsent possible un administrateur de collection de sitesdedployerducode.Lasolutionestplacedanslagaleriedesolutionsdelacollectiondesites. La cration de code pour InfoPath ne peut se faire que dans VSTA (Visual Studio Tools for Application). Malheureusement,VisualStudio2010neprendpasenchargelesprojetsInfoPath. Nousallonsillustrerlutilisationdecodeparunexemplesimple.Nousallonsdvelopperunformulairecontenantune zone de liste modifiable (combox box) connecte sur une liste SharePoint contenant des salutations (Mr, Mme).

- 13 -

Openmirrors.com
Lutilisateurauralapossibilitdentrerunevaleurnesetrouvantpasdanslaliste.Danscecasnouspouvonsutiliser ducodepourajoutercenouvellmentdanslalistedesalutation. Commencezparcrerunelistedesalutation:

OuvrezprsentInfoPath2010etcrezunnouveauformulairedetypeBibliothquedeformulairesSharePoint.

Ajoutezvotrecomboboxsurlaformeetconnectezlavotrelistedesalutation.

- 14 -

Publiezleformulairedansunenouvellebibliothquedeformulairesdevotresiteetcrezunnouvellment.

VotrezonedelistemodifiableestbienconnectevotrelisteSharePoint.Ilvousrestemaintenantajouterlecode ncessairel ajoutd unnouvellment Lapremiretapeconsistechoisirunlangagedeprogrammationpourvotredveloppement.Nousavonslechoix entreVisualBasic.NETetC#. LelangageslectionnpardfautestVisualBasic.NETcertainementparcequhistoriquementlesapplications OfficepouvaienttrepersonnalisesenutilisantVBA. LechoixdulangagepeuttrefaitdepuislerubansouslongletDveloppeur.

- 15 -

Openmirrors.com

Openmirrors.com

VisioServices
1.Introduction
Visio Services fait partie des nouveauts apportes par SharePoint 2010. Il permet de prsenter des diagrammes Visio 2010 dans un navigateur Internet. Il nest donc plus ncessaire davoir le client Visio install sur sa machine pourpouvoirliredesdiagrammesVisio.Deplus,ilestgalementpossibledeconnecterlediagrammediffrentes sourcesdedonnesexternesetdefairevivrelediagrammeenfonctiondecesdonnes. Commenons par crer un premier diagramme dans Visio 2010. Ce diagramme contient quatre serveurs. Dans un premiertemps,notrebutestsimplementdepubliercediagrammedansSharePoint. OuvrezVisio2010etcrezunnouveaudiagrammedetypeDiagrammederseausimple.

Ajoutezyunconteneurafindegardervosserveursgroups:

- 1-

Openmirrors.com

Openmirrors.com

Vouspouvezmaintenantajoutervosquatreserveurssurlediagrammecommececi:

Openmirrors.com

Nommezprsentvosserveursdelamaniresuivante:
q

SRV001 SRV002 SRV003 SRV004

VouspouvezajouterlenomdesserveursdanslapropritNomderseaudechaquecontrle.

- 2-

Il reste prsent dfinir un nouveau graphique de donnes afin dafficher le nom du premier serveur sur le diagramme.

AjoutezunlmententantqueTexteliauchampNomderseau.

- 3-

Openmirrors.com

Celaapoureffetdajouterlenomduserveuraudiagramme:

Faiteslammechosepourlesautresserveurs. Ilestpossibledeffectuercetteoprationpourplusieurscomposantslafoisenfaisantunemultislection. Voicidonclersultatescompt:

PassezmaintenantlapublicationduformulairedansSharePoint.DanslemenuFichierEnregistreretenvoyer EnregistrerdansSharePointchoisissezDessinWebcommetypedefichieretenregistrezlelocalement.

- 4-

Ensuite vous pouvez le tlcharger dans une bibliothque de documents SharePoint. Il suffit donc douvrir le diagrammedepuiscettebibliothquepourvoirvotrediagrammedanslenavigateur,sansutilisationduclientVisio.

2.Connexionauxdonnesexternes
Partons de notre diagramme prcdent. Notre but est de le lier avec des donnes prsentes dans une liste SharePoint. Nous voulons que le diagramme soit automatiquement modifi lorsque les donnes de cette liste le seront. Rouvrez le diagramme dans Visio et allez dans longletDonnes.Cest partir de celuici que vous pourrez crer dessourcesdedonnesexternes.

Le diagramme sera li avec une liste de serveurs dans SharePoint. Il sagit dune liste personnalise dont voici le contenu:

Cettelisteestrelativementsimpleetnecontientquetroiscolonnes:
q

Titre nomduserveur Statut:Estcequeleserveurestoprationnel? Patch:Leserveuratiltpatch?

Revenez la cration de votre source de donnes. Commencez par dfinir que les donnes se trouvent dans une

- 5-

Openmirrors.com
listeSharePoint.

PrcisezensuitelURLdevotresiteetchoisissezlalisteServeurs.

Voil qui termine lassistant de cration de source de donnes. Le contenu de la liste de serveurs est maintenant visibledanslevoletDonnesexternesdeVisio

Mappezdonccesdonnesnotreserveursurlediagramme.Lamanirelaplussimpledelefaireestdeffectuerla manipulationsurunseullmentetdensuiteappliquerleschangementsauxautresserveurs. Crezunnouveaugraphiquededonnes.Cettefoisnousvoulonstroischoses:


q

Afficherlenomduserveurdanslegraphique.

- 6-

Lacouleurduserveurdoitsadaptersontat:rougesileserveuresttomb,vertsilestdisponible. Undrapeauvertourougeindiquantsileserveuratpatch.

Premirement, il faut lier un lment de la liste des serveurs avec le premier contrle sur le diagramme Pour cela, cest trs simple, il faut glisserdposer le premier lment du volet donnes externes sur le premier serveur du diagramme.

Passez ensuite la cration du graphique de donnes afin de lier les colonnes de la liste SharePoint avec des comportementsducontrle.

Premiercomportementdfinir:lenomduserveur.

Deuximelmentajouter:lestatutduserveur.

- 7-

Openmirrors.com

LecontrleseracolorenvertsilavaleurduchampStatutvautUpetenrougedanslecasolavaleurestgale Down. Troisimeetdernierlment,ledrapeausignalantqueleserveuratpatchounon.

CettefoislavaleurestafficheentantqueJeudicnes.LacolonnePatchtantdetypeoui/nonvousdeveztester lavaleur0et1pourdfinirlacouleurdudrapeau. Voilquitermineladfinitiondevotregraphiquededonnes.Revenezvotrediagrammepourvoirlersultat.

Commevouspouvezleconstater,seullepremierserveuratmodifietvousnevoulezcertainementpasrpliquer les mmes modifications sur tous les contrles. Heureusement, Visio contient un assistant permettant de lier automatiquementtouslescontrlesunesourcededonnes. CetassistantsetrouvesouslongletDonnes.

- 8-

Cetassistantabesoindefairelelienentreuncontrlesurlediagrammeetun(etunseul)lmentdanslalistede serveurs. Cest la raison pour laquelle nous avons dfini un nom pour chaque serveur au dbut de lexemple prcdent.

VisiopourradoncfairelelienentrelacolonneTitredelalisteSharePointetlechampdeformeNomderseauque vousavezrempliprcdemment. Excutezlassistantpourliertouslescontrles.

PublieznouveauleformulairedansSharePointpourtesterlediagrammedunavigateurInternet.Sivousmodifiez lesdonnesdenotrelisteetrafrachissezlediagramme,vouspouvezremarquerleschangementsdestatut.

3.Crationdunfournisseurdedonnespersonnalis
- 9-

Openmirrors.com

Openmirrors.com

{ private object asyncState; fournisseur private bool completed; //reference vers ce

#region IAsuncResult object IAsyncResult.AsyncState { get { return this.asyncState; } } WaitHandle IAsyncResult.AsyncWaitHandle { get { return null; } //non utilis par Visio Services } bool IAsyncResult.CompletedSynchronously { get { return false; } } bool IAsyncResult.IsCompleted { get { return this.completed; } } #endregion #region AddonDataHandler public override IAsyncResult BeginGetData(HttpContext context, AsyncCallback callback, object asyncState) { this.asyncState = asyncState; ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadTask), callback); return this; } public override void Cancel() { } public override DataSet EndGetData(IAsyncResult result) { return this.Data; } #endregion #region Retrouver les donnes private void ThreadTask(object state) { AsyncCallback callback = (AsyncCallback)state; string filename = String.Empty; System.IO.StreamReader reader=null; try { this.Data.Reset(); //Retrouver le nom du fichier int filenamestart = this.QueryString.IndexOf("File=") + 5; filename = this.QueryString.Substring(filenamestart);

- 13 -

Openmirrors.com

AccessServices
1.Introduction
AccessServicesfaitpartiedesnouveautsentermesdeservicesapportesparSharePoint2010.Jusqulaversion prcdente,laconnectivitentreSharePointetAccessselimitaitconnecterlecontenudeSharePointdansAccess afindepouvoirmodifierlecontenudunelistedepuisleclientAccess. Danscetteversiondelaplateforme,SharePointpermetderellementhbergeruneapplicationAccess.Lestables seronttransformesenlistes,lesformulairesenpagesetlesmacrosenworkflows. SharePointjoueenquelquesortelerledeserveurWebhbergeantuneapplicationAccesscomplte.

2.ActiverAccessServices
Lapremirechosevrifierestqueleserviceestactifsurvotreferme Pourcela,ouvrezlaconsoled administration SharePointetrendezvousdanslemenuGestiondesapplications,Grerlesapplicationsdeservice. Vrifiezdoncqueleserviceestbiendmarr.

Sileservicenestpasdmarr,dmarrezle.

3.CrationduneapplicationdansAccess
Mme si lobjectif de ce livre nest pas de vous apprendre crer des applications Access, la cration dune applicationextrmementsimplenousserautilepourillustrerlintgrationdAccessdansSharePoint. OuvrezAccessetcrezunenouvellebasededonnesweb.

- 1-

Openmirrors.com

CrezunenouvelletablenommePays:

Etunedeuximequicontiendraunelistedevilles:

Cettedeuximetableestlielalistedepays.

- 2-

Ltapesuivanteconsistecrerdeuxnouveauxformulaires,unpourchaquetable.

4.PublicationdelapplicationdansSharePoint
Considronslacrationdelapplicationcommetermine.IlvousrestemaintenantlapublierdansSharePoint.Pour cela,utilisezlemenuOfficedAccess.

- 3-

Openmirrors.com

Openmirrors.com

EntrezlURLdevotresiteainsiquelenomquevoussouhaitezdonnervotreapplicationetlancezlapublication. Unefoislapublicationtermine,votreapplicationAccessseradisponibledansSharePointettotalementfonctionnelle indpendammentdelabasededonnesAccess.LesdonnesnesontpasstockesdansAccessmaisbiendansdes listesSharePoint. Testezvosdiffrentsformulairesenligne,oucrezparexempleunnouveauformulairedenavigationcommececi

Openmirrors.com

Bien que les donnes soient stockes dans SharePoint, un lien existe toujours entre la base de donnes Access originale et le site SharePoint : vous avez la possibilit de faire des modifications et de les synchroniser avec SharePoint

- 4-

BusinessConnectivityServices(BCS)
1.Introduction
Business Connectivity Services (BCS) est le nouveau nom pour les Business Data Catalog de SharePoint 2007. CettetechnologiepermetdintgrerdesdonnesexternesdansSharePoint2010.Parmilesamliorationsnotables, onpeutnoterlefaitdepouvoirupdaterlasourcededonnesdepuisSharePointetlintgrationdeWCF.

2.Lestypesdecontenuexterne
Le type de contenu externe est la brique centrale des Business Connectivity Services. Il vous permet de dfinir la connexionverslasourcededonnesexterne. DansnotreexemplenousallonscrerunenouvelleconnexionversunebasededonnesSQLcontenantcettetable

Ilsagitdunetablecontenantunelistedecontactsavecleurnom,prnometnumrodetlphone.Pourdfinirla connexion avec SharePoint, ouvrez SharePoint Designer 2010 et rendezvous dans la partie Types de contenu externe.

Etdemandezlacrationdunnouveautypedecontenu.

Assigneztoutdabordunnometunedescriptionvotrenouveautypedecontenu.

- 1-

Openmirrors.com

Ensuite,choisissezuntypedlmentOffice.

PardfautleslistesexternesserontsynchronisesaveclesclientsOfficecommedesimpleslistes.Cependant,ilest galement possible, par exemple, de les dfinir comme des contacts. Cela aura pour effet de permettre la synchronisationdeslmentsdevotretableSQLsousformedecontactsdansOutlook. VoicilalistedestypesdlmentsOffice:

Maintenantquelenom,ladescriptionetletypedlmentsontdfinis,ilfautconfigurerlaconnexionverslabasede donnes. Cliquezsurleliensuivant:

Aprsavoirconfigurlesparamtresdeconnexionversvotrebasededonnes,tousleslmentsdecelle ciseront affichs.

FaitesunclicdroitsurvotretableetchoisissezCrertouteslesoprations.

- 2-

Celavadmarrerunassistantquivousaidegnrerautomatiquementtouteslesmthodesncessairespourlire, crer,modifieretsupprimerdeslmentsdansvotretable.Pourcompltercetassistant,riendeplussimple,ilsuffit desuivreleserreursetdelescorrigeruneparune.

Tout dabord, SharePoint Designer vous demande de mapper les colonnes de votre table SQL avec des proprits Office. Rappelezvous, nous avons dfini que notre liste pouvait tre utilise comme liste de contacts Office, il faut donctablirlelienentreSQLetOfficepourchaquechamp.

- 3-

Openmirrors.com

Cliquez sur suivant. Cet cran vous permet de dfinir un filtre afin de ne pas retourner toutes les lignes de votre tabledansSharePoint.Dansnotrecasnousnedfinironspasdefiltre.Terminezdonclassistant.

Touteslesoprationsontbientcres.Sauvezvotretypedecontenuexterne.

Il est possible de dfinir des permissions pour chaque type de contenu externe depuis ladministration centraledeSharePoint2010.

3.Leslistesexternes
Les listes externes sont cres partir dun type de contenu externe et sont extrmement proches des listes standardutilisesdansSharePoint.Ellespermettentlaffichageetlamodificationdesdonnesexternesvialinterface SharePoint,demaniretotalementtransparentepourlutilisateur. Pour crer une nouvelle liste externe, restez dans SharePoint Designer 2010 dans la partie Types de contenu externe. Crezunenouvellelisteexterne.

- 4-

Dfinissezensuiteunnompourvotrenouvelleliste.

Ouvrezprsentvotresitepourtesterlanouvelleliste

NotezquelacrationdelistesexternesestgalementpossibledepuislinterfacedeSharePoint.

- 5-

Openmirrors.com

Pour terminer, nous allons tester que, contrairement SharePoint 2007 et BDC, BCS est bien bidirectionnel Pour cela,ajoutezunnouvellmentvotreliste.
- 6-

Openmirrors.com

Openmirrors.com

Openmirrors.com

causer des problmes en modifiant ltat de la page matre. En effet, dans SharePoint, les fichiers de type .js, .master, .aspx sont par dfaut en tat UnCustomized. Toute modification de ceuxci via SharePoint Designer entraneunchangementdtatversltatCustomized. Enprenantunepagematrecommeobjetderfrence,voiciquelquesexplicationsconcernantcesdeuxtats: Uncustomized LapagematreaffichedanslenavigateurtiresasourcedufichierphysiquedploydanslaracineSharePoint. Customized La version physique de la page matre est sauvegarde en base de donnes de contenu en incluant vos modifications Ceciadeuximpactsmajeurs
q

Si une nouvelle version physique de la page matre est dploye sur les serveurs SharePoint, elle naura pas dimpact sur les instances customized , ce sera donc toujours la version customized qui sera charge. UneversioncustomizedajouteunebaissedeperformanceauniveauduserveurSQLcarpourchaquepage charge,desallers/retourssupplmentairesversleserveurSQLsontraliss.

Lusage de SharePoint Designer doit donc se faire en toute connaissance de cause. Je prconise dutiliser SharePoint Designer en tant quoutil sur un environnement de dveloppement, dexporter ce travail vers Visual StudioetenfindeledployerdansSharePointviadessolutions(entoutcas,encequiconcernelesmanipulations liesauxpagesmatres).

b.AvecVisualStudio
VisualStudiooffrelapossibilitdempaquetervospagesmatresdansdessolutionsSharePointetcestdanscebut prcisquilestintressantdelutiliser. SharePoint Designer reste mon sens plus pratique pour modifier/tester les changements apports une page matrecariloffreuneinterfacegraphiqueparfaitementintgreSharePointetpermetdetestersesmodifications entempsrel(surunenvironnementdedveloppementbiensr). Ilestfrquentdeconcevoir/modifierunepagematreavecSharePointDesigneretensuitedenrcuprerlecode afindelincluredansunesolutionVisualStudio. Maintenantquevousconnaissezlesprincipauxcontrlesutilissparlespagesmatres,voiciunexemplemontrant comment crer un contrle dlgu personnel, lencapsuler dans une page matre et dployer celleci via une fonctionnalitSharePoint. Uneautrefonctionnalit,sielleestactive,indiqueraSharePointsilecontrledlguestfournilapagematre par le site courant. Le contrle se chargera dafficher certaines informations relatives lutilisateur courant tel qu illustrci dessous

Commencezpar:
s

CrerunprojetVisualStudiodetypeSharePoint.

- 3-

Openmirrors.com

Ajouterunrpertoiremapppointantvers14\TEMPLATE\CONTROLTEMPLATES.

AjouterunefonctionnalitnommePageMaitre,sonscopedoittreSite

AjouterunefonctionnalitnommeContDelegue,sonscopedoittreWeb.

- 4-

Ajouterdeuxlmentsvides,l unnommContDelegueetl autrePageMaitre

DansllmentPageMaitre,ajouterunfichierexistantetrechercherlefichierv4.mastersetrouvantdanslaracine SharePoint,dansledossier14\TEMPLATE\LAYOUTS.Renommerlefichierenmav4.master.

Vousdevezobtenirunestructuredesolutionsimilairecelle ci

Ensuite, liez les fonctionnalits aux lments correspondants. Par exemple, pour la fonctionnalit PageMaitre qui doittreliellmentPageMaitre:endoublecliquantsurlafonctionnalit,vousavezlapossibilitdinclureles lments:

- 5-

Openmirrors.com

Openmirrors.com

- 8-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
Enloccurrence,onveutrcuprertouslesvnementsprsentsouvenirdontlalocalisationsepasselendroit saisiparlutilisateur. OnexcutelarequteviajQueryetplusprcismentvialinstruction$ajaxlaquelleonprcisequelamthodede callback est LireReponse. Dans cette mthode, on analyse le flux XML retourn et, pour chaque ligne, on extrait lattributID. Dans le markup HTML gnr par SharePoint pour afficher son calendrier, il attribue des classes CSS spcifiques. Cestgrcecellesciquelonpeut,viajQuery,retrouverleslmentsducalendrierdontlIDatretournparle serviceWeb. Danslecodesourcedisponibleentlchargement,voustrouverezunesolutioncomplteimplmentantlecalendrier. Mais si vous excutiez le code cidessus directement dans un WebPart diteur de contenu standard, cela fonctionneraitpourautantbiensrquevousappeliezlafonctionChercherEvenementsaveclesbonsparamtres. Ceci dmontre quil nest pas ncessaire de dployer du code serveur car grce JavaScript, et plus particulirement jQuery, vous pouvez directement travailler avec les services web. Outre lamlioration de lexprienceutilisateur,celapermetgalementdviter de passer par un cycle de dveloppement/test/recette/mise enproduction. De plus, travailler avec les services .ASMX est 100% standard en SharePoint 2007 et ne ncessite aucune modificationrelativelinfrastructure.Pour2010,prfreznanmoinslesservicesWCF. Enrsum,pourtravaillerviajQueryaveclesservices.ASMXdeSharePoint,vousdevez:
q

Localiserjquery.min.jsoutouteautreformeduframeworkenfonctiondelintgrationdejQueryauseindela fermesurlaquellevoustravaillezetlerfrencersincessaire. Dans votre propre script, vous devrez toujours ajouter _vti_bin/xxx.asmx lURL du site sur lequel vous souhaitezappliqueruntraitement. Utiliserlafonction$ajaxdejQuery. Dfinirunefonctiondecallbackquiseraappelepar$ajaxlorsqueleserviceauraretournsarponse.Celle ciserasystmatiquementretourneauformatXMLquevousdevrezdoncanalyser.

- 6-

SharePointetSilverlight
1.Introduction
Silverlightestunetechnologiequiagagnenmaturit.Laversionactuelleestdailleursla4.0. tantdonnsapopularitgrandissante,onvasansdouterapidementvoirunbonnombredecomposantsSilverlight interagiravecSharePoint,quecesoitsousformedeWebPart,dapplicatifclientspurs,decontrlesembarqusdans lesvuesdeformulaires,etc. Microsoft,avecSharePoint2010,abienprisencomptecetengouementetalargementfacilitlintgrationnativede composantsSilverlight,contrairementlaversion2007oledfitaitdetaille(danslamesureoilnesuffisaitpas de dvelopper les composants, il fallait galement sassurer que linfrastructure de la ferme disposait des DLL ncessaires). En outre, aucun outil standard ne permettait de visualiser une animation dj ralise. Microsoft a donc principalementintgrSilverlightdansSharePoint2010delamaniresuivante:
q

Linfrastructure(web.config,GAC,IIS)estdjconfigurenativementpourpouvoirexcuterdesapplications Silverlight. UnnouveauWebPartstandardpermetdeliredesapplicationsSilverlight. UneAPIspcifiqueduModleObjetClientpourSilverlightestmisedisposition.

2.UtilisationduWebPartSilverlight
Le WebPart standard mis disposition par SharePoint 2010 permet dintgrer une animation Silverlight. Il offre la possibilitdechargerlefichierXAPet,optionnellement,deluitransmettredesparamtres. Pour illustrer son utilisation, nous allons dvelopper une animation trs simple qui affiche la valeur reue en paramtre.
s

CrezunprojetVisualStudiodetypeApplicationSilverlight Nommez leCHAP07 Silverlight

Vousobtenezlastructuredeprojetsuivante:

DoublecliquezsurMainPage.xamletactivezlavuecode.Insrezylecodesuivant:

- 1-

Openmirrors.com

Vousobtenezcersultat:

AllezdanslesparamtresduWebPartetconfigurezlecommesuit:

Vousobtenez:

- 3-

Openmirrors.com

LeparamtreadoncbienttransmislanimationetcelleciestcorrectementchargeparSharePoint.

3.CrationduneanimationSilverlight
Dans le chapitre Manipuler les donnes dans SharePoint, nous avons vu comment faire interagir une application SilverlightexterneSharePointsansintgrerrellementcelleciauseindeSharePoint.

4.DialogueavecleModleObjetClient
Le Modle Objet Client pour Silverlight est largement dtaill dans le chapitre Manipuler les donnes dans SharePoint.Reportezvousceluicisivoussouhaitezraliserdesapplicationspluscomplexesdpassantlecadrede lasimpleintgrationvisuelleduneapplicationSilverlightdansSharePoint.

- 4-

Openmirrors.com
solutiondeferme.LedploiementdanslerpertoireLAYOUTSnestpasautorisparlessandboxedsolutions.

LastructuredevotrenouveauprojetseragnredansVisualStudio.

Ajoutezunnouveaucomposantvotresolution,ilsagitdunepageapplicative.

AppelezlaMaNouvellePageApplicative.aspx.

- 2-

Une nouveaut indiscutablement apprciable dans Visual Studio 2010 est la prise en charge parfaite des dveloppementsSharePoint.Celavousferasansaucundouteconomisernormmentdetemps! RappelezvousavecSharePoint2007etVisualStudio2008:lasimplecrationdunepageapplicativencessitaitune sriedtapesmanuellesetfastidieuses,notammentpourassurerledploiementdecelleciviaunesolution.Visual Studio2010automatisetoutescestapes! Touteslesrfrencesncessairessontajoutesauprojet.

Un rpertoire Layouts est ajout au projet. Il sera automatiquement mapp avec le rpertoire LAYOUTS du SharePoint root. Dans cet exemple, un sousrpertoire portant le nom de votre projet a galement t cr et la pageyatplace.

Leprojetcontientgalementunedfinitiondesolutionpourledploiementetlapageyatajoute.

- 3-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Cetteactionseraimbriquedansunefonctionnalit(feature).Ajoutezdoncunenouvellefeaturevotresolution dansVisualStudio.

Pourensavoirplussurlesfeatures,reportezvousauchapitredecelivreconsacraudploiement. Le feature sera le conteneur de votre action personnalise mais pas laction ellemme. Il faut donc ajouter un lmentvidevotreprojet.

- 2-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Lorsquevouschoisissezletypesouhait,lebasdevotrecranserafrachitenvousproposantlescaractristiquesde configurationcorrespondantautypeslectionn. PourletypeUneseulelignedetexte,vousobtenezlcrandepropritssuivant:

Ensuite,vousvalidezlajoutdelacolonnelalisteetvoustesenmesuredelutiliser.Cetteutilisationpasseparles tapes dencodage dun nouvel lment dans la liste, ddition des proprits de la colonne et daffichage de la colonneenmodelisteetenmodedtaillcommeillustrcidessous:

- 3-

Openmirrors.com

Openmirrors.com

Saisiededonnes:

Affichageenmodeliste:

Affichageenmodedtaill:

- 8-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Saisiededonnes:

Affichageenmodeliste:

Notez que cette traduction ne fonctionne que sur le premier mot composant le titre. Cest simplement un exemple.

- 13 -

Openmirrors.com

Openmirrors.com
s

Procdezcommeindiqudanslepremierexemplepourlasignatureetledploiementdelassemblage.Copiezle contrleutilisateurdanslerpertoire:

C:\Program Files\Fichiers Communs\Microsoft Shared\Web server extensions\14\TEMPLATE\CONTROLTEMPLATES


s

RedmarrezIISoulepooldapplications.

Rsultat Saisiedunedonne:

Vousconstatezquilnestpluspossibledesaisirdescaractresaccentus,etc.

b.Grerlespropritsdunecolonnepersonnelle
Jusquprsent,vousavezvucommentcrerdescolonnespersonnellessansgrerdecontrlesutilisateur.ascx. Pour pouvoir grer les proprits dune colonne personnelle, quel quen soit le type, il faut crer un contrle utilisateur et son codebehind associ. Les proprits permettent de configurer la colonne afin de dfinir son comportement. En repartant du tableau de composants illustr en section B 3, il est ais de constater que les composantsimplmentersont<nomcolonneeditor>.ascxet<nomcolonne>FieldEditor.cs. Voiciquelquescapturesdcranillustrantlespropritsdunecolonnestandarddetypelookup(recherche). Ajoutdelacolonneuneliste:

- 17 -

EnchoisissantletypeRecherche,SharePointrafrachitlapageetaffichelepanneaudepropritssuivant:

Ce panneau correspond prcisment au contrle utilisateur quil faut implmenter lorsquune colonne personnelle exposedespropritsspcifiques. Quelquesoitletypedecolonnedontvousdrivez,seuleslespropritsDescriptionetChampObligatoire restentutilisablessansimplmentationspcifique.Touteslesautrespropritsdoiventtreimplmentes dansvotrecontrleutilisateursivoussouhaitezendisposer.

Crerunecolonnedetypelookup Afin de mettre en vidence la gestion des proprits, la manipulation que vous allez raliser consiste crer une colonne personnelle de type lookup permettant de pointer vers une liste du site courant ou optionnellement vers unelistedunautresite. Laslectiondecettelisteoudelacolonnecibleestgredanslecontrleutilisateur<nomcolonneeditor>.ascxet
- 18 -

Openmirrors.com

Openmirrors.com

Openmirrors.com

using System.Web.UI.WebControls; namespace Chap02.ColonnesPersonnelles { class ColonneRechercheFieldEditor : UserControl, IfieldEditor { protected CheckBox EtendreCollection; protected DropDownList SiteSource; protected DropDownList ListeSource; protected DropDownList ColonneSource; bool IfieldEditor.DisplayAsNewSection { get{return true;} } /// <summary> /// Configure les diffrents contrles. /// </summary> protected override void CreateChildControls() { EtendreCollection.Enabled = false; SiteSource.Enabled = false; ListeSource.Enabled = false; ColonneSource.Enabled = false; if (!Page.IsPostBack) { //Si la porte == site courant if (!EtendreCollection.Checked) { RemplirWeb(); } else { //Sinon, afficher tous les sites de la collection RemplirWebs(SPContext.Current.Site.RootWeb); using (SPSite Site = new SPSite(SiteSource.SelectedItem.Value)) { using (SPWeb Web = Site.OpenWeb()) { RemplirListe(Web.Lists); } } } } else { //Si la page est poste et si la porte != site courant //rendre liste site utilisable if (EtendreCollection.Checked) SiteSource.Enabled = true; } base.CreateChildControls(); } void IFieldEditor.InitializeWithField(SPField field) { EnsureChildControls(); ColonneRecherche InstanceCourante = field as ColonneRecherche; if (InstanceCourante == null) { EtendreCollection.Enabled = true; ListeSource.Enabled = true; ColonneSource.Enabled = true; } else { EtendreCollection.Checked = InstanceCourante.EtendreCollection; }

- 24 -

Openmirrors.com

personnelles,enloccurrence,lapropritEtendreCollection.
q

Lattribut Hidden de celleci est dfini TRUE sinon SharePoint afficherait automatiquement une case cocher(valeurboolenne)mais,commementionnpralablement,SharePointneretientpaslavaleurde la proprit lors de la modification de la colonne. Il est donc prfrable de cacher la proprit afin quil naffiche aucun contrle. Dans cet exemple, le contrle est affich dans le contrle utilisateur ColonneRechercheFieldEditor.ascx.

Dploiement Les bonnes pratiques en matire de dploiement sont expliques dans le chapitre intitul Outils/Composantsdadministrationetbonnespratiquesdedploiement.

Procdezcommeindiqudanslepremierexemple.Copiezlecontrleutilisateurdanslerpertoire: C:\Program Files\fichierscommuns\Microsoft Shared\ Web server extensions\14\TEMPLATE\CONTROLTEMPLATES

RedmarrezIISoulepooldapplicationsassocivotreapplication.

Rsultat Ajoutdelacolonneuneliste:

Propritsdelacolonne:

- 26 -

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
nefonctionnequaveclescolonnesstandard.
q

Ilnestpaspossibledespcifieruneportelimite,parexempleunsiteouunecollection,commecestle caspourunefonctionnalit(feature).Silacolonneestrenduevisiblelorsdelajoutdunecolonne,cestdonc automatiquement pour toute la ferme. La seule alternative est de ne pas la rendre visible dans le fichier FLDTYPESxml,deladployercommecolonnedesiteet/ouauseinduntypedecontenu.Lacolonnedesite pouvanttredployeviaunefonctionnalitdesite,onrestreintainsiuntypedecolonneunsiteparticulier. Ilnestpaspossibledecrerunecolonnestandarddetyperecherche(lookup)surunecolonnepersonnelle.Il estparcontrepossibledecrersaproprelookuppourcela.

9.Rsum
Danscechapitre,vousavezappris:
q

dvelopperdescolonnespersonnellessimples. grerdespropritspersonnelles. intgrerducodeclientdanslescolonnespersonnelles. valuerlesavantagesetlesdsavantagesdelusagedescolonnespersonnelles.

- 35 -

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
Composantsdadministrationetbonnespratiquesdedploiement.

5.Rsum
La gestion dvnements dans SharePoint permet dtendre une grande majorit des actions provoques par lutilisateur.Deplus,ellepermetaussidannulercertainesactionsavantlafindeleurexcutionetcecienavertissant ounonlutilisateur. Danscettesectionvousavezappris:
q

IdentifierlesdiffrentsvnementsdclenchsparSharePoint. Dveloppervotrepropregestiondvnements. Annuleruneoprationencours. Attacherducodeunefonctionnalit. Dployervosassemblagessurvotreserveur.

- 12 -

LesWebPart
1.Introduction
Lavance majeure en matire de construction de WebPart dans SharePoint 2010 est la possibilit de les dfinir graphiquement laide de Visual Studio. Fini le temps o lon crait tous ses WebPart en tapant des centaines de lignesdecode. Fini ou presque, malheureusement les WebPart visuels ne sont pas compatibles avec un dploiement de type sandboxedsolution.IlrestedoncparfoisncessairedeconstruirelesWebPartlaidedecodeexclusivement.

a.Quest cequunWebPart?
Concrtement un WebPart est un contrle serveur ASP.NET. Son code se trouve dans une classe hritant de System.Web.UI.WebControls.WebParts.WebPart. Les WebPart sont destins se trouver dans une WebPartZone. Ils interagissent avec le WebPartManager se trouvantdanslapagematredeSharePoint. Enralit,lanotiondeWebPartn estpaspropreSharePoint,cettetechnologieexistedepuisleFramework NET 2.0.SharePointnefaitdoncquelintgrerafinderendresespagespersonnalisablesetmodulables. Cependant, SharePoint ajoute quelques fonctionnalits importantes aux WebPart, entre autres au niveau de la scuritetdelapersonnalisation.

b.LecycledeviedunWebPart
AvantdecommencerrellementledveloppementdunWebPart,ilestimportantdecomprendresoncycledevie: lestapesncessaireslapagepourlafficher. VoicilesprincipalestapesncessairesauchargementdunWebPart: OnInit Initialisationducontrle. OnLoad Chargementducontrledanslapage. OnPreRender Gre toutes les tches qui doivent absolument tre accomplies avant laffichage du contrle telles que le chargementdedonnes. CreateChildControls surchargersivoussouhaitezajouterdescontrlesserveurASP.NETtelsquunboutonparexemple. Render Cettemthodegrelaffichageducontrle. RenderControl Gre laffichage des contrles serveur ASP.NET. Si vous avez surcharg la mthode Render, vous devez imprativementfaireappelcettemthodepourcrerlescontrles. RenderContents VouspermetdinjecterducodeHTMLdirectementdansvotrecontrleauchargement.

2.LesWebPartvisuelsavecVisualStudio2010
CrezunnouveauprojetdansVisualStudio.ChoisissezletemplateVisualWebpart:

- 1-

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com

Openmirrors.com
LeSPGridViewnacceptepaslavaleurTruepoursapropritAutoGenerateColumns,ilestdoncobligatoire dajouterlescolonnesmanuellementdanslecode. Compilezetdployezvotresolution.AjoutezleWebPartsurunepagedevotresite.

Le SPGridView offre une manire simple et rapide de prsenter dans un tableau des donnes provenant de SharePointoudelextrieur.Ilpermetaussideconserverlapparencedesonsite.

- 14 -

ManipulerlesdonnesdansSharePoint2010
la fin de ce chapitre, vous serez capable dexploiter les diffrentes techniques permettant daccder aux donnes stockesdansSharePoint.

1.Introduction
UnedesvolutionsmajeuresdumodlededonnesdeSharePoint2010parrapportSharePoint2007rsidedans sacapacitgrernativementdesrelationsentredonnesprovenantdediffrenteslistesetgarantirlintgritde cellesci,cequifacilitegrandementlamodlisationdesdonnes. Dans SharePoint 2007, pour simuler lintgrit rfrentielle, il fallait imprativement implmenter une solution personnelleouutiliserdesoutilstiers.Iltaitsouventlaborieuxdemettreenplacecetypedesolution. SharePoint 2010 stocke ses donnes au sein dun gestionnaire de bases de donnes, en loccurrence SQL Server 2008 64 bits. Tous les objets SharePoint tels que des sites, des listes, des bibliothques ainsi que les documents quellescontiennentsontstocksdansuneouplusieursbasesdedonnesappelesBases de contenuouContent Databases. PresquetousleslmentsdunefermeSharePointsontstocksdansle(s)serveur(s)dedonnes.Seulesquelques ressourcessontphysiquementprsentessurlesdisquesdursdesdiffrentsserveurscomposantlaferme. Le serveur SQL reprsente le c ur de larchitecture dune ferme SharePoint. Avant toute implmentation Intranet/Extranet/Internet/applicatif, quelle soit standard ou quelle recourt du code personnel, une analyse est requise afin dassurer un bon niveau de service et dviter bien des cueils. Cette analyse peut porter sur la planificationdecapacit,lagestiondescopiesdebackup/restoreettouteunesriedoprationsdinfrastructure. Toutes ces prcautions ciblent principalement SQL Serveur. Pour manipuler les donnes dans SharePoint, Microsoft recommande de ne jamais requter directement le serveur SQL mais plutt dutiliser les diffrentes API (Application ProgrammingInterface)misesdispositionparleframeworkSharePoint2010.CesAPIsont:
q

Le langage CAML (Collaborative Application Makup Language) qui permet notamment la cration de requtes (CAMLQuery)quisontensuitetransformesenTSQL(TransactSQL)parlAPIoulesserviceswebdusystme. La toute nouvelle API (Application Programming Interface) LINQ (Language Integrated Query) est une couche dabstractionpermettantdetravailleravecdesobjets.NET.CeuxcignrentducodeCAMLquiestluimme ensuitetransformenTSQL. Les diffrents services web ASP.NET et WCF (Windows Communication Foundation) permettant daccder aux donnes.

Enfin, mme silesttechniquementpossibledeseconnecterauxbasesdedonnesSharePointdirectementviaSQL Serveur,voiciquelquesraisonsquipermettentdecomprendrepourquoiilvautmieuxproscrirecettepratique:


q

Leschmadunebasededonnesdecontenutantsusceptibledtrealtrlorsdemisesjourdusystme (hotfix, service pack etc.), la prennit de tout composant attaquant directement une base de donnes de contenuoudeconfigurationsevoitautomatiquementremiseencause. ToutordreDMLpourraitmodifierdemanireinattenduelesdonnesstockes,voireentrerenconflitavecdes mises jour faites par SharePoint luimme. Ceci peut entraner des problmes graves mettant en pril lutilisationdunefermeentire. Toute requte, mme en lecture seule, pourrait avoir des effets de bord en termes de verrouillage de tables/lignesentranantdesproblmesdaccsauxdonnespourSharePointluimme.

lissuedecechapitre,vousconnatrezlesprincipalescaractristiquesdulangageCAML,delanouvelleAPILINQet desautrestechniquesdemanipulationdedonnesdansSharePoint2010.

2.Lenouveaumodlerelationnel
Avantdesintresserdeplusprsaucode,voyonscommentestorganislemodlerelationneldeSharePoint2010. Pourcefaire,nousallonstoutsimplementcrerpaspaslenvironnementdedonnesquenousallonsutiliserdurant toutlechapitre.Cecifaciliteralacomprhensiondesexemplesetpermettradapprhenderrapidementlamanirede

- 1-

Openmirrors.com
modlisersesdonnesdansSharePoint2010. AprsavoircrunecollectiondesitesspcifiquebasesurlemodleSiteVide,vousvousretrouvezdevantun cransimilaireceluici:

Cestdireunsitedontlastructureestencorevierge. VotresiteClientsdoitcontenirtroislistesliesentreelles:
q

Unelistedepays. Unelistedevilleslielalistedespays. Unelistedeclientslielalistedesvilles.

Vousdisposerezgalementdunebibliothquededocuments.Commencezparcrerlalistedespays:

AjoutezunecolonneDescriptionetunecolonneSuperficie,demanireobtenirceci:

Crezprsentlalistedesvilles,cellecidoittrelielalistedespayspourindiquerquelpaysappartientchaque ville. ProcdezcommepourlalistedespayspuisajoutezunecolonnedetypeRecherchenommePays:

- 2-

Openmirrors.com

pointantverslalistedespays:

Lorsquelonappliquelecomportementdesrelations,enfonctiondumodechoisiSharePointveillera,soitempcher unlmentrfrencdtresupprim,soitsupprimerllmentrfrencettoutessesrelations. Lorsquelonvalide,SharePointdemandelaconfirmationsuivante:

Openmirrors.com
Ilfautbiensrconfirmer.Afindegarantirunerapiditdexcutionconvenableetviterunesurchargeinutileauniveau dumoteurSQL,SharePointcreeneffetunindexauniveaudelabasededonnes. LorsquunerelationdetypeSupressionlimiteestmiseen uvreetquelonessayedesupprimeruneentrelie unautrelment(enloccurrence,unpaysassociuneville),SharePointaffichecemessagederreur:

- 3-

Openmirrors.com

Programmatiquement, une exception de typeSPException est leve si lon tente de supprimer un lment li un autreetquelintgritrfrentielleestapplique. Lalistedesvillesdoitaufinalressemblerceci:

Terminezaveclalistedesclients.Elledoitcontenirunecolonnelielalistedesvillesaveclemmetypederelation queprcdemmentetdoit,aufinal,ressemblerceci:

LacolonneAgeestsimplementlpoureffectuerdesmisesjourdcritesplusloindanslouvrage. Voil!Votreenvironnementdedonnesestcr.Vouspouvezprsentexaminercommentlexploiterautraversdes diffrentesAPI.

- 4-

You might also like