Um Jobs unabhängig ihres Typs (Artikel, Personen, Aufträge) vom Server abzurufen verwenden Sie die folgende URL
https://<Partner>-<Projekt>.dstore.de/xml/job
mit den Pflichtparametern:
Optional ist es seit Version 2.5.4 des xml_SmartGates möglich den Job Server-seitig per XSLT zu transformieren. Dazu wird folgender Parameter verwendet:
Es ist eine HTTP-Auth-Anmeldung mit einem dStore-User erforderlich.
Die Rückmeldung im Erfolgsfall ist
Ist es zu einem Fehler gekommen (Jobname falsch o.ä.) ist die Rückmeldung:
Gerade bei den _out-Schnittstellen möchte man in Intervallen die Schnittstelle auf neue, exportierte Jobs in Intervallen abfragen und die empfangenen Dateien dann verarbeiten. Wir verwenden hierzu oft bash-Skripte die so aufgebaut sind:
#!/bin/bash USAGE="Usage: $0 --hostname <partner-project.dstore.de> --interface <eg. orders_out> --username <username> --password <password> [--sleep <sleep between polls in seconds>] " # default values SLEEPTIME=120 # read parameters while :; do case "$1" in --hostname) shift; HOSTNAME="$1"; shift ;; --interface) shift; INTERFACE="$1"; shift ;; --username) shift; USERNAME="$1"; shift ;; --password) shift; PASSWORD="$1"; shift ;; --sleep) shift; SLEEPTIME="$1"; shift ;; -*) # Unexpected option echo $USAGE exit 2 ;; *) break ;; esac done # Required Parameters if [ -z "$HOSTNAME" -o -z "$INTERFACE" -o -z "$USERNAME" -o -z "$PASSWORD" ]; then echo $USAGE exit 2 fi function GetNextJobInQueue { local HOSTNAME=$1 local INTERFACE=$2 local USERNAME=$3 local PASSWORD=$4 JOBS_IN_QUEUE=$(curl 'https://'${HOSTNAME}'/xml/jobqueue' --data-urlencode "Interfacename=${INTERFACE}" --user ${USERNAME}:${PASSWORD} --silent --fail --show-error ) RETVAL=$? if [ $RETVAL -ne 0 ]; then echo "Could not get jobqueue via http request: https://${HOSTNAME}/xml/jobqueue?Interfacename=${INTERFACE}. Maybe username:password wrong? Please check." return 255; fi if [ "$JOBS_IN_QUEUE" == "" ]; then FOUND_JOBFILE=""; echo "No job in ${INTERFACE} queue" return; fi JOBS_IN_QUEUE=($JOBS_IN_QUEUE); FOUND_JOBFILE=${JOBS_IN_QUEUE[0]} } function GetJob { local HOSTNAME=$1 local INTERFACE=$2 local JOBNAME=$3 local USERNAME=$4 local PASSWORD=$5 HTTP_STATUS=$(curl --output ${JOBNAME} --write-out "%{http_code}" --data-urlencode "Interfacename=${INTERFACE}" --data-urlencode "Jobname=${JOBNAME}" 'https://'${HOSTNAME}'/xml/job' --user ${USERNAME}:${PASSWORD} --silent --fail --show-error) RETVAL=$? if [ $RETVAL -ne 0 -o $HTTP_STATUS -ne 200 ]; then echo "Could not get job via http request: https://${HOSTNAME}/xml/job?Interfacename=${INTERFACE}. Maybe username:password wrong? Please check." return 255; fi echo "Fetched ${JOBNAME} (HTTP-status-code ${HTTP_STATUS})" } function ProcessJob { local JOBNAME=$1 echo "Processing ${JOBNAME}" } # Loop endless while [ 1 == 1 ]; do GetNextJobInQueue $HOSTNAME $INTERFACE $USERNAME $PASSWORD if [ "$FOUND_JOBFILE" != "" ]; then GetJob $HOSTNAME $INTERFACE $FOUND_JOBFILE $USERNAME $PASSWORD ProcessJob $FOUND_JOBFILE fi # Sleep until next poll-cycle sleep $SLEEPTIME done