3. OrderService

3.1. Einleitung

Mit dem GeoShop OrderService kann eine Preisberechung und Bestellung von Daten von einem GeoShop Server durchgeführt werden. Der GeoShop OrderService hat den gleichen Funktionsumfang wie die Applikation GeoShop BatchClient (s.a. [2]). Der GeoShop BatchClient kann daher alternativ zum GeoShop OrderService verwendet werden.

3.2. OrderService Endpunkte und Methoden

3.2.1. Service Endpunke

Der GeoShop OrderService kann via folgende SOAP bzw. WSDL Service Endpunkte erreicht werden:

GEOSHOP_URL/soap/orderservice.igs

SOAP Schnittstelle.

GEOSHOP_URL/soap/orderservice.igs?wsdl

WSDL Beschreibung der SOAP Schnittstelle.

Wobei für GEOSHOP_URL die Basisadresse des GeoShop eingesetzt werden muss (z.B. http://localhost:3501).

3.2.2. calculatePrice Methode

3.2.2.1. Beschreibung

Die caculatePrice Methode liefert das Resultat der GeoShop Preisberechnung. Neben dem Preis (Betrag/Währung) wird auch ein formatierter Beleg bzw. eine formatierte Fehlermeldung zurück geliefert. Der Beleg bzw. die Fehlermeldung entspricht der Ausgabe der Preisberechnung im GeoShop Client Applet.

3.2.2.2. XML Input Objekt

Die calculatePrice Methode wird durch folgendes XML-Objekt aufgerufen (Darstellung mit soap:Body und soap:Envelope):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>

<calculatePrice xmlns="http://www.infogrips.ch/geoshop/order/">
   <user xmlns="">user</user>
   <password xmlns="">password</password>
   <product xmlns="">product</product>
   <parameters xmlns="">
      <parameter>
         <name>name</name>
         <value>value</value>
      </parameter>
      ...
   </parameters>
</calculatePrice>

</soap:Body>
</soap:Envelope>

Beschreibung der variablen Anteile:

user (String)

GeoShop Benutzer.

password (String)

Passwort des GeoShop Benutzers.

product (String)

Datenprodukt für welches der Preis berechnet werden soll (muss dem Benutzer zugewiesen sein).

parameters (List of <parameter>)

Liste von 0-N Parametern. Die Anzahl der notwendigen Parameter ist abhängig vom gewählten Datenprodukt. Die Parameter sind in [2] beschrieben. Beispiel:

<parameters>
   <parameter>
      <name>min</name>
      <value>600000/200000</value>
   </parameter>
   <parameter>
      <name>max</name>
      <value>620000/250000</value>
   </parameter>
</paramaters>
[Anmerkung]

Der Parameter server wird automatisch vom GeoShop gesetzt und muss daher nicht übermittelt werden. Für die obligatorischen Parameter user, password und product müssen die dafür reservierten Tags (s.a. oben) benutzt werden.

3.2.2.3. XML Output Objekt

Die calculatePrice Methode liefert als Resultat der Anfrage folgendes XML-Objekt (Darstellung mit soap:Body und soap:Envelope):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>

<calculatePriceResponse xmlns="http://www.infogrips.ch/geoshop/order/">
   <priceinfo xmlns="">
      <item>price</item>
      <item>currency</item>
      <item>1. line of price display</item>
      <item>2. line of price display</item>
      ...
      <item>n. line of price display</item>
   </priceinfo>
</calculatePriceResponse>

</soap:Body>
</soap:Envelope>

Beschreibung der variablen Anteile:

priceinfo (List of String)

Liste von Stringwerten, wobei die ersten beiden Werte der Liste eine spezielle Bedeutung haben.

price (Double)

Preis der Bestellung. Ein negativer Preis bedeutet, dass die Bestellung nicht ausgeführt werden kann.

currency (String)

Währung.

weitere Zeilen (String)

Formatierter Beleg bzw. Fehlermeldung (bei negativem Preis).

3.2.3. sendOrder Methode

3.2.3.1. Beschreibung

Die sendOrder Methode schickt eine Bestellung an den GeoShop. Die sendOrder Methode wird normalerweise asynchron ausgeführt, d.h. es wird nicht auf die Fertigstellung der Bearbeitung gewartet (die Benachrichtigung des Benutzers erfolgt per E-Mail). Es ist jedoch auch möglich die sendOrder Methode synchron auszuführen. Dazu muss der Bestellparameter wait wie folgt gesetzt werden:

<parameters>
   ...
   <parameter>
      <name>wait</name>
      <value></value>
   </parameter>
   ...
</paramaters>
3.2.3.2. XML Input Objekt

Die sendOrder Methode wird durch folgendes XML-Objekt aufgerufen (Darstellung mit soap:Body und soap:Envelope):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>

<sendOrder xmlns="http://www.infogrips.ch/geoshop/order/">
   <user xmlns="">user</user>
   <password xmlns="">password</password>
   <product xmlns="">product</product>
   <parameters xmlns="">
      <parameter>
         <name>name</name>
         <value>value</value>
      </parameter>
      ...
   </parameters>
</sendOrder>

</soap:Body>
</soap:Envelope>

Beschreibung der variablen Anteile, s.a. calculatePrice.

3.2.3.3. XML Output Objekt

Die sendOrder Methode liefert als Resultat der Anfrage folgendes XML-Objekt (Darstellung mit soap:Body und soap:Envelope):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>

<sendOrderResponse xmlns="http://www.infogrips.ch/geoshop/order/">
   <order xmlns="">
     <orderno>orderno</orderno>
     <orderurl>orderurl</orderurl>
     <price>price</price>
     <currency>currency</currency>
   </order>
</sendOrderResponse>

</soap:Body>
</soap:Envelope>

Beschreibung der variablen Anteile:

orderno (Integer)

Bestellnummer. Falls die Bestellnummer < 0 ist, konnte die Bestellung nicht verarbeitet werden.

orderurl (String)

URL an welcher die bestellten Daten verfügbar sind.

price (Double)

Preis.

currency (String)

Währung.