Suivi de l’activité sur un espace Confluence


Publié par
Cyrille MARTIN

6 octobre 2009

Confluence offre très peu de solutions pour observer l’activité de l’espace dont on a la charge.
Nous avons l’onglet « Activité » qui permet d’avoir une vue globale sur le nombre de pages vues et édités sur différentes périodes de temps.

Confluence Space Activity

Confluence Space Activity

Cette page nous offre aussi la courte liste (les 5 premiers) des pages les plus vues, des pages les plus éditées et les utilisateurs les plus actifs.

Ces informations sont intéressantes pour une vue de synthèse afin de déterminer nos utilisateurs clefs sur un mois.

Mais cela peut ne pas être suffisant. « Peut on faire mieux en matière de reporting ? » est une question qui m’est posée fréquemment lors de mes interventions chez nos clients.

Le besoin est de voir l’activité de chaque utilisateur, de constater l’évolution de l’utilisation du Wiki.

Nous pouvons obtenir ces informations et beaucoup d’autres en attaquant directement la base de données.

Par exemple nous pouvons obtenir la liste des pages créées et modifiées par l’ensemble des contributeurs de notre espaces en exécutant ces deux requêtes sur les quatre dernières semaines:

1. Nombre de créations de pages

SELECT T1.creator, (select count(T2.contentid)
FROM content T2
WHERE T2.creator=T1.creator
AND T2.creationdate < current_date AND T2.creationdate > current_date – 7
AND T2.spaceid = T1.spaceid ) AS « J à J-7 »,
(select count(T3.contentid)
FROM content T3
WHERE T3.creator=T1.creator
AND T3.creationdate < current_date -7 AND T3.creationdate > current_date – 14
AND T3.spaceid = T1.spaceid ) AS « J-7 à J-14 »,
(select count(T4.contentid)
FROM content T4
WHERE T4.creator=T1.creator
AND T4.creationdate < current_date -14 AND T4.creationdate > current_date – 21
AND T4.spaceid = T1.spaceid ) AS « J-14 à J-21 »,
(select count(T5.contentid)
FROM content T5
WHERE T5.creator=T1.creator
AND T5.creationdate < current_date -21 AND T5.creationdate > current_date – 28
AND T5.spaceid = T1.spaceid) AS « J-21 à J-28 »
FROM content T1, spaces S
WHERE T1.creator IS not NULL
AND T1.spaceid = S.spaceid
AND S.spacekey=’arteplanning’
GROUP BY T1.creator, T1.spaceid;

2. Nombre de modifications de pages

SELECT T1.lastmodifier, (select count(T2.contentid)
FROM content T2
WHERE T2.lastmodifier=T1.lastmodifier
AND T2.lastmoddate < current_date AND T2.lastmoddate > current_date – 7
AND T2.spaceid = T1.spaceid ) AS « J à J-7 »,
(select count(T3.contentid)
FROM content T3
WHERE T3.lastmodifier=T1.lastmodifier
AND T3.lastmoddate < current_date -7 AND T3.lastmoddate > current_date – 14
AND T3.spaceid = T1.spaceid ) AS « J-7 à J-14 »,
(select count(T4.contentid)
FROM content T4
WHERE T4.lastmodifier=T1.lastmodifier
AND T4.lastmoddate < current_date -14 AND T4.lastmoddate > current_date – 21
AND T4.spaceid = T1.spaceid ) AS « J-14 à J-21 »,
(select count(T5.contentid)
FROM content T5
WHERE T5.lastmodifier=T1.lastmodifier
AND T5.lastmoddate < current_date -21 AND T5.lastmoddate > current_date – 28
AND T5.spaceid = T1.spaceid) AS « J-21 à J-28 »
FROM content T1, spaces S
WHERE T1.lastmodifier IS not NULL
AND T1.spaceid = S.spaceid
AND S.spacekey=’arteplanning’
GROUP BY T1.lastmodifier, T1.spaceid;

