Check Factory

Le plugin Check Factory a pour objectif de fournir des objets et des API génériques de gestion de contrôles et de leurs observations et de faciliter la construction de dashboards de suivi au travers d’une interface utilisateur dans l’espace privé.

Installation

Le plugin s’installe comme n’importe quel plugin SPIP. Il nécessite les plugin Saisies pour formulaires, YAML et Cache Factory.

Concepts

Les types de contrôle

Les types de contrôle sont des fonctions – au sens large – qui réalisent des vérifications, des actions ou des états et produisent des résultats sous forme d’observations, de sorties physiques (fichiers) et/ou d’affichages. Un type de contrôle peut concerner des objets ou des groupes d’objets du site sur lequel est installé le plugin Check Factory ou d’un site distant accessible, par exemple, au travers d’un service Web.

Un type de contrôle peut être associé à un fichier YAML, type_controle.yaml, qui décrit l’ensemble de ses caractéristiques. Son identifiant est alors le nom du fichier YAML sans extension. L’identifiant doit être composé de caractères acceptables pour un nom de fonction PHP, donc en particulier éviter le tiret. Les fichiers YAML doivent être stockés dans le dossier relatif ezcheck/controles/. Un exemple de fichier commenté est fourni avec le plugin.

Sinon, il est aussi possible de décrire les caractéristiques d’un type de contrôle via le pipeline eztypecontrole_declarer.

Un type de contrôle est défini par :
-  son identification, à savoir, son identifiant unique, son nom, sa description et son logo éventuel ;
-  une éventuelle fonction PHP d’exécution du contrôle pour laquelle il est possible de préciser le nom, la localisation (fichier PHP) et des arguments qui seront fournis via un formulaire.
-  une liste éventuelle d’anomalies (observation de type anomalie) pouvant être produites par le contrôle et pour lesquelles il est possible d’associer une fonction de correction automatique ;
-  un affichage complémentaire défini par un squelette HTML auquel il est possible d’adjoindre un contexte fixe mais aussi une liste de paramètres fournis via un formulaire ;
-  une liste de saisies de paramètres attachés soit à la fonction d’exécution, soit à l’affichage complémentaire.

Ces éléments font partie de la configuration du type de contrôle. La plupart sont facultatifs. Un type de contrôle sans fonction d’exécution ni paramètres est appelé un état : il se contente d’un affichage.

Si le type de contrôle est basé sur une fonction PHP, celle-ci est identifiée par son nom et le fichier dans lequel elle est définie. Il en va de même pour les fonctions de corrections. Par défaut, la fonction d’exécution porte un nom qui coïncide avec l’identifiant de son type de contrôle. Dans ce cas, il suffit d’indiquer la localisation de la fonction.

Les fonctions de correction possèdent un nom imposé composé de l’identifiant du type de contrôle et de l’identifiant de l’anomalie à corriger.

Les contrôles

Un contrôle est une « instance d’un type de contrôle » exécutée à un instant t suite à une demande d’un utilisateur autorisé ou à l’échéance d’un CRON (non disponible dans la version actuelle).

Outre son type, le contrôle possède un statut d’exécution qui rend compte du déroulement correct ou pas de la fonction associée. Ce statut n’a rien à voir avec les observations éventuellement générées pendant l’exécution du contrôle.

Tout type de contrôle possédant une fonction d’exécution ou à minima un affichage complémentaire avec des paramètres génère des contrôles. Seuls les états ne génèrent pas de contrôle car ils ne font qu’afficher un squelette HTML.

Les observations

Les observations sont des logs qui consignent des résultats de l’exécution du contrôle. Les observations ne sont générées que par la fonction d’exécution PHP au travers de l’API fournie par le plugin Check Factory. Leur utilisation est facultative.

Une observation est associée à un contrôle et concerne un objet au sens large (objet SPIP ou tout autre élément observable).

Une anomalie est une observation particulière qui possède un statut ouverte ou fermée et qui peut être soit acquittée manuellement soit corrigée automatiquement par l’exécution d’une fonction spécifique de correction : elle passe alors dans l’état fermée. Le suivi des anomalies est une fonction essentielle du plugin Check Factory.

Les dashboards

Un dashboard est une page HTML qui organise les types de contrôle, permet leur exécution, affiche les résultats et facilite la gestion des anomalies. Il est décrit par un fichier de configuration YAML ou JSON dont le nom coïncide avec l’identifiant du dashboard lui-même.

Les fichiers YAML ou JSON doivent être stockés dans le dossier ezcheck/dashboards/ d’un plugin utilisateur.

Il est possible de créer autant de dashboards que l’on souhaite et d’y associer tous les types de contrôle nécessaires. Pour simplifier la présentation, les types de contrôle sont organisés par groupe (onglets). Un exemple de dashboard est fourni ci-après.

L’interface utilisateur dans l’espace privé

L’administration des types de contrôle

L’interface utilisateur du plugin Check Factory propose, dans l’espace privé, une page de gestion sommaire des types de contrôle, ezcheck&vue=type_controle. Elle permet :
-  d’afficher la liste des types de contrôle ;
-  d’activer ou de désactiver temporairement des types de contrôle ;
-  de recharger la liste des types de contrôle.

Si une erreur est détectée dans la configuration du type de contrôle (YAML ou pipeline), un message d’erreur est affiché dans la zone du type de contrôle.

L’administration des dashboards

L’interface utilisateur du plugin Check Factory propose, dans l’espace privé, une page de gestion sommaire des dashboard, ezcheck&vue=dashboard. Elle permet :
-  d’afficher la liste des dashboards ;
-  de recharger la liste des dashboards.

Le dashboard d’exécution des contrôles

La page dashboard est la page d’exécution des types de contrôle et de gestion des anomalies pour un type de contrôle donné. Elle est construite automatiquement à partir des informations collectées dans les fichiers de configuration ou au travers des pipelines de chargement des dashboards et des types de contrôles.

La page est organisée avec un menu d’onglets, un onglet représentant un groupe de types de contrôle, un menu des types de contrôle du groupe sélectionné et une partie centrale fournissant l’ensemble des éléments constitutifs du contrôle exécuté ou à exécuter.

La partie centrale est composée de différents éléments distincts concernant l’exécution du contrôle et les résultats de l’exécution. Les éléments présentés diffèrent selon la configuration du type de contrôle mais on distinguer :
-  Le formulaire de lancement de l’exécution, qui affiche toujours une explication sur le contrôle et, éventuellement, une liste de saisies nécessaires pour exécuter le contrôle et un bouton de lancement de l’exécution d’un nouveau contrôle ;
-  Le dernier contrôle effectué avec, en particulier, la date et le statut d’exécution ;
-  La liste des contrôles précédents dont les anomalies n’ont pas toutes été résolues (dépend du type de contrôle et du contexte d’exécution) ;
-  La liste des anomalies ouvertes (dépend du type de contrôle et du contexte d’exécution) ;
-  La liste des anomalies fermées et non encore effacées (dépend du type de contrôle et du contexte d’exécution) ;
-  Un affichage spécifique optionnel fournissant des résultats divers sur l’exécution du contrôle au travers d’un squelette.

Pour aller plus loin

Un guide de conception est inclus en PDF dans le plugin. En outre, un exemple complet de mise en œuvre est disponible au travers du plugin Contrib - Mécanismes et espace privé qui permet la maintenance du site SPIP-Contrib.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom