Introduktion till integrering av Schenkers e-tjänster. Version 2.0



Relevanta dokument
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Den fjärde är data_list som är en vektor av information med själva meddelanden. Rubriken O står för obligatoriskt fält.

Gränssnittsdokumentation. Faktura/Saldobesked. version 5.0

Faktura/Saldobesked Gränssnittsdokumentation. Version 5.1

Föreläsning 3.1: Datastrukturer, en översikt

Textsträngar från/till skärm eller fil

Bokning Gränssnittsdokumentation. Version 2.30

API Notera HTTPS POST msg UTF-8. API_key JSON Mobilnummer format 1. Skicka ett SMS till specifikt nummer POST parametrar: from msg API_key Exempel:

Chapter 3: Using Classes and Objects

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Föreläsning 6: Introduktion av listor

TJÄNSTEBESKRIVNING FASAD Tjänstebaserad direktåtkomst Adress

Hjälpprotokoll till IP

Programmeringsteknik med C och Matlab

Användarmanual Pagero Connect 2.0

1 Generella variabler

The National Institute of Child Health and Human Development (NICHD) Protocol: Intervjuguide

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:

En snabb titt på XML LEKTION 6

Tentaupplägg denna gång

Datorsystem Laboration 2: Minnesmappade bussar

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Grunderna i stegkodsprogrammering

IT för personligt arbete F2

Användarmanual Körjournal för iphone

1 Generella variabler

SMD 134 Objektorienterad programmering

Tentamen OOP

Kravspecifikation. Hantering av systemdokument

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Real-time requirements for online games

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

52101 Utforska siffror

1 INLEDNING PRODUKTINFORMATION FUNKTIONER I SYSTEMET...3

Föreläsning 4: Poster

TJÄNSTEBESKRIVNING FASAD Tjänstebaserad direktåtkomst Byggnad

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Att använda pekare i. C-kod

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

5 Grundläggande in- och utmatning

Att komma igång med FirstClass (FC)!

Mobilapplikation htp:/aktjon.argentum.se/activitymobile

Björn Abelli Programmeringens grunder med exempel i C#

Instruktion för att slutföra registreringen

Introduk+on +ll programmering i JavaScript

Labbrapport: HTML och CSS

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago.

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Innehåll. 1 Dokumentbeskrivning 3. 2 Användarinformation 3. 3 Installations anvisning Starta upp enheten 5

GATEWAY TJÄNSTEBESKRIVNING. Webbservice. WSDL-fil. Skicka meddelanden. SMS och FastnätsSMS

Användarmanual HOIF.org

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Skapa test med fritextfrågor

Användarhandledning Rapportgenerator Version: 1.1

RVS5000PC. Allmänt. RVS5000PC produktblad

Grundläggande programmering med C# 7,5 högskolepoäng

Major Release 3.1. Vad innebär Major Release 3.1 för svenska användare?

E-Betalning Teknisk handbok Version 0702 Innehåll

TDDD80. Mobila och sociala applikationer Introduktion HTTP,SaaS. Anders Fröberg Institutionen för Datavetenskap (IDA)

Smartair System. TS1000 Version 4.23

STÄNG AV FÖNSTER. Regler FLAGGSPECTRUM I FLAGGSPECTRUM II FLAGGSPECTRUM III FLAGGSPECTRUM STJÄRNSPEL

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Tentamen TEN1 HI

Objektorienterad programmering D2

Retrieve a set of frequently asked questions about digital loans and their answers

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Tentaupplägg denna gång

Öppna dokumentet. Det heter ecdlfil.doc (Du får instruktioner om var)

Tjänstegränssnitt Api Platsannons

Rolladministration i PaletteArena 5.3

============================================================================

ANVISNINGAR. Sjundeå e-postsystem. Del 1: inställningar. Version 1.0

INNEHÅLLSFÖRTECKNING. Version 1

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd. Tips på timer-appar. Appar som hjälper dig hålla koll på tiden

INSTRUKTION Specifikation E modul.doc

Visionutveckling. Vision 80/20 för iphone. Manual Vision 80/20 för iphone. Version 2.5

Idéskrift. Avtalsuppföljning för transportköpare inom miljö och trafiksäkerhet

KUNDREGISTER Sid 2(7) Teknisk specifikation

Webservice tjänsten GetPerson Slagning mot befolkningsregister

Forskare & Handledare. 1. Inloggning

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

HANDLEDNING TILL TEKNISK BILAGA - TB 2007

Manual för version V2

Tjänstegränssnitt Api Platsannons

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

Övningar i JavaScript del 2

Åtkomst och användarhandledning

Senaste version kan hämtas från Internet i PDF 1 format

Frågor och svar om TNC-term

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Objektsamlingar i Java

