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:

ForceEquivalence
10
248
351
480

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

NomTypeDescription
idintegerID du risque.
titlestringNom de la catégorie du risque.
parent_idintegerID de la société ou le risque est rattaché.
statusstringStatut du risque, valeur par défaut « inherit »
taxonomy[‘digi-category-risk’]array of integerID de la catégorie de risque. Inséré en $push
taxonomy[‘digi-method’]array of integerID de la méthode d’évaluation. Inséré en $push
current_equivalenceintegerDonnée compilée de l’équivalence de l’évaluation du risque

Dans l’évaluation du risque

NomTypeDescription
scaleintegerForce du risque.

  • Simplifiée: entre 1 et 4
post_idintegerID du risque où associer l’évaluation
equivalenceintegerLa 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

NomDescriptionParamètres
wp_ajax_edit_riskPremière action déclenché permettant l’enregistrement du risque en base de donnéeArray $_POST
digi_after_edit_riskAprès l’enregistrement du risque en base de donnéeRisk_Model $risk, Array $form_data
digi_after_save_evaluation_riskAprès l’enregistrement de l’évaluation du risque en base de donnéeRisk_Model $risk, Risk_Evaluation_Model $risk_evaluation, Array $form_data
digi_after_save_evaluation_commentAprè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 :