Mise à jour par défaut de la « date estimée » (SLA)
Posté : lun. 27 août 2018 12:36
Table des matières
1 Mise en place du SLA
1.1 Objectif
1.2 Table à créer : « tsla »
1.3 Définition des triggers
1 Mise en place du SLA
1.1 Objectif
L’objectif est de mettre une valeur par défaut dans le champs « Date de résolution estimée » qui sera déterminée en fonction de 3 paramètres : 1. Le type de ticket
2. La catégorie
3. La sous-catégorie
1.2 Table à créer : « tsla »
La table tsla contient la liste des SLA à appliquer. Les valeurs saisies correspondent aux indexes (ID) des tables ttypes, tcategory et tsubcat.
Description technique de la table :
Les « 0 » correspondent à une valeur non saisie dans le ticket.
Exemple de lecture de la table ci-dessus :
a. Si aucun type, category et sub_category renseigné, le SLA sera de 30 jours.
b. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category n’est pas renseignée, le SLA sera de 2 jours.
c. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category est « 14 », le SLA sera de 8 heures.
Si pas de valeur par défaut identifiée ('0' ; '0' ; '0'), la date estimée restera vide.
* Structure du fichier CSV pour importer les données en masse (table initialisée avec un fichier Excel)
id;type;category;sub_category;sla;sla_unit
1;0;0;0;30;DAY
2;4;0;0;2;DAY
3;4;1;0;2;DAY
* Paramètres d’import du fichier « SLA.csv »
1.3 Définition des triggers
2 triggers sur la table tincidents ont été créés afin de pouvoir mettre à jour la date de résolution estimée.
1. Avant insertion des données (-> initialisation de la date)
Code du trigger:
BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);
# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;
# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;
# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;
# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;
END
2. Avant mise à jour des données (-> prise en compte d’un changement dans les paramètres)
Code du trigger:
BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);
# Check if one update occured
IF NEW.type <> OLD.type
OR NEW.category <> OLD.category
OR NEW.subcat <> OLD.subcat
THEN
# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;
# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;
# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;
# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;
END IF;
END
*** FIN DE LA DOC ***
1 Mise en place du SLA
1.1 Objectif
1.2 Table à créer : « tsla »
1.3 Définition des triggers
1 Mise en place du SLA
1.1 Objectif
L’objectif est de mettre une valeur par défaut dans le champs « Date de résolution estimée » qui sera déterminée en fonction de 3 paramètres : 1. Le type de ticket
2. La catégorie
3. La sous-catégorie
1.2 Table à créer : « tsla »
La table tsla contient la liste des SLA à appliquer. Les valeurs saisies correspondent aux indexes (ID) des tables ttypes, tcategory et tsubcat.
Description technique de la table :
Voir image dans capture_1.zip - SNAG-0002
Voir image dans capture_1.zip - SNAG-0003
* Comment lire le contenu de la table ?Voir image dans capture_1.zip - SNAG-0004
Les « 0 » correspondent à une valeur non saisie dans le ticket.
Voir image dans capture_2.zip - SNAG-0005
Exemple de lecture de la table ci-dessus :
a. Si aucun type, category et sub_category renseigné, le SLA sera de 30 jours.
b. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category n’est pas renseignée, le SLA sera de 2 jours.
c. Si le ticket est de type « incident », la category renseignée est « 1 » et que la sub_category est « 14 », le SLA sera de 8 heures.
Si pas de valeur par défaut identifiée ('0' ; '0' ; '0'), la date estimée restera vide.
* Structure du fichier CSV pour importer les données en masse (table initialisée avec un fichier Excel)
id;type;category;sub_category;sla;sla_unit
1;0;0;0;30;DAY
2;4;0;0;2;DAY
3;4;1;0;2;DAY
* Paramètres d’import du fichier « SLA.csv »
Voir image dans capture_2.zip - SNAG-0006
1.3 Définition des triggers
2 triggers sur la table tincidents ont été créés afin de pouvoir mettre à jour la date de résolution estimée.
Voir image dans capture_2.zip - SNAG-0007
1. Avant insertion des données (-> initialisation de la date)
Code du trigger:
BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);
# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;
# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;
# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;
# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;
END
2. Avant mise à jour des données (-> prise en compte d’un changement dans les paramètres)
Code du trigger:
BEGIN
DECLARE v_time DECIMAL(4,1);
DECLARE v_type INT(5);
DECLARE v_cat INT(3);
DECLARE v_subcat INT(3);
# Check if one update occured
IF NEW.type <> OLD.type
OR NEW.category <> OLD.category
OR NEW.subcat <> OLD.subcat
THEN
# Check if type selected
IF (NEW.type > 0) THEN
SET v_type = NEW.type;
ELSE
SET v_type = 0;
END IF;
# Check if category selected
IF (NEW.category > 0) THEN
SET v_cat = NEW.category;
ELSE
SET v_cat = 0;
END IF;
# Check if sub-category selected
IF (NEW.subcat > 0) THEN
SET v_subcat = NEW.subcat;
ELSE
SET v_subcat = 0;
END IF;
# Retrieve SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = v_type
AND category = v_cat
AND sub_category = v_subcat) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
# Retrieve default SLA time
SET v_time = (SELECT sla
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0);
# SET DATE_HOPE in function of sla_unit
IF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'HOUR' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time HOUR);
ELSEIF (SELECT sla_unit
FROM tsla
WHERE type = 0
AND category = 0
AND sub_category = 0) = 'DAY' THEN
# Set new value for DATE_HOPE
SET NEW.date_hope = ADDDATE(SYSDATE(), INTERVAL v_time DAY);
ELSE
SET NEW.date_hope = 0 ;
END IF;
END IF;
END IF;
END
*** FIN DE LA DOC ***