Lancer ces deux requêtes depuis une console sur la base de données n’est pas très intéressant, grâce au plugin SQL nous pouvons directement afficher le résultat dans une page Confluence. Dans ce cas il faut définir dans votre fichier context un datasource. cela vous permettra de ne pas mettre en dur dans la page Confluence le login et mot de passe de connexion à la base de données.

Et nous pouvons même mettre en forme ces résultats avec le plugin Chart.

Ainsi le code suivant:

{chart:type=line|title= Nombre de créations de Page par Auteurs}
{sql-query:dataSource=ConfluenceDS|output=wiki}
SELECT T1.creator, (select count(T2.contentid)
FROM content T2
WHERE T2.creator=T1.creator
AND T2.creationdate < current_date AND T2.creationdate > current_date – 7
AND T2.spaceid = T1.spaceid ) AS « J à J-7 »,
(select count(T3.contentid)
FROM content T3
WHERE T3.creator=T1.creator
AND T3.creationdate < current_date -7 AND T3.creationdate > current_date – 14
AND T3.spaceid = T1.spaceid ) AS « J-7 à J-14 »,
(select count(T4.contentid)
FROM content T4
WHERE T4.creator=T1.creator
AND T4.creationdate < current_date -14 AND T4.creationdate > current_date – 21
AND T4.spaceid = T1.spaceid ) AS « J-14 à J-21 »,
(select count(T5.contentid)
FROM content T5
WHERE T5.creator=T1.creator
AND T5.creationdate < current_date -21 AND T5.creationdate > current_date – 28
AND T5.spaceid = T1.spaceid) AS « J-21 à J-28 »
FROM content T1, spaces S
WHERE T1.creator IS not NULL
AND T1.spaceid = S.spaceid
AND S.spacekey=’REDACTION’
GROUP BY T1.creator, T1.spaceid;
{sql-query}
{chart}</p>
<p>{chart:type=line|title=Nombre de modifications de Page par Contributeur}
{sql-query:dataSource=ConfluenceDS|output=wiki}
SELECT T1.lastmodifier, (select count(T2.contentid)
FROM content T2
WHERE T2.lastmodifier=T1.lastmodifier
AND T2.lastmoddate < current_date AND T2.lastmoddate > current_date – 7
AND T2.spaceid = T1.spaceid ) AS « J à J-7 »,
(select count(T3.contentid)
FROM content T3
WHERE T3.lastmodifier=T1.lastmodifier
AND T3.lastmoddate < current_date -7 AND T3.lastmoddate > current_date – 14
AND T3.spaceid = T1.spaceid ) AS « J-7 à J-14 »,
(select count(T4.contentid)
FROM content T4
WHERE T4.lastmodifier=T1.lastmodifier
AND T4.lastmoddate < current_date -14 AND T4.lastmoddate > current_date – 21
AND T4.spaceid = T1.spaceid ) AS « J-14 à J-21 »,
(select count(T5.contentid)
FROM content T5
WHERE T5.lastmodifier=T1.lastmodifier
AND T5.lastmoddate < current_date -21 AND T5.lastmoddate > current_date – 28
AND T5.spaceid = T1.spaceid) AS « J-21 à J-28 »
FROM content T1, spaces S
WHERE T1.lastmodifier IS not NULL
AND T1.spaceid = S.spaceid
AND S.spacekey=’arteplanning’
GROUP BY T1.lastmodifier, T1.spaceid;
{sql-query}
{chart}

nous donne ce graphique dans la page Confluence
Stat contributions

Libre à vous de développer d’autres requêtes SQL, mais faites attention la requête est lancée à chaque fois que la page Confluence est chargée.
Vous pouvez effectuer des optimisations de ce côté afin de la lancer qu’une fois par semaine – {cache} -ou afficher la page même si la requête n’a pas fini son exécution – {future}. Allez sur cette page