Dev: Mieux comprendre l’édition des risques dans l’application DigiRisk

La lecture de cet article permet de comprendre ce qui se passe lors de l’édition d’un risque dans l’application DigiRisk.

Cet article fait référence à la version 6.5.0 de DigiRisk.

Nous allons voir les sujets suivants:

  • Le processus d’édition d’un risque ainsi que sa méthode d’évaluation
  • Les données d’un risque enregistrées en base de données
  • L’algorithme gérant les cotations de risque selon la méthode d’évaluation utilisée.
  • Les méthodes PHP utilisées
  • Les hooks déclenchés lors de l’édition d’un risque.

Avant tout chose, il est important de comprendre qu’en terme technique, un risque contient 6 entités:

  • Le risque
  • L’image du risque
  • La catégorie de la méthode d’évaluation
  • La catégorie du risque
  • L’évaluation du risque
  • Le ou les commentaires sur l’évaluation

Comment se déroule le processus d’édition d’un risque

Création d’un nouveau risque

Les étapes dans l’ordre chronologique:

  1. Enregistrement du risque en base de données
    1. Création d’un post de type « digi-risk » rattaché à la société ou le risque à été créé en utilisant post_parent.
    2. Enregistrement des métadonnées du risque
    3. Si une image à la une à été mise en place sur le risque, création d’un post de type « attachment » liée par l’ID du risque en utilisant post_parent.
    4. Appel l’action « digi_add_historic » pour ajouter le nouveau risque dans l’historique de la société à lequel le risque est rattaché.
  2. Liaison de l’ID de la catégorie de la méthode d’évaluation vers l’ID du risque
  3. Liaison de l’ID de la catégorie de risque vers l’ID du risque
  4. Enregistrement de l’évaluation du risque en base de données
    1. Création d’un commentaire de type « digi-risk-eval » attaché par l’ID du risque en utilisant comment_post_ID.
    2. Enregistrement des métadonnées de l’évaluation du risque. (Voir le chapitre « Édition de l’évaluation des risques » pour plus de détails)
  5. Enregistrement du commentaire attaché par l’ID du risque en utilisant comment_post_ID et attaché à l’ID de l’évaluation en utilisant comment_parent.

Édition d’un risque existant

Les étapes dans l’ordre chronologique:

  1. Modification du risque en base de données
    1. Mise à jour des métadonnées du risque
  2. Enregistrement de l’évaluation du risque en base de données
    1. Création d’un commentaire de type « digi-risk-eval » attaché par l’ID du risque en utilisant comment_post_ID.
    2. Enregistrement des métadonnées de l’évaluation du risque
  3. Enregistrement du attaché par l’ID du risque en utilisant comment_post_ID et attaché à l’ID de l’évaluation en utilisant comment_parent.

Comment est calculée la cotation d’un risque ?

La méthode simplifiée

Pour cette méthode, le déroulement est très simple, nous effectuons simplement une vérification sur l’équivalence et la force reçu par le formulaire.

La méthode Evarisk

Au contraire de la méthode précédente, le déroulement pour l’enregistrement de la méthode Evarisk est un peu plus complexe.

Pour obtenir la cotation, nous multiplions les notes de chaque variante de la méthode effectuées par l’utilisateur dans l’édition du risque. Pour rappel, la valeur des notes sont comprises entre 0 et 4

Une fois la cotation obtenu, nous la convertissons en pourcentage grâce à la matrice (définie ici) afin de récupérer une équivalence compatible avec la méthode simplifiée.

Un exemple

Supposons les variantes suivantes:

  • Gravité: 2
  • Exposition: 2
  • Occurrence: 3
  • Formation: 3
  • Protection: 3

Calcule de la cotation

cotation = Gravité  * Exposition * Occurrence * Formation * Protection

cotation = 2 * 2 * 3 * 3 * 3

cotation = 108

Conversion grâce à la matrice

Se référer au tableau de la matrice disponible dans la documentation par ici, ce qui donne:

equivalence = 48

Récupérer la force par rapport à l’équivalence

Nous avons définis un tableau en PHP qui permet de récupérer la force selon une équivalence:

Force Equivalence
1 0
2 48
3 51
4 80

Pour l’équivalence que nous avons calculé précédemment: 48, la force correspond à 2.

L’enregistrement de ses données

En base de données, nous enregistrons la cotation, l’équivalence, et la force du risque ainsi que les variantes utilisées.

Les données enregistrées en base de données

Dans le risque

Nom Type Description
id integer ID du risque.
title string Nom de la catégorie du risque.
parent_id integer ID de la société ou le risque est rattaché.
status string Statut du risque, valeur par défaut « inherit »
taxonomy[‘digi-category-risk’] array of integer ID de la catégorie de risque. Inséré en $push
taxonomy[‘digi-method’] array of integer ID de la méthode d’évaluation. Inséré en $push
current_equivalence integer Donnée compilée de l’équivalence de l’évaluation du risque

Dans l’évaluation du risque

Nom Type Description
scale integer Force du risque.

  • Simplifiée: entre 1 et 4
post_id integer ID du risque où associer l’évaluation
equivalence integer La cotation du risque en pourcentage

Les méthodes utilisées

  • save_risk() dans modules/risk/class/risk.class.php
  • save_evaluation_risk() dans modules/risk/class/risk-evaluation.class.php
  • save_evaluation_comment() dans modules /risk/class/risk-evaluation-comment.class.php

Les actions déclenchées

Nom Description Paramètres
wp_ajax_edit_risk Première action déclenché permettant l’enregistrement du risque en base de donnée Array $_POST
digi_after_edit_risk Après l’enregistrement du risque en base de donnée Risk_Model $risk, Array $form_data
digi_after_save_evaluation_risk Après l’enregistrement de l’évaluation du risque en base de donnée Risk_Model $risk, Risk_Evaluation_Model $risk_evaluation, Array $form_data
digi_after_save_evaluation_comment Après l’enregistre du/des commentaire(s) de l’évaluation en base de donnée. Risk_Model $risk, Risk_Evaluation_Model $risk_evaluation, Array Risk_Evaluation_Comment_Model $risk_evaluation_comments, Array $form_data

%d blogueurs aiment cette page :