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é.
Introduction :
Les fonctions d'envoi du mail / de mise en forme :
Les rubriques du mail:
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 :
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;
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.
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 :
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 :
Voici la liste des fonctions rubriques :
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;