Request Tracker pour les Nuls
Transcript of Request Tracker pour les Nuls
![Page 1: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/1.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO
![Page 2: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/2.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 1/43
PlanRequestTracker
pourles
Nuls
1. Présentation
2. Installation
3. Gestion par mail
4. Authentification
5. Concepts
6. Configuration
7. Adaptations
8. Usages
9. Exemples API REST
10. Conclusion
![Page 3: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/3.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 2/43
1. Présentation
Présentation
Système de gestion de tickets générique
❑ distribution / partage de tâches
❑ gestion de la communication
☞ très très souple
![Page 4: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/4.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 3/43
HistoirePrésentation
1994 - 1996 : WebReq - CGI - Jesse Vincent,2000 : RT 1.0 - CGI - Jesse Vincent,2001 : RT 2.0 - mod_perl/Mason - Best Practical2003 : RT 3.0 / RTIR - Best Practical2011 : RT 4.0
700 références sur http://requesttracker.wikia.com/wiki/RTUsers
MIT, NASA, Nike, ...
RTIR: JANET, IRIS-CERT, CERT.PT, GOVCERT.NL,SWITCH-CERT, RENATER, ...
![Page 5: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/5.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 4/43
RT 3.6 - 2006Présentation
![Page 6: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/6.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 5/43
RT 3.8Présentation
![Page 7: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/7.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 6/43
RT 4Présentation
![Page 8: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/8.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 7/43
BilanPrésentation
❑ Expérience fonctionnelle :➢ workflows➢ délégations➢ authentifications➢ bugtracker (CPAN)➢ RTIR
❑ Inertie technologique➢ gestion continuité des services➢ IHM : de CGI à Ajax
![Page 9: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/9.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 8/43
2. InstallationInstallation
☞ Debian / Ubuntu
$ apt-get install request-tracker4 rt4-apache2
c’est r egl e
$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON rtdb.* TO 'rtuser '@ 'localhost ' IDENTIFIED BY 'pass←
';
mysql> FLUSH PRIVILEGES; QUIT
Set up RT database :
$ /usr/sbin/rt-setup-database-4 --action init --dba root --prompt-for-dba-←
password
Config :
$ vi /etc/request-tracker4/RT_SiteConfig.pm
![Page 10: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/10.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 9/43
Mécanique interne
Installation Stockage
mysql ou autres ⇐ peu de tables(26 : ACL, Tickets, Queues, Attachments, ...)
Services
perl / mason ⇐ surcharge
Configuration
stockage dans la base : ACL, Templates, ...
![Page 11: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/11.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 10/43
3. Gestion par mailGestion
parm
ail
![Page 12: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/12.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 11/43
procmailGestion
parm
ail
VERBOSE=1
LOGFILE=$HOME/.procmail.log
LOCKFILE=$HOME/.procmail.LCK
ARG1=$1
MAILDOMAIN=support.univ.fr
RT_MAILGATE="/usr/bin/rt-mailgate"
RT_URL="http://support.univ.fr/rt/"
:0
{
TO=`formail -c -xReceived: |grep $MAILDOMAIN |sed -e 's/.*for *<*\(.*\)>* ←
*;.*$/\1/ '`
QUEUE=`echo $TO | $HOME/get_queue.pl`
ACTION=`echo $TO| $HOME/get_action.pl`:0 h b w
|/usr/bin/perl $RT_MAILGATE --queue $QUEUE --action $ACTION --url $RT_URL
}
![Page 13: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/13.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 12/43
API RESTGestion
parm
ail
<Location /rt/REST/1.0>
Order allow,deny
Allow from 127.0.0.1
Allow from xxx.yyy.zzz.aaa
Satisfy any
</Location>
![Page 14: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/14.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 13/43
4. AuthentificationAuthentification
Authentification externe : RT::Authen::ExternalAuth
❑ OpenLDAP, Active Directory
❑ DBI➢ MySQL, Oracle, PostgreSQL➢ Fichiers➢ ...
Mail ⇒ création id RTCAS ⇒ login RT
![Page 15: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/15.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 14/43
RT_SiteConfig.pmAuthentification
Set($WebExternalAuth , 1); # CAS auth
Set($WebFallbackToInternalAuth , 1);
Set($WebExternalAuto , 1);
Set($ExternalSettings, { # LDAP mapping
My_LDAP ' => {
'type ' => 'ldap ',
'server ' => 'ldap.univ.fr ',
'base ' => 'ou=people,dc=univ,dc=fr ',
'filter ' => '(objectClass=*) ',
'attr_match_list ' => [ 'Name ',
'EmailAddress ',
'RealName ' ],
'attr_map ' => {
'Name ' => 'uid ',
'EmailAddress ' => 'mail ','RealName ' => 'cn ' }
}
});
![Page 16: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/16.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 15/43
Apache CASAuthentification
<Location />
SetHandler perl-script
PerlHandler RT::Mason
AuthType Apache2::AuthCASSimple
PerlAuthenHandler Apache2::AuthCASSimple
PerlSetVar CASServerName auth.univ.fr
PerlSetVar CASServerPath /
PerlSetVar CASSessionTimeout 360
PerlSetVar CASSessionDirectory /tmp
require valid-user
</Location>
![Page 17: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/17.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 16/43
5. ConceptsConcepts ❑ Utilisateurs
❑ Files
❑ Champs personnalisés
❑ Articles
❑ Scrips
![Page 18: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/18.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 17/43
UtilisateursConcepts
Utilisateurs "Privilégiés"⇒ accès tableau de bord et gestion des files
![Page 19: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/19.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 18/43
UtilisateursConcepts
Groupes systèmes :
❑ Tout le monde - Privilégié - Sans droit
Rôles:
❑ AdminCc ( Cc )
❑ Intervenant
❑ Demandeurs
Groupes
☞ pas de profil d’autorisation par défaut
![Page 20: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/20.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 19/43
FilesConcepts
❑ Nom ⇒[email protected] et [email protected]
❑ Pas de hiérarchie a
❑ Visibilité : fixée par droit du groupe "Sans droits"
❑ Gestion par des Observateurs
asauf usage de ”Champs personnalises”
![Page 21: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/21.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 20/43
Champs personnalisés
Concepts
pour des Tickets, Files, Articles, ..., Transactions du ticket
![Page 22: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/22.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 21/43
ArticlesConcepts ex-RTFM
❑ Créer CPs : Réponse , Procédure
❑ Droits de groupe
➢ Réponse• "Tout le monde" : Voir les champs personnalisés• Groupe "xxx" : Créer, modifier, ajouter, ....
➢ Procédure• Groupe "xxx" : Voir, créer, modifier, ajouter, ....
❑ Créer une classe d’article
➢ ajouter les champs personnalisés : Réponse , Procédure
![Page 23: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/23.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 22/43
Usage des réponses
Concepts
![Page 24: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/24.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 23/43
ScripsConcepts
Scrip d’une File
Action: "Défini par l’utilisateur", "Lors d’une création"
Programme de préparation d’action personnalisé:
return 1;
Programme de nettoyage d’action personnalisé:
my $newowner = "noel";
# Changement proprietaire
my ( $status, $msg ) = $self->TicketObj->SetOwner($newowner);
unless ($status) {
$RT::Logger->warning("Impossible d 'attribuer le ticket a $newowner: $msg");
return undef;
}
return 1;
![Page 25: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/25.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 24/43
6. ConfigurationConfiguration
"Droits de groupe" (système,spécifique)⇒ sur les Files, Articles, Champs personnalisés, Groupes
⇒ une File peut contenir des CPs avec des Droits de groupedifférents !
⇒ Les Scrips/Modèles/CP peuvent être globaux ou dépendred’une File/Classe
☞ pas de gestion de cohérenceDifficultés ⇒ instance de tests et validations
![Page 26: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/26.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 25/43
ConfigurationConfiguration
1. Configuration > Global > Droits de groupe
2. Configuration > Files > Choisir > xxxx(a) Observateurs(b) Droits de groupe : ( Tout le monde ⇒ VoirFile )(c) Champs personnalisés
![Page 27: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/27.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 26/43
Droits GlobauxConfiguration
interface terrifiante 3.8 ! 4.0 : découpage indicatif en Permissions générales, intervenants, administrateurs
![Page 28: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/28.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 27/43
Droits GlobauxConfiguration
Exemple
Tout le monde:
CreerTicket
RepondreTicket
VoirChampPersonnalise
Sans droits:
none
Privilegie:
ModifierDonneesPerso
VoirOngletConfiguration (si on veut laisser gerer les groupes)
![Page 29: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/29.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 28/43
Droits Globaux - Rôles
Configuration
Demandeur:
CommenterTicket
AfficherTicket
RepondreTicket
Observer
VoirChampPersonnalise
FixerChampPersonnalise
Intervenant:
CommenterTicket
SupprimerTicket
ModifierTicket
RepondreTicket
VoirChampPersonnalise
AfficherEmailSortant
AfficherTicket
AfficherCommentairesTickets
![Page 30: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/30.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 29/43
Droits Globaux - Rôles
Configuration
AdminCc (on attribuera par file ie: proprietaire de la file)
VoirFile
Afficher/Modifier/Supprimer/Prendre/Voler/RepondreTicket
AfficherCommentairesTickets
VoirClasse
Voir/Modifier/Supprimer/CreerArticle
Voir/Gerer/Modifier/Supprimer/Fixer/CreerChampPersonnalise
GererValeursDeChampsPersonnalises
Creer/Afficher/ChargerRechercheSauvee
AfficherEmailSortant
VoirGroupe
DeleguerDroits
ModifierObservateurs
ObserverCommeAdminCC
Afficher/ModifierModele
À titre indicatif !... Tableaux de bords, Approbations, ...
![Page 31: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/31.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 30/43
7. AdaptationsAdaptations
Pérennité !
![Page 32: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/32.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 31/43
WebAdaptations
# /usr/local/share/request-tracker4/html/Callbacks/Default/Elements/Tabs/←
Privileged
<%INIT>
Menu->child( 'home ')->child( selfservice => title => 'Utilisateur classique ',
path => '/SelfService/ ' );
</%INIT>
<%args>
$toptabs => undef
$user_attrs => undef
</%args>
Ajout du lien SelfService pour les Privilégiés
Ajout des recherches sauvées, colorisation de login, ...
! ☞ cache mason /var/cache/request-tracker4/mason_data/
![Page 33: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/33.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 32/43
PluginsAdaptations
depuis CPAN ou $ dh-make-perl -build -cpan ...
RT::Authen::ExternalAuth
/usr/local/share/request-tracker4/plugins/RT-Authen-ExternalAuth/
|_etc
|_html
| |_Callbacks/ExternalAuth/
| |_autohandler/Auth
| [_Elements/Header/Head
|_lib
|_RT/Authen/ExternalAuth/...
dans RT_SiteConfig :
Set( @Plugins, qw(RT::Authen::ExternalAuth RT::Extension::LDAPImport) );
![Page 34: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/34.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 33/43
ExtractCustomFieldValuesAdaptations
Sur File : scrip + modèle⇒ cf-name | Headername or "Body" | RE | Postcmd | Options
![Page 35: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/35.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 34/43
8. UsagesUsages Danger ⇒ ! Liste de diffusion ✖☞ Formation des utilisateurs :
❑ ✔ Prendre un ticket, s’abonner ✩
❑ ✔ Créer un ticket ⇒ plugin redirect thunderbird
❑ ✔ Résoudre un ticket ⇐ Essentiel
❑ ✔ Chg de File ⇐ Essentiel
❑ Champs personnalisés ⇐ Essentiel
❑ Fusionner (Dépend de, Se rapporte à, ...) ⇐ Relations
❑ Investigations ⇒ chgt de Demandeur ⇐ Personnes
![Page 36: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/36.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 35/43
UsagesUsages
❑ Nombre de files / files publiques / privées
❑ Dispatchers
❑ Extensions➢ RTIR➢ bugtracker
![Page 37: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/37.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 36/43
9. Exemples API RESTExem
plesA
PIR
ES
T
![Page 38: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/38.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 37/43
Gestion svnExem
plesA
PIR
ES
T
hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
...
/usr/share/subversion/hook-scripts/svn-rt-comment.pl "$REPOS" "$REV"
Usage:
$ git commit -a m 'probleme regle (closes: #17927) '
$ git svn dcommit
Install:
apt-get install librt-client-rest-perl
![Page 39: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/39.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 38/43
svn-rt-comment.plExem
plesA
PIR
ES
T
# http://blog.rot13.org/2008/09/request_tracker_subversion_svnweb_microblogging.←
html
use RT::Client::REST; use RT::Client::REST::Ticket;
my $rt_re = qr/\bRT-Ticket: #(\d+)\b/i;
my $rt_action = qr/\((closes|rt)\s?:\s?#(\d+)\)/i;
my $svnweb_fmt = 'https://svn.univ.fr/svnweb/index.cgi/%s/revision/?rev=%d ';
my ( $repo, $rev ) = @ARGV;
sub svnlook { my $command = shift;
my $txt = `svnlook $command --revision $rev $repo`;
chomp( $txt ); return $txt; };
my $log = svnlook 'log '; # my $diff = svnlook 'diff ';
if ( $log =~ $rt_action ) {
my $rt = RT::Client::REST->new( server => 'http://sup.u.fr/rt ' );
$rt->login( username => 'rtsvn ', password => 'xxx ' );
my $message = "Commit:\n".sprintf($svnweb_fmt,$repo_only, $rev) . "\n" .
"Author: ".svnlook( 'author ') . "\t" . svnlook( 'date ') . "\n\n" .
svnlook( 'changed --copy-info ') . "\n\n" . "--\nMessage:\n".$log ;
$ticket->comment( message => $message );
$ticket->status( 'resolved ') if ( lc($status) eq 'closes '); # TODO new ticket
};
![Page 40: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/40.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 39/43
Bot jabberExem
plesA
PIR
ES
T
![Page 41: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/41.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 40/43
JabberBot::Plugin::RTExem
plesA
PIR
ES
T
https://svn.univ-metz.fr/svnweb/index.cgi/pub_jabberbot/view/trunk
sub take {
my $rt = shift;
my $ticket_id = shift;
my ($text,$erreur);
my $ticket;
RT::Client::REST::Ticket->be_transparent($rt);
$ticket = RT::Client::REST::Ticket->new(
rt => $rt,
id => $ticket_id,
);
eval { $ticket->take(); };
if ($@) { $erreur = $@ ; } else { $text = 'take '.$ticket->id ; };
return ($text,$erreur);
};
![Page 42: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/42.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 41/43
10. ConclusionConclusion
Pas si compliqué
Souple
Puissant
Robuste
![Page 43: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/43.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 42/43
Questions ?
![Page 44: Request Tracker pour les Nuls](https://reader034.fdocuments.in/reader034/viewer/2022051505/586dffab1a28ab29208b6a45/html5/thumbnails/44.jpg)
Request Tracker pour les NulsYves Agostini - YVESAGO – Journees Perl 2013
Page 43/43
txt2tags ⇒ Latex (Prosper)