Outils pour utilisateurs

Outils du site


dev_doc:package:supervision_pkg

Ceci est une ancienne révision du document !


Package de supervision

Ce package permet l'envoi d'un mail de supervision d'un environnement pour obtenir des informations sur celui-ci. Ces données sont formatées en HTML pour plus de lisibilité.


SOMMAIRE

Prérequis pour maintenir ce package

  • Le mail étant basée sur les technologies HTML et CSS, il est préférable de connaitre dans les grandes lignes la conception d'une page web statique avec ces technologies.
  • Le développement d'un mail HTML est particulier en comparaison avec une page web classique. Du fait que les boîtes mail n'ont pas toutes les mêmes rendus et mêmes restrictions, les règles “classiques” ne sont pas toujours applicables pour conserver une compatibilité sur toutes les boîtes mail. Voici un lien utile : Un e-mail en HTML.

Cette API a été conçue pour éviter au mieux d'avoir du HTML à écrire dans les fonctions de rubrique !


Conception du package

Ce package permet l'envoi d'un mail à l'API APEX_MAIL. De ce fait, un seul “objet” est publique pour ce package : il s'agit de la procédure envoi_mail présentée ci-dessous.

Variable globales :

  • g_date_supervision : permet de simuler la supervision à un jour précis (remplacer “sysdate” par “TO_DATE('23/10/2015', 'DD/MM/YYYY')” par exemple).
  • g_str_array : contient l'ensemble des codes dépositaires pour requêter les bons imports dépositaire dans la rubrique du mail dédiée.
  • g_prefix_type_dep : préfix pour la colonne “type” de la table “notifications” dans le cas des imports dépositaires.

Procedure envoi_mail

PROTOTYPE :

procedure envoi_mail (
    p_destination    varchar2  default 'support@salamander-soft.com'
    ,p_mode          varchar2  default 'APEX'
);
  • p_destination : correspond à l'adresse de destination du mail de supervision. Il est possible dans mettre plusieurs séparées d'une virgule (exemple : adr1@adr1.com,adr2@adr2.com).

BUT :

envoyer un mail de supervision pour un environnement.

FONCTIONNEMENT :

Cette procédure appelle une autre procédure “APEX_MAIL.SEND” :

apex_mail.send(
    p_to          => p_destination
    ,p_from       => 'noreply@salamander-soft.com'
    ,p_body       =>  v_body
    ,p_body_html  =>  v_body_html
    ,p_SUBJ       => 'Supervision : '||v_app_name||'/'||'[S@M-'||v('G_CLIENT_NAME')||']'
    ,p_cc         => NULL
    ,p_bcc        => NULL
    ,p_replyto    => NULL
);
  • p_to : adresse(s) électronique(s) de destination.
  • p_from : l'émetteur.
  • p_body : envoi d'un contenu purement textuel dans le cas d'une boîte mail ne voulant pas interpréter du HTML.
  • p_body_html : envoi du contenu HTML de la variable v_body_html, voici son contenu :
v_body_html := get_header
    || -- Ici, faite la concaténation de toutes vos fonctions rubriques
    || get_footer;
  • p_SUBJ : sujet du mail.

Pour le p_body et le p_body_html, la chaîne de caractère qui lui est passée doit contenir au moins un caractère d'échappement tout les 1000 caractères. Pour cela, c'est une bonne pratique d'ajouter “ || utl_tcp.crlf ” à chaque concaténation de v_str_return ou de v_para !


Function get_header

PROTOTYPE :

function get_header();

BUT :

retourne la partie fixe du HTML se trouvant en haut du contenu HTML.


PROTOTYPE :

function get_footer();

BUT :

retourne la partie fixe du HTML se trouvant en bas du contenu HTML.


Function get_html_row

PROTOTYPE :

function get_html_row(
    p_partie number
    ,p_feu number default 0
    ,p_titre varchar2 default null
)return varchar2;

BUT :

retourne le code HTML pour le formatage d'une rubrique.

FONCTIONNEMENT :

Le code HTML renvoyé par cette fonction dépend des paramètres passés :

  • p_partie : envoyer 1 pour recevoir le début de la partie HTML d'une rubrique. Envoyer 2 pour recevoir la fin de la partie HTML d'une rubrique.
  • p_feu : permet de choisir la couleur du feu à gauche de la rubrique. 0 : rouge; 1 : orange ; 2 : vert.
  • p_titre : titre de la rubrique (exemple : “Historisation”).

CAS D'UTILISATION:

Généralement, cette fonction est appelée sous deux formes différentes :

  • pour obtenir le début d'une rubrique (dans cet exemple, le feu est vert et le nom de la rubrique est “Rubrique de test”) :
get_html_row(1,2,'Rubirque de test');
  • pour obtenir la fin d'une rubrique :
get_html_row(2);

Le résultat des deux commandes précédentes :


Function get_paragraphe

PROTOTYPE :

function get_paragraphe(
    p_titre varchar2
    ,p_para varchar2 default null
)return varchar2;