Omtentamen i OOSU2, 21 augusti 2014

Fortnox. För att aktivera bokföring genom Fortnox för er förening finns dessa krav:

Bokning Gränssnittsdokumentation. Version 3.1

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Digital Display VDS / Bus2

Transkript:

Introduktion till integrering av Schenkers e- Version 2.0

Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen skrevs om för att passa dagens teknik. 2000-03-03 1.0 Detta är första gången denna dokumentation skrivs varför någon tidigare revisionshistorik ej finns. Innehållsförteckning REVISIONSHISTORIK... 2 1. INTRODUKTION... 3 2. KOMMUNIKATION... 3 2.1 HTTP Metoder... 3 3. TECKENSNITT / URL ENCODING... 3 4. TJÄNSTER... 4 4.1 Tjänsteuppbyggnad... 4 4.2 Containers... 4 4.3 Vektorer... 4 4.4 Fälttyper... 5 5. SERVICE CONTAINERS... 6 5.1 Interaktion... 6 5.2 Bascontainers... 6 6. FÖRDEFINIERADE FÄLT... 7 6.1 Bascontainers... 7

Datum: 2008-06-18 Sida 3 av 8 1. Introduktion Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, så kallade e-. Dessa erbjuder inte bara hämtning av information utan även ett gränssnitt som låter kunder/partners att integrera sina system med Schenkers på ett smidigt och säkert sätt. Gränssnittsdokumentation finns för varje tjänst som går att integrera och denna beskriver hur ett anrop ska byggas upp för att fungera. Som standard för dessa anges WDR, Web Development Rules, som är Schenkers standard för hur anropen ska vara uppbyggda. Det är om dessa regler som detta dokument ska handla. Alla e- går att anropa med hjälp av HQF, Http Query Format, som är Schenkers sätt att formatera anrop och svar i rådata. HQF går även ibland under benämningen textformat och ibland även under det missvisande namnet WDR (som ju var en standard). Detta beror på att HQF och WDR anlände samtidigt och länge gick det bara att komma åt Schenkers via HQF. Sedan XML blivit stort har även det funnits sin väg in till Schenkers e- och kan användas i kommunikationen till vissa e-. Somliga e- kan bara returnera i XML-format medan andra även klarar av XML-anrop. Även XML använder sig av WDR-standarden. I gränssnittsdokumentationen för varje e-tjänst står vad som gäller för just den tjänsten. Ni kommer att upptäcka att det i gränssnittsdokumentationen står om hur statistikvariabler ska skickas in till tjänsten. Denna statistik använder Schenker vid exempelvis uppdateringar av e-na. Det går då enkelt att se vilka som använder våra och vi kan kontakta dessa för att informera om tjänsten på något sätt ändrar utförande. 2. Kommunikation Schenker erbjuder sina kunder/partners att accessa e-na direkt från sina system och inte enbart via en webbläsare. Denna access sker med protokollet HTTP via Internet. Varje tjänst har en egen URL som hittas i respektive dokumentation. Anropet till en tjänst hanteras på samma sätt som om den hade anropats av en webbläsare. Med i anropet sänds en variabel som anger om svaret skall vara i HTML, XML eller textformat. 2.1 HTTP Metoder Protokollet HTTP erbjuder två huvudmetoder för att skicka information. Dessa är GET och POST. När du anropar en tjänst väljer du att använda en av dem. Vi rekommenderar att du om möjligt använder dig av POST. POST kan skicka större meddelanden än GET och skickar sina anrop och variabler gömt från användaren. Används GET kan användaren se vilka variabler som används vid anropet vilket till exempel gör att saker som lösenord blir åtkomliga utifrån. Vid alla våra behörighetsskyddade får alltså bara POST användas. Detta står även i gränssnittsdokumentationen. 3. Teckensnitt / URL encoding Teckensnittet är Latin-1 (ISO 8859-1) vilket motsvarar de två första kodsidorna i Unicode. Meddelandet skall kodas om till att bli en 7-bits kod enligt URLencoding (RFC 1738). Exempel: om du ska skicka fältet e_mail med värde info@schenker.schenker.se och fältet code med värde k%9s2! till en tjänst, kommer du att skicka strängen e%5fmail=info%40schenker%2eschenker%2ese&code= k%259s2%21. Mer information om teckensnitt och URLencoding finns i separat dokument.

