5. Beispiele zum Client-Server Workflow im DetailKapitel hinzufügen
5..1 Auftragsreklamationen
Aufträge, die in MyBib eDoc reklamiert sind, sollen in BCS-2 bearbeitet werden. Dafür muss bei der Auftragsvalidierung auf Seiten von BCS-2 erkannt werden, dass es sich um einen reklamierten Auftrag handelt (Erweiterung der XML-RPC-Funktion order_validateorder s.u.). Im Falle einer erfolgreichen Validierung des Auftrags in MyBib eDoc wird nicht nur der Erfolg gemeldet, sondern es werden im Falle eines reklamierten Auftrags noch weitere Reklamationsdaten an BCS-2 übergeben. BCS-2 erkennt anhand dieser Daten die Reklamation, und startet seinerseits den Download der entsprechenden Scans vom MyBib eDoc-Server. Dafür muss zuerst auf Seiten von BCS-2 die modifizierte XML-RPC-Funktion order_getdata aufgerufen werden (s.u. für Modifikationen). Durch diesen Aufruf erhält BCS-2 die entsprechenden Download-Parameter analog zum Upload, und kann nun beginnen die entsprechenden Dateien herunterzuladen. Bis zur Auslieferung wird der Standard-Workflow in BCS-2 verwendet.
Modifizierte XML-RPC-Funktionen:
5.0.1.1 Funktion order_validateorder
Parameter1: session_id(string)
Parameter2: or_scan_id(string)
Return : success/error and complaint struct validates the given order in ME reclamated=true in ME
$complaint_struct[STATUS]; typ=boolean;
$complaint_struct[COMPLAINT_COUNT]; typ=int
$complaint_struct[COMPLAINT_REASON]; typ=string
$complaint_struct[NUM_PAGES]; typ=int
order_getdata
Parameter1: session_id(string) Parameter2: or_scan_id(string) Parameter3: mode(string)
Return : transfer_struct,format_struct,order_struct
provides the master data for specified order for given mode, possible modes are 'UPLOAD' and 'DOWNLOAD' and will be handled as category
Beispiel Antwort des Servers auf mode ‚UPLOAD‘:
<value><struct>
<member><name>status</name>
<value><boolean>1</boolean></value>
</member>
<member><name>protocol_struct</name>
<value><struct>
<member><name>PROTOCOL</name>
<value><string>FTP</string></value>
</member>
<member><name>SERVER</name>
<value><string>2_4_3</string></value>
</member>
<member><name>PATH</name>
<value><string>/Scans/SUBTST-2004051900018</string></value>
</member>
<member><name>PORT</name>
<value><string>21</string></value>
</member>
<member><name>USER</name>
<value><string>bcs2</string></value>
</member>
<member><name>PWD</name>
<value><string>8DB899E9D6BDE3C4CABEA5E7</string></value>
</member>
<member><name>OVERRIDE</name>
<value><string>Y</string></value>
</member>
<member><name>FTP_PASSIVE</name>
<value><string>Y</string></value>
</member>
</struct></value>
</member>
<member><name>format_struct</name>
<value><struct>
<member><name>ORIGINALS</name>
<value><boolean>1</boolean></value>
</member>
<member><name>ORIGINALS_NAME</name>
<value><string>SUBTST-2004051900018-%08d</string></value>
</member>
<member><name>PREVIEWS</name>
<value><boolean>0</boolean></value>
</member>
<member><name>PREVIEWS_NAME</name>
<value><string>pr_SUBTST-2004051900018-%08d</string></value>
</member>
<member><name>THUMBNAILS</name>
<value><boolean>0</boolean></value>
</member>
<member><name>THUMBNAILS_NAME</name>
<value><string>th_SUBTST-2004051900018-%08d</string></value>
</member>
</struct></value>
</member>
<member><name>order_struct</name>
<value><struct>
<member><name>NUM_PAGES</name>
<value><int>3</int></value>
</member>
</struct></value>
</member>
</struct></value>
Beispiel Antwort des Servers auf mode ‚DOWNLOAD‘:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value><struct>
<member><name>status</name>
<value><boolean>1</boolean></value>
</member>
<member><name>protocol_struct</name>
<value><struct>
<member><name>PROTOCOL</name>
<value><string>FTP</string></value>
</member>
<member><name>SERVER</name>
<value><string>2_4_3</string></value>
</member>
<member><name>PATH</name>
<value><string>/Scans/SUBTST-2004051900018</string></value>
</member>
<member><name>PORT</name>
<value><string>21</string></value>
</member>
<member><name>USER</name>
<value><string>bcs2</string></value>
</member>
<member><name>PWD</name>
<value><string>8DB899E9D6BDE3C4CABEA5E7</string></value>
</member>
<member><name>OVERRIDE</name>
<value><string>Y</string></value>
</member>
<member><name>FTP_PASSIVE</name>
<value><string>Y</string></value>
</member>
<member><name>FTP_TIMEOUT</name>
<value><string>5</string></value>
</member>
<member><name>FTP_VERIFY</name>
<value><string>Y</string></value>
</member>
</struct></value>
</member>
<member><name>format_struct</name>
<value><struct>
<member><name>DOWNLOAD_FILES</name>
<value><array>
<data>
<value><string>SUBTST-2004051900018-00000001.jpg</string></value>
<value><string>SUBTST-2004051900018-00000002.jpg</string></value>
<value><string>SUBTST-2004051900018-00000003.jpg</string></value>
</data>
</array></value>
</member>
</struct></value>
</member>
<member><name>order_struct</name>
<value><struct>
<member><name>NUM_PAGES</name>
<value><int>3</int></value>
</member>
</struct></value>
</member>
</struct></value>
</param>
</params>
</methodResponse>
5..2 Versionierung der Schnittstelle
Beim Login über XML-RPC wird explizit eine „xmlrpc_interface“-Versionsnummer übergeben.
Diese wird auf Seiten des Servers validiert, und als Sessionvariable für den aktuellen Login
gespeichert. Über diese Versionsnummer können dann verschiedene Funktionalitäten frei- bzw.
abgeschaltet werden.
Funktion service_login
Struct : login_struct
Parameter1: login_user, login_name, login_client_license_id
Parameter1: login_institution, login_inst, login_domain
Parameter2: login_pwd, login_pass, login_password
Parameter3: login_mac, login_system_id
Parameter4: login_interface
Parameter5: login_lang, login_language
Return : session_id and login_interface of server
$return=new xmlrpcval(array(
"status" =>new xmlrpcval(true,"boolean"),
"session_struct" =>new xmlrpcval (array(
"session_id" =>new xmlrpcval($app_session_id,
"string"),
"xmlrpc_interface"=>new
xmlrpcval($login_interface,"string"))
,"struct"))
,"struct");