Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Oldwig Kerner Geändert vor über 7 Jahren
1
Automatisierung und Integration von Request Tracker Systemen mittels REST-Schnittstelle Stefan Hornburg Perlworkshop 2008
2
split() ● Request Tracker ● REST-Schnittstelle ● Automatisierung ● Integration
3
Kunden ● Deutschland: ecoservice.de, Wegatrade ● Schweiz: cobolt.net ● Österreich: Embassy Vienna ● USA: WebHostNY, L&D Computer Consulting ●...
4
Organisation ● Projekte ● Aufgaben ● Arbeitszeit ● Übersicht ● Abrechnung ● History
5
Request Tracker ● Trouble Ticket System ● Erweiterbarkeit ● Schnittstellen ● Perl
6
Verteilte RT-Installation ● WebHostNY ● Embassy Vienna ● LinuXia: Hosting + Kunden ● L & D Computer ● ICDEVGROUP
7
Problemstellung ● fehlende Übersicht wegen verteilter Installation ● verschiedene Policys (Prioritäten)
8
Integration und Automatisierung ● Zusammenführung und Bewertung ● Automatisierung durch Schnittstellen
9
Request Tracker: Schnittstellen ● Web ● Email ● RT API ● REST
10
Representational State Transfer ● Ressourcen ● Adressierbarkeit ● Zustandslosigkeit ● Operationen – GET, POST, PUT, DELETE
11
Request Tracker: Ressourcen ● Tickets ● Queues ● Benutzer ● Benutzergruppen
12
Ressourcen und Aktionen ● list: Auflistung/Suche ● show: Anzeige von Eigenschaften ● create: Anlegen von Objekten ● edit: Bearbeitung von Objekten ● correspond ● comment
13
Realisierung ● Dokumentation Fehlanzeige => RTSL ● Kommandozeilentool /usr/bin/rt ● RTDEBUG=3 /usr/bin/rt ● LWP::UserAgent ● eigene Routinen zum Parsen
14
Kommandozeile I Neue Queue: $ rt create -t queue set name='Perl-Workshop' # Queue 4 created. Neues Ticket: $ rt create -t ticket set subject='Ausarbeitung des Vortrags' \ set queue='Perl-Workshop' # Ticket 11 created.
15
Kommandozeile II Ticket anzeigen: $ rt show ticket/11 -f id,subject,queue,requestors,owner id: ticket/11 Subject: Ausarbeitung des Vortrags Queue: Perl-Workshop Requestors: racke@linuxia.de Owner: Nobody
16
Kommandozeile III Ticket bearbeiten: $ rt correspond -m 'Ausarbeitung ist fast fertig, siehe Anhang.' \ -a article_racke.tex ticket/11 # Message recorded
17
Aufbau der URI my ($uri, $user, $password); # URL der RT-Instanz $uri = 'http://support.linuxia.de/rt'; $uri.= '/REST/1.0'; # Ressource $uri.= '/search/ticket'; # Authentifizierung $user = 'racke'; $password = 'nevairbe';
18
LWP::UserAgent use LWP::UserAgent; my ($ua, $req, $res, @data); $ua = new LWP::UserAgent(agent => 'Perlworkshop/10.0', env_proxy => 1); push @data, user => $username; push @data, pass => $password; $req = POST($uri, \@data, Content_Type => 'form- data'); $res = $ua->request($req)
19
Auswertung der Antwort ● HTTP-Header ● HTTP/1.1 200 OK ● HTTP-Body ● RT-Header ● RT/3.6.6 200 OK ● RT-Body
20
Beispiel RT-Antwort RT/3.6.6 200 Ok id: user/22 Name: racke EmailAddress: racke@linuxia.de RealName: Stefan Hornburg NickName: Racke
21
Verarbeitung RT-Antwort ● Kommentare ● Fortsetzungszeilen ● Listen von Objekten ● Attachments ● History
22
Integration mit Interchange ● Bugtracker für Interchange ● Businesstool
23
Interchange ● eCommerce- und Applikationsserver ● Perl ● Templatesprache ITL [total-cost] ● eingebettetes Perl [perl]..[/perl] ● Erweiterungen durch UserTags und Module
24
ITL: Usertags I UserTag rt Order function type id UserTag rt Routine <<EOR sub {.... return $content; } [rt show user racke] [perl] $Tag->rt('show', 'user', 'racke'); [/perl]
25
ITL: Usertags II UserTag rt AddAttr [rt function=list type=ticket queue=Perl- Workshop] UserTag rt HasEndTag [rt function=correspond id=12] Der Vortrag ist bald zu Ende. [/rt] [perl] $Tag->rt({function => 'correspond', id => 12, body => 'Der Vortrag ist bald zu Ende'}); [/perl]
26
Einbindung von Modulen require module Vend::RT UserTag rt MapRoutine Vend::RT::rt
27
Vend::RT package Vend::RT; use LWP; use HTTP::Request::Common; use Vend::Config; use Vend::Tags; Vend::Config::parse_tag('UserTag', 'rt Order function type id'); Vend::Config::parse_tag('UserTag', 'rt AddAttr'); Vend::Config::parse_tag('UserTag', 'rt MapRoutine Vend::RT::rt'); Vend::Config::parse_tag('UserTag', 'rt HasEndTag'); sub rt { my ($function, $type, $id, $opts, $body) = @_;
28
REST-Konformität Zitat von Jesse Vincent: In my defense, when the REST interface got designed, everyone else on the planet was just starting to use SOAP and Roy Fielding barely published his definitions of what REST was. It wasn't well understood by anybody.
29
Ausblick ● Suche für alle Ressourcen ● strengere Einhaltung der REST-Kriterien ● Caching ● Einbindung anderer Ticketsysteme
30
Abspann http://www.linuxia.de/talks/pws2008/ racke@linuxia.de Thanks !
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.