Datum: 2008-06-18 Sida 4 av 8 4. Tjänster En central punkt i Schenkers webbutveckling är att alltid separera information, funktionalitet och presentation från varandra. En Schenker-tjänst har specificerad in- och utdata och gör bara det den förväntas att göra och inget annat. Det finns en mängd regler som beskriver hur en Schenker tjänst måste kommunicera. Dessa regler kommer att beskrivas i detta kapitel. 4.1 Tjänsteuppbyggnad Tjänsterna anropas på samma sätt från en applikation som om de hade anropas från en webbläsare. Svaret från tjänsten har exakt samma uppbyggnad som anropet. Fälten byggs upp på samma sätt som en webbläsare bygger sina med "GET". Det är namnet på ett fält, följt av ett "lika med" (=), följt av fältets värdet. Om det finns fler fält, används ett och (&) för att separera fältet åt. Exempel: om du kallar på en tjänst och skickar fälten foo och bar med värden foot och bart kommer du att skicka strängen foo=foot&bar=bart till tjänsten. 4.2 Containers När kommunikation sker med en Schenker tjänst kommer fälten att grupperas tillsammans. Dessa grupper kallas containers. För att namnge ett fält i en container sätter man container-namnet först, därefter en punkt och sist namnet på fältet. Exempel: om fältet page_size hör till containern request, kommer det fullständiga namnet för att beskriva fältet att bli request.page_size. Vissa fält kommer att höra till containers som i sin tur hör till containers. Example: om fältet message hör till containern error, som i sin tur hör till containern system, kommer fullständigt fältnamn att bli system.error.message. 4.3 Vektorer Strängformatet stödjer även vektorer. För att beskriva en nivå i en vektor används ett indexnummer med start på noll. Exempel: Du vill skicka en vektor med tre stycken sändningsleveransdatum. Namnet på vektorn skulle kunna vara shipment_list och namnet på datum-fältet skulle kunna heta delivery_date_time. Första posten i vektorn skulle då representeras som shipment_list.0.delivery_date_time. För att göra exemplet ovan komplett, vi säger att du vill skicka tre sändningsleveransdatum 2007-02- 08 05:06, 2007-03-20 22:38 och 2008-01-01 00:00 till en tjänst (utan GMT zon specifikation). Det slutgiltiga men inte URL encodade fältens namn och värden blir följande: shipment_list.0.delivery_date_time=200702080506 shipment_list.1.delivery_date_time=200703202238 shipment_list.2.delivery_date_time=200801010000 Den URL encodade och kompletta strängen skulle bli: shipment%5flist%2e0%2edelivery%5fdate%5ftime=200702080506&shipment%5flist%2e1%2edeli very%5fdate%5ftime=200703202238&shipment%5flist%2e2%2edelivery%5fdate%5ftime=200801 010000 Värdena förväntas inte följa någon speciell ordning, utan kan lika gärna se ut som följer. shipment_list.1.delivery_date_time=200703202238

Datum: 2008-06-18 Sida 5 av 8 shipment_list.0.delivery_date_time=200702080506 shipment_list.2.delivery_date_time=200801010000 4.4 Fälttyper Alla fält måste vara av en speciell typ och följer vissa regler. Fälttyp String Integer Float Date Beskrivning 1 GB stor sträng, teckensnitt Latin-1 +/- heltal 9 siffror Flyttal representeras med en decimal punkt, inte ett komma. Om det inte finns någon decimal del i värdet skall ingen punkt finnas med. Exempel: 5.3 och 4, inte 5,3 eller 4.0. Om fältet tex. skulle innehålla valutavärde kommer korrekt antal decimaler att returneras, 5.00, 30.20 och 200800.00. Datum och tidformaten som används kommer från ISO 8601 Basic. Formatet är också kompatibelt med EDI-fact standarden. Datum måste skrivas I detta format YYYYMMDD. Exempel på det enda godkända datumformatet 20070624 Time Tidformatet som används kommer från ISO 8601 Basic. Formatet är också kompatibelt med EDI-fact standarden. Tider måste skrivas i detta format HHMMSS, ex 235959 (24-timmars klocka, inte am och pm ). Eftersom olika kan existera i olika tidszoner kan GMT zonen specificeras genom att lägga till + eller - (ett undantag, se nedan) följt av en fyra siffror lång kod +0100 menas en timma, 0 minuter Öst om Greenwich meridianen. En tjänst som befinner sig på Greenwichmeridianen, som är GMT +/-0, kan skrivas antingen som: +0000, -0000 eller Z (ex 235959Z ). Om en tjänst tar emot en tid utan GMT zonspecifikation kommer tiden att tolkas som att den är i samma GMT zon som tjänsten själv befinner sig i. En tjänst som kräver GMT zon specifikation på ett specifikt fält kommer att returnera ett fel om en tid är mottagen utan GMT specifikation Exempel på alla tillåtna format 113302+0200 113302-0200 113302Z 113302 Date and time (time stamps) Datum och tidformaten som används kommer från ISO 8601 Basic. Formatet är också kompatibelt med EDI-fact standarden. Datum och tid specifikationen är enkel. Genom att lägga till tid formatet till datum formatet Exempel på alla tillåtna format