BUT :

retourne le code HTML pour le formatage d'un paragraphe interne d'une rubrique.

FONCTIONNEMENT :

retourne le contenu envoyé via les paramètres en paragraphe HTML :

  • p_titre : correspond au titre du paragraphe. Celui-ci apparaitra en premier en gras précédent d'un '→'.
  • p_para : le contenu du paragraphe.

CAS D'UTILISATION:

Deux possibilités :

  • Soit un souhaite un paragraphe avec seulement un titre (pratique quand on souhaite afficher une phrase) :
get_paragraphe('titre du paragraphe.');

Ce qui donne :

  • Soit un souhaite un paragraphe avec un titre et du contenu :
get_paragraphe('titre du paragraphe :', 'contenu du paragraphe.');

Ce qui donne :


Les fonctions rubriques du mail

Voici la liste des fonctions rubriques :

  • get_historisation : contrôle la notification d'historisation + % d'écart des lignes PTF entre ajourd'hui et hier.
  • get_import_frs : contrôle les notifications fournisseurs + si les lignes PTF ont une valeur calculée pour “perf3_YTD” et “perf3_TOTAL”.
  • get_import_depositaires : contrôle les notifications dépositaires + si des lignes n'ont pas été traitées pendant l'import de données dépositaires.
  • get_sauvegardes : contrôle les notifications de sauvegarde.
  • get_jobs : contrôle si des jobs sont en erreur.
  • get_objets_invalides : contrôle si des objets Oracle sont invalides.

Exemple de fonction rubrique

Voici un exemple de fonction simple pour créer une rubrique (c'est “rubrique test” n'a rien de logique dans ce qu'elle affiche, il ne s'agit que d'un exemple) :

-- ======================================================================
-- get_rubrique_test()
-- TYPE  Fonction PRIVEE
-- DESCRIPTION Retourne la partie html de la rubrique test
--
--	1/  On commence par recuperer les données nécessaire à la rubrique
--	2/ ajout de la partie fixe HAUTE du HTML
--	3/ ajout contenu
--	4/  ajout de la partie fixe BASSE du HTML
-- ======================================================================  
function get_rubrique_test return varchar2
IS
	v_chiffre			number;
	
	v_para       		varchar2(32767);
	v_str_return 		varchar2(32767);
	
BEGIN

	IF get_debug THEN
		outils_pkg.trace (g_spec, 'get_rubrique_test ' , 1);
		outils_pkg.trace (g_spec, '==================================', 1);
	END IF;
	
	--1/ On commence par recuperer les données nécessaire à la rubrique
	-------------------------------------------------------------------
	SELECT round(dbms_random.value(1,10))
	into v_chiffre
	FROM dual;

	
	IF get_debug THEN 
		outils_pkg.trace (g_spec, 'v_chiffre : '||v_chiffre, 3);
	END IF;
	
	--2/ ajout de la partie fixe HAUTE du HTML
	------------------------------------------
	IF v_chiffre >= 1 AND v_chiffre <= 5 THEN
		v_str_return := get_html_row(1, 0, 'Rubrique test :'); -- feu rouge car problème
		
	ELSE
		v_str_return := get_html_row(1, 2, 'Rubrique test :'); --feu vert car tout est OK	
	END IF;
	

	--3/ ajout contenu
	------------------
	
	IF v_chiffre >= 1 AND v_chiffre <= 5 THEN
	
		--Exemple avec une liste a afficher en cas de probleme :
		v_para := '';
		FOR i in 1..10 LOOP
			v_para := v_para || '-<span style="color: #00000;"> message d''erreur num.'||i||'"</span><br/>' ||utl_tcp.crlf;	
		END LOOP;
		v_str_return := v_str_return || get_paragraphe('Element TEST à inspecter :', v_para);
		
	ELSE
		v_str_return := v_str_return|| get_paragraphe('Element TEST à inspecter :', 'Tout est OK, valeur du chiffre : '||v_chiffre);
	END IF;
	
	
	--4/ ajout de la partie fixe BASSE du HTML
	------------------------------------------
	v_str_return := v_str_return || get_html_row(2);
	
	
	IF get_debug THEN 
		outils_pkg.trace (g_spec, 'FIN get_rubrique_test', 1);
		outils_pkg.trace (g_spec, '==================================', 1);
	END IF;
	
	return v_str_return;

EXCEPTION
	WHEN OTHERS THEN
		IF get_debug THEN
			outils_pkg.trace (g_spec, 'ERREUR_TECHNIQUE' , 0, true,p_msg=> true,p_msg_0=> 'get_rubrique_test',p_msg_1=>sqlerrm);
		END IF;
	return get_html_row(1, 0, 'Rubrique test :')||'<ul><li><strong>Erreur sqlerrm :</strong><br/><br/>'|| sqlerrm||'</li></ul>' || get_html_row(2);
END get_rubrique_test;
dev_doc/package/supervision_pkg.1468418784.txt.gz · Dernière modification: 2020/12/21 19:43 (modification externe)