Table des matières

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

Introduction :

Les fonctions d'envoi du mail / de mise en forme :

Les rubriques du mail:


Prérequis pour maintenir ce package

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 :


Procedure envoi_mail

PROTOTYPE :

procedure envoi_mail (
    p_destination    varchar2  default 'support@salamander-soft.com'
    ,p_mode          varchar2  default 'APEX'
);

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
);
v_body_html := get_header
    || -- Ici, faite la concaténation de toutes vos fonctions rubriques
    || get_footer;

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 :

CAS D'UTILISATION:

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

get_html_row(1,2,'Rubrique de test');
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 :

CAS D'UTILISATION:

Deux possibilités :

get_paragraphe('titre du paragraphe.');

Ce qui donne :

get_paragraphe('titre du paragraphe :', 'contenu du paragraphe.');

Ce qui donne :


Les fonctions rubriques du mail

Voici la liste des fonctions rubriques :


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;