Datum: 2008-06-18 Sida 6 av 8 20070624113302+0200 20070624113302-0200 20070624113302Z 20070624113302 Boolean Används för att beskriva sant / falskt. Här är värdetnumeriskt. 0 = falskt, 1 = sant 5. Service containers Du har nu sett hur kommunikationsreglerna och notation för hur tjänstens information ser ut. Du kommer nu att bli introducerad för reglerna för en service container som används när kommunicerar med varandra. Allt du lärt dig hittills gäller fortfarande. Service containers är bara ett sätt att standardisera strukturen på informationen 5.1 Interaktion När en tjänst anropas och tar emot några fält och värden, förväntas tjänsten returnera all anropande information, plus de fält och värden tjänsten genererar. OBS!!! Container-konceptet erbjuder också möjligheten att sända med mer information än vad mottagaren förväntar sig. Detta är inget fel utan mottagaren skall enbart ignorera den extra informationen. Detta är en mycket viktig egenskap som gör att smärre ändringar/tillägg till gränssnittet kan ske utan att klienten eller servern i alla lägen måste ändras. 5.2 Bascontainers Det finns bara fyra bascontainers. Dessa är request, response, data_list (en vektor av containers) och system. Det som menas är att inget fält får tillhöra ex. enbart reference. Fältet måste alltid finnas under en av de fyra bascontainrarna. Exempelvis request.reference. Anledningen till att det finns bascontainers är för att enklare separera en typ av information från en annan. Nedan är regler för respektive container beskrivna. request containern När en tjänst anropas tar den emot de argument som inte är databas-relaterade i denna container, ex. typ av önskad aktivitet eller diverse urval. Containern är read only. Exempel på argument: select.country_code och page_size. response containern Denna container innehåller information om information i "data_list"-containern som skickas tillbaka från tjänsten. Response containern är write only. Om information skickas till tjänsten i denna container kommer den att ignoreras. data_list vektorn Observera att detta inte är någon container utan en vektor med containrar! Data_list vektorn innehåller informationsmassan. Exempelvis är det här du kommer att få tillbaka statusinformationen från track & trace-tjänsten. Data_list vektorn är read-and-write för att den även används för att skicka informationsmängder till en tjänst. Information som behöver returneras men inte har något med informationsmängden att göra skickas tillbaka i response containern,ex data_list_count. data_list vektorn kommer alltid att innehålla samma antal element som antal informationscontainrar, det vill säga, inga tomma element i data_list vektorn returneras från tjänsten. system containern

Datum: 2008-06-18 Sida 7 av 8 system containern kommer att innehålla information om systemet och dess status. Felhantering kommer t.ex. att hamna här. System containern är read-and-write då den både skickar information till tjänsten (statistikvariabler) samt returnerar från den (error). 6. Fördefinierade fält Utanför reglerna för de fyra bascontainrarna finns några fördefinierade fält, dessa tas upp här. 6.1 Bascontainers Bascontainers struktur Namn Typ In/Ut Beskrivning request Container In Fält till anropad tjänst response Container Ut Information från en tjänst data_list Vektor In/Ut Informationsmassan system Container In/Ut Systeminformation, bl.a. felhantering Standardfält i bascontainers Fältnamn Typ Beskrivning Valfri request.service.action String Kan vara en av select, insert, update and delete. Detta fält talar om för tjänsten vad den skall göra. Exempel: En boknings tjänst använder insert och en godssökningstjänst använder select. request.service.method String Används när det finns fler typer av metoder som en tjänst kan hantera. Exempel: Olika varianter av en sökning. request.service.type String Extra detaljinformation som förtydligar för tjänsten vad den skall göra om "method" inte är tillräckligt specifik. request.page_size Int Storleken på datasidan. Varje tjänst som tillåter request.service.action med värde select kan ta emot page_size. Default är 0 (oändlig). request.absolute_page Int Den valda datasidan. Varje tjänst som tillåter request.service.action med värde select kan ta emot absolute_page. Default är 1 (första sidan). request.select Alla Container som innehåller urvalsinformation, ex urval på datum, land etc. response.service.name string Namnet på tjänsten. Nej Nej response.service.name String Namnet på tjänsten. Nej response.service.version String Versionen på tjänsten i formatet 33.12 eller 2.1. Nej response.data_list_count Int Samma som antalet containers i data_list vektorn. Nej response.total_record_count Int Motsvarar antalet poster som hittats vid en pecifik sökning i en tjänst. Om alla poster returneras av tjänsten kommer detta antal att motsvara response.data_list_count. För mer information, läs om request.page_size och request.absolute_page.

Datum: 2008-06-18 Sida 8 av 8 system.error.id Int Felkod 0 är ok. Nej system.error.message String Felmeddelande på engelska. Endast för loggning.