Skip to content

Commit 9540bb2

Browse files
committed
Corrections orthographiques
1 parent 4c66975 commit 9540bb2

File tree

1 file changed

+44
-30
lines changed

1 file changed

+44
-30
lines changed

_posts/2011-12-14-xwiki-au-banc-de-test.markdown

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,16 @@ Alors si j'ai bien tout compris (à vous de vérifier donc :)), le Wiki de 2ème
4141
XWiki (en version 3.2) propose effet tout ce qui caractérise un CMS :
4242

4343
* un portail Web qui présente du contenu éditorial, produit par plusieurs utilisateurs
44-
* une séparation entre les données (contenues dans Classes et de Objets) et leur présentation (utilisation de Velocity comme moteur de templating, et de CSS)
45-
* une structuration du contenu : hiérarchisation, organisation en espaces plus ou moins spécialisé (espace forum, espace blog...)
46-
* une véritable gestion des comptes utilisateur et de leurs permissions sur l'ensemble des objets
44+
* une séparation entre les données (contenues dans les Classes et les Objets) et leur présentation (utilisation de Velocity comme moteur de templating, et de CSS)
45+
* une structuration du contenu : hiérarchisation, organisation en espaces plus ou moins spécialisés (espace forum, espace blog...)
46+
* une véritable gestion des comptes utilisateurs et de leurs permissions sur l'ensemble des objets
4747
* un versionning du contenu
4848

4949
En revanche, pas de workflow de publication, bien qu'il soit tout a fait possible d'en créer un.
5050

5151
Car ce qui différentie XWiki des autres produits de Wiki et CMS, c'est son extrème flexibilité.
52-
Il est important de distinguer plusieurs rôles dans la population des utilisateur : l'utilisateur final (l'internaute), l'utilisateur privilégié (le webmaster), le développeur (qui cré des composants/plugins).
53-
Du point de vue des utilisateurs privilégiés, XWiki n'est pas particulièrement facile à prendre en main. Il est en revanche [très bien documenté](http://enterprise.xwiki.org/xwiki/bin/view/UserGuide/WebHome)
54-
Pour les développeurs c'est l'inverse : très mal documenté, et extèmement puissant.
52+
Du point de vue des utilisateurs privilégiés (le webmaster), XWiki n'est pas particulièrement facile à prendre en main. Il est en revanche [très bien documenté](http://enterprise.xwiki.org/xwiki/bin/view/UserGuide/WebHome)
53+
Pour les développeurs (créateur de plugins et composants) c'est l'inverse : mal documenté, et extèmement puissant.
5554

5655

5756
## Le modèle de donnée XWiki
@@ -72,46 +71,51 @@ Au niveau rendu, il est possible d'attacher à la classe un "Class Template" : c
7271
On peux aussi attacher une "Class Sheet" : template Velocity pour le rendu (action `view`) des `Objets`.
7372

7473

75-
## Premier pas en temps que développeur.
74+
## Premier pas en temps que développeur
7675

77-
Très facile à installer (un war à déposer dans un conteneur Servlet), XWiki propose ensuite des fonctionnalités d'import/export, et de personnalisation en ligne.
76+
Très facile à installer (un war à déposer dans un conteneur Servlet), XWiki propose au développeur des fonctionnalités d'import/export, et de personnalisation en ligne.
7877

79-
Ainsi, avec le compte administrateur, et directement dans l'application, on crée et modifie `Classes` et `Objets`.
80-
Le moteur de template [Velocity](http://velocity.apache.org/) est très facile à prendre en main, et j'ai choisis Groovy pour la "logique applicative" à l'intérieur des pages. [Groovy](http://groovy.codehaus.org/) apporte toute la puissance d'un language dynamique à la plateforme Java, tirant partie des librairies existantes,
78+
Ainsi, avec les droits suffisants, et directement dans l'application, on crée et modifie `Classes` et `Objets`.
79+
Le moteur de template [Velocity](http://velocity.apache.org/) est très facile à prendre en main, et j'ai choisis Groovy pour la "logique applicative" à l'intérieur des pages.
80+
[Groovy](http://groovy.codehaus.org/) apporte toute la puissance d'un language dynamique à la plateforme Java, tirant partie des librairies existantes,
8181

8282
Tout ce passe donc à chaud, sans redémarrage.
8383
Très pratique. Par contre, on édite du code dans un textarea : aucune fonctionnalité d'IDE.
8484
Il existe cependant un plugin Eclipse pour combler ce manque.
8585

86-
Coté versionning, chaque sauvegarde provoque une nouvelle version de l'`Object`, la `Classe`, le `Class Template` ou la `Class Sheet`. Donc possible de revenir en arrière lorsqu'on à cassé quelque chose.
86+
Coté versionning, chaque sauvegarde provoque une nouvelle version de l'`Object`, la `Classe`, le `Class Template` ou la `Class Sheet`.
87+
Donc il est possible de revenir en arrière lorsqu'on a cassé quelque chose.
8788

88-
La fonction d'export permet de faire un zip avec les modifications et configuration qu'on a apporté à son instance. Et naturellement, la fonction d'import permet de "déployer" son zip sur une autre instance.
89+
La fonction d'export permet de faire un zip avec les modifications et configurations qu'on a apporté à son instance.
90+
Et naturellement, la fonction d'import permet de "déployer" son zip sur une autre instance.
8991

9092

9193
## Le développement spécifique
9294

93-
XWiki promet une grande facilité d'extension, permettant au développeur d'enrichir les fonctionnalités de base pour "spécialiser" le produit pour un besoin fonctionnel donné.
95+
XWiki promet une grande facilité d'extension, permettant au développeur d'enrichir les fonctionnalités de base pour ajouter un fonctionnel spécifique.
9496

95-
Dans mon cas, je devais proposer à l'intérieur du portail les fonctionnalités de collecte et partage de données publiques. Le service sous-jacent est Smart Data, accessible via une API Http.
97+
Dans mon cas, je devais proposer à l'intérieur du portail les fonctionnalités de collecte et partage de données publiques.
98+
Le service sous-jacent est Smart Data, accessible via une API Http.
9699
Pour résumer :
97-
* Une page pour uploader un fichier de données, et donner nom/description de la source de données
98-
* Une page pour afficher et réaliser une recherche sur les sources de données existantes.
99-
* Une page pour visualiser le contenu d'une source de données (et télécharger le fichier original)
100-
* Une page pour supprimer les sources de données.
101100

102-
A chaque fonctionnalité correspond une API du service Web de Smart Data.
101+
* Une page pour uploader un fichier de données, et donner le nom et la description de la source de données
102+
* Une page pour afficher et réaliser une recherche sur les sources de données existantes
103+
* Une page pour visualiser le contenu d'une source de données (et télécharger le fichier original)
104+
* Une page pour supprimer les sources de données
103105

104-
Première solution : créer une Classe "DataSource", et avoir un Objet "DataSource" pour chaque source de données. Toute la logique de médiation est embarquée dans les page.
106+
Tout cela est réalisé en invoquant l'API Http du service Web de Smart Data, qui répond en Json.
105107

106-
Deuxième solution : créer un "composant" XWiki : des classes Java pour enrichir le fonctionnel XWiki, et encapsuler la logique de médiation un peu mieux que dans les pages. Les fonctionnalités sont ensuite accessible dans les pages sous forme de "macro".
108+
Il était possible de calquer le cycle de vie d'une DataSource sur une `Classe` XWiki, et de personnaliser les actions `edit` `view` et `delete`.
109+
Toute la logique de médiation aurait été embarquée dans les pages.
107110

108-
J'ai pris la seconde solution, car elle me semblait plus "propre": meilleur découpage/découplage de ma logique propre à Smart Data, meilleur testabilité.
111+
J'ai préféré développer un "plugin" XWiki : un jar pour enrichir le fonctionnel, et encapsuler la logique de médiation. Les pages peuvent invoquer ensuite ces fonctionnalités sous la forme de "macro".
112+
On obtient un meilleur découpage/découplage de la logique propre à Smart Data, et une meilleur testabilité (jar = projet maven = tests automatisés).
109113

110114
Ex: l'Object XWiki ViewDataSource (template Velocity)
111115
{% highlight html %}
112116
{{velocity}}
113117
{{html wiki="true"}}
114-
## Appel au composant maison : invoque la méthode get() pour récupérer le datasource sur Smart Data.
118+
## Appel au service de médiation : invoque la méthode get() pour récupérer le datasource sur Smart Data.
115119
#set($dataSource = $services.distantDataSourceService.get($request.getParameter('id')))
116120

117121
<div class="sd-datasource">
@@ -175,21 +179,31 @@ class DistantDataSourceService implements DataSourceService, ScriptService {
175179
}
176180
{% endhighlight %}
177181

178-
Le système est assez simple : le composant déclare un certain nombre de services (avec les annotations de la JSR-330), ainsi que les implémentations correspondantes. Ces service sont utilisable directement depuis les Object XWiki (injection de dépendance Spring).
182+
Le système est assez simple : le composant déclare un certain nombre de services (avec les annotations de la JSR-330), ainsi que les implémentations correspondantes.
183+
Ces services sont utilisables directement depuis les Object XWiki (injection de dépendances Spring).
179184

180185

181186
## Conclusion : bien ou quoi ?
182187

183-
XWiki se veux comme un outil très flexible et très puissant, une plateforme pouvant supporter le développement de n'importe quel portail Web, quelque soit ses fonctionnalités. C'est pour le moins ambitieux.
188+
XWiki se veux comme un outil très flexible et très puissant, une plateforme pouvant supporter le développement de n'importe quel portail Web, quelque soit ses fonctionnalités.
189+
C'est pour le moins ambitieux.
184190

185191
Après avoir travaillé deux semaines avec, je suis assez tenté de dire que le pari est réussi.
186192

187-
Pour un développeur, la courbe d'apprentissage est minimale lorsqu'on connait Spring/Hibernate. Le modèle de donnée est simple à prendre en main. Velocity et Groovy également. Pour moi, l'aggrégation de ces technologies est naturelle et à propos.
193+
Pour un développeur, la courbe d'apprentissage est minimale lorsqu'on connait Spring/Hibernate.
194+
Le modèle de donnée est simple.
195+
Velocity et Groovy sont des outils puissant et faciles à prendre en main.
196+
Pour moi, l'aggrégation de ces technologies est naturelle et à propos.
188197

189-
Maintenant, si j'ai pu atteindre mon objectif, ce ne fut pas sans grincements de dents. Et c'est principalement dû à la flexibilité de l'outil : il y a toujours 2 ou 3 manières de réaliser la même fonctionnalité, et parfois, on s'y perd un peu.
198+
Maintenant, si j'ai pu atteindre mon objectif, ce ne fut pas sans grincements de dents.
199+
Et c'est principalement dû à la flexibilité de l'outil : il y a toujours 2 ou 3 manières de réaliser la même fonctionnalité.
200+
Parfois, on s'y perd un peu.
190201

191202
La documentation développeur est un gros point faible à mon sens.
192-
Enfin, les performances ne sont vraiment pas au niveau. Le temps de chargement d'une page est rédhibitoire pour un site à très fort traffic.
203+
Enfin, les performances ne sont vraiment pas au niveau.
204+
Le temps de chargement d'une page est rédhibitoire pour un site à très fort traffic.
205+
206+
En conclusion, je suis assez conquis par XWiki, mais pas dans une optique "grosse production de gros site à gros traffic".
207+
Etre productif en solo est facile, mais je ne suis pas aussi confiant dans le cadre d'une équipe d'une dizaine de personnes.
193208

194-
En conclusion, je suis assez conquis par XWiki, mais pas dans une optique "grosse production de gros site à gros traffic". Etre productif en solo est facile, mais je ne suis pas aussi confiant dans le cadre d'une équipe d'une dizaine de personnes.
195-
Si je peux donc emettre un conseil : essayez le !
209+
Si je peux donc emettre un conseil : essayez le, et n'hésitez pas à commenter pour donner votre avis !

0 commit comments

Comments
 (0)