Après en avoir fini avec toute la plomberie nécessaire au fonctionnement de l'application Quizz dans le dernier post, je vais enfin pouvoir vous parler du développement de l'application en elle-même.
Mais avant, ça je vous voulais faire un petit post pour vous présenter comment je déploie simplement l'application sur mon environnement de développement.
La plupart d'entre vous sont déjà en train de se dire que je vais vous parler de WSPBuilder ou de ce genre d'outil mais il n'en est rien.
Quand je vous parle de déploiement de l'application, je parle effectivement du déploiement de la solution mais plus encore :
- Upload de la Solution
- Création de la WebApplication
- Déploiement de la Solution
- Création de la SiteCollection
- Activation des Features
- Création de la liste Quizz Catégories
- Ajout de catégories dans la liste Quizz Catégories
- Création d'une liste Quizz Animaux basé sur notre ListDefinition
- Ajout de Questions à la liste Quizz Animaux.
L'idée étant d'obtenir un environnement complet en y passant le moins de temps possible.
Pour ceux qui surveillent la blogosphère SharePoint, vous devez savoir qu'il existe quelques outils qui me permettraient de réaliser certaines de ces opérations (mais pas toutes) :
Malheureusement Adrien et moi même souhaitions un outil qui puisse être simplement intégré à un Server de Build et à une intégration continue dans le cadre d'un projet SharePoint. Ce qui impliquait non seulement la création d'un environnement complet mais aussi son nettoyage. Du coup, nous l'avons développé nous-même :)
Au final, sans rentrer dans les détails, l'outil se base sur le modèle objet SharePoint et un fichier XML pour recréer tout l'environnement. L'outil se présente sous la forme d'une partie client et une partie serveur qui communiqueront ensemble via WCF. Le serveur en lui-même est un service Windows qui est installé sur la machine qui host SharePoint.
Concernant le projet Quizz dont je parle depuis quelques posts, le fichier XML de déploiement ressemble à ceci :
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Farm xmlns="http://***/SharePointDataPopulate">
3: <Solutions>
4: <Solution Name="Demo.SharePoint.Quizz.wsp"
5: Path="C:\Users\Administrator\Documents\Visual Studio 2008\Projects\
6: Demo.SharePoint.Quizz\Quizz.Solution\Demo.SharePoint.Quizz.wsp"
7: IgnoreIfExists="true" />
8: </Solutions>
9: <WebApps>
10: <WebApp Port="80"
11: SQLPassword="Password0"
12: SQLUserName="SVC-SPCONF"
13: APidType="SpecificUser"
14: APidLogin="ORIJIN-HV\SVC-SPCONP"
15: APidPwd="Password0">
16: <Solutions>
17: <Solution Name="Demo.SharePoint.Quizz.wsp"
18: Force="true"/>
19: </Solutions>
20: <Sites>
21: <Site Url="/"
22: Title="Intranet"
23: Description="Description Intranet"
24: LCID="1036"
25: WebTemplate="STS#1"
26: OwnerEmail="administrator@orijin.local"
27: OwnerLogin="ORIJIN-HV\Administrator"
28: OwnerName="Philippe Sentenac">
29: <Features>
30: <!--Quizz Features-->
31: <Feature Id="{321BBA1F-47A9-4B0F-BB17-3A34CFD58CCE}"
32: IgnoreIfExists="true"/>
33: </Features>
34: <Web Description="NotUsed"
35: Title="NotUsed"
36: LCID="1033"
37: UniquePermissions="false"
38: Url="NotUsed"
39: WebTemplate="NotUsed">
40: <Lists>
41: <List Title="Quizz Catégories"
42: ListTemplate="Generic"
43: Description="">
44: <ListItems>
45: <ListItem Title="Carnivore" />
46: <ListItem Title="Herbivore" />
47: <ListItem Title="Reptile" />
48: </ListItems>
49: </List>
50:
51: <List Title="Quizz Animaux"
52: ListTemplate="10042"
53: Description=""
54: FeatureId="{65E774A0-0B40-4341-B694-429B61A6EE15}"
55: QuickLaunch="true"
56: Url="Lists/QuizzAnimals">
57: <ListItems>
58: <ListItem Title="">
59: <FieldsValues>
60: <FieldValue FieldName="QuizzQuestion"><![CDATA[Dans quel pays,
61: le chat domestique était vénéré à l'époque des pharaons ?]]></FieldValue>
62: <FieldValue FieldName="QuizzChoices"><![CDATA[Egypte;Tunisie;Espagne]]></FieldValue>
63: <FieldValue FieldName="QuizzAnswers"><![CDATA[0]]></FieldValue>
64: <FieldValue FieldName="QuizzCategory"><![CDATA[1;#Carnivore]]></FieldValue>
65: </FieldsValues>
66: </ListItem>
67: <ListItem Title="">
68: <FieldsValues>
69: <FieldValue FieldName="QuizzQuestion"><![CDATA[quelle est le reptile le plus grand ?]]></FieldValue>
70: <FieldValue FieldName="QuizzChoices"><![CDATA[le cochon d'inde;l'autruche;le crocodile]]></FieldValue>
71: <FieldValue FieldName="QuizzAnswers"><![CDATA[2]]></FieldValue>
72: <FieldValue FieldName="QuizzCategory"><![CDATA[3;#Reptile]]></FieldValue>
73: </FieldsValues>
74: </ListItem>
75: </ListItems>
76: </List>
77: </Lists>
78: </Web>
79: </Site>
80: </Sites>
81: </WebApp>
82: </WebApps>
83: </Farm>
L'avantage de cet outil est qu'il cumule à la fois la création d'un environnement (qui aurait pu être scripté via PowerShell ou STSADM) et l'ajout de contenu SharePoint (GED, WCM, Contenu personnalisé).
De plus dans le cadre de la série de post liée au Quizz, il me permet de vous décrire simplement le contenu (grâce au fichier XML) sur lequel je vais m'appuyer dans la suite des développements
Ainsi après lancement, voilà ce que l'on obtient :
- Une WebApp créée sur le port 80 avec une SiteCollection sur "/" nommée Intranet
- La feature Quizz déjà activée

- Une liste catégorie créée et pré-remplie

- Une liste Quizz Animaux créée en utlisant la définition adéquate et pré-remplie
Le tout en 2-3 minutes, juste le temps qu'il faut pour se préparer un bon café :).
Voilà, je ne vais pas m'attarder sur cet outil, j'en parlerais plus à l'occasion de la session que je co-presente avec Adrien au Techdays, je voulais simplement vous montrer comment je crée mon environnement SharePoint pour chacun des projets sur lequel je travaille.
Dans le prochain post, on abordera toute les écrans nécessaire au bon fonctionnement de l'application Quizz.
<Philippe/>