5. SIP2 server: een communicatiemechanisme met leenautomaten

Auteur

Alain Descamps

Aanmaak

03 maa 2005 14:31

Aangepast door

Alain Descamps

Aangepast op

08 sep 2015 14:08

Oud BVV nr

2103

5.1. Abstract

SIP2 is een protocol dat toelaat om leenautomaten te koppelen aan een bibliotheeksysteem. Dit document beschrijft hoe de SIP2 server van Brocade werkt en geeft aan hoe in Brocade de meta-informatie moet worden ingegeven om de SIP2-communicatie correct te laten verlopen.

5.2. SIP2

Het SIP2 protocol werd ontwikkeld door 3M en beschrijft op welke gestandaardiseerde wijze leenautomaten (inname / uitleen / verlengen / opvragen lezergegevens / betalen) kunnen interfacen met bibliotheeksystemen. Alhoewel dit protocol ontworpen werd door 3M, is het inmiddels uitgegroeid tot een industriestandaard. Andere leveranciers zoals Nedap en Bibliotheca gebruiken inmiddels ditzelfde protocol voor de aansturing van hun apparatuur. Voor een gedetailleerde beschrijving van dit protocol, zie 3M Standard Interchange Protocol.

Ondertussen bestaat er ook NCIP - of Circulation Interchange Protocol van NISO. Deze officiële standaard zal op termijn - wanneer ook leveranciers van automaten NCIP zullen gaan ondersteunen - de SIP2 standaard vervangen.

Brocade release 2.05 komt met een SIP2 server geschreven in Python. Deze server fungeert als interface tussen de bibliotheektoepassing en de onderliggende M-databank enerzijds en diverse leenautomaten anderzijds (inname, uitleen, verlengen, betalen, ...). Concrete aanleiding voor de ontwikkeling van deze server was de opening van Permeke, de nieuwe hoofdvestiging van de Openbare Bibliotheek Antwerpen. Deze nieuwe bibliotheek zal gebruik maken van RFID en leenrobots van Bibliotheca. De SIP2-server van Brocade werd echter zo geschreven dat deze kan worden toegepast in combinatie met automaten van andere leveranciers (3M Nedap, ...).

5.3. Brocade SIP2 server

Een SIP2 communicatie wordt geïnitieerd door de client (bv. aan de automaat worden materialen voor inlevering aangeboden). De SIP2 server ontvangt deze request en bevraagt daarop de bibliotheektoepassing. Het antwoord wordt door middel van een response message door de SIP2 server teruggestuurd naar de client. De SIP2 server van Brocade ondersteunt de volgende SIP2 responses:

  • LOGIN RESPONSE, Message 94

  • ACS STATUS, Message 98

  • REQUEST SC RESEND, Message 96

  • PATRON STATUS RESPONSE, Message 24

  • PATRON INFORMATION RESPONSE, Message 64

  • PATRON ENABLE RESPONSE, Message 26

  • ITEM INFORMATION RESPONSE, Message 18

  • CHECKOUT RESPONSE, Message 12

  • CHECKIN RESPONSE, Message 10

  • FEE PAID RESPONSE, Message 38

  • END SESSION RESPONSE, Message 36

  • RENEW RESPONSE, Message 30

  • RENEW ALL RESPONSE, Message 66

Worden niet ondersteund:

  • ITEM STATUS UPDATE RESPONSE, message 20

    De Brocade SIP2 server zal steeds terugkeren met message ok=0

  • HOLD RESPONSE, message 16

    De Brocade SIP2 server zal steeds terugkeren met message ok=0

5.3.1. Meta-informatie leenrobots

In Leen - Beheersfuncties - Leenrobots (SIP2) [link] kunnen de parameters voor de leenrobots op interactieve wijze worden ingesteld. Alhoewel verschillende robots kunnen werken met hetzelfde robot-id is het toch verkieselijk om voor elk fysiek toestel een afzonderlijke identificatie te voorzien. Op die manier kunnen problemen gemakkelijker tot een bepaald toestel worden herleid. Ook wordt het gemakkelijker om de belasting van een toestel te achterhalen.

Het scherm met de meta-informatie van een leenrobot bevat de volgende elementen:

Administratieve gegevens

Identificatie

Geef een passende identifier voor de robot. Bijvoorbeeld:

  • GNV01

  • GNV02

  • GNV03

  • ...

Deze identifier moet ook worden ingegeven in de configuratie van de leenautomaat.

SIP2 login paswoord

Geef het wachtwoord waarmee de robot in de Brocade SIP2 server inlogt. Dit wachtwoord moet ook worden ingegeven in de configuratie van de leenautomaat.

Benaming

Geef een passende benaming. Bijvoorbeeld:

  • Permeke Uitleenstation 1

  • Permeke Uitleenstation 2

  • Permeke Uitleenstation 3

  • ...

Scope

Geef - optioneel - een verklarende annotatie (bijv. plaats waar de automaat staat opgesteld).

Benaming in N E F D U

Geef de benaming van de robot in de diverse talen.

5.3.2. Omgevingsparameters

Geassocieerd leensysteem

Geef de identifier van het leensysteem waarin de leentransacties die door de leenrobots geïnitieerd werden, dienen weggeschreven te worden.

Brocade userid geassocieerd met de robot

De leentransacties die door de robot worden afgehandeld worden in de transactiefile van de leen weggeschreven onder het userid dat hier wordt ingevuld. xxx Dit mag een bestaand userid zijn of een dummy userid.

Geassocieerd werkstation

Geef het werkstation dat met de robot geassocieerd is. Leentransacties die door de robot worden verwerkt worden in de transactiefile weggeschreven onder het werkstation dat hier wordt ingegeven. Kastransacties die door de robot worden verwerkt worden weggeschreven in de kassa die geassocieerd is met het werkstation dat hier wordt ingegeven.

Er zijn verschillende mogelijkheden: - Kies een werkstation dat gedeeld wordt met een bemande balie. In dat geval worden de manuele en automatische leentransacties onder hetzelfde werkstation-id verzameld (denk aan tellingen, kastransacties, layout tickets, ...). Dit is allicht niet verkieselijk omdat op die manier bv. betalingen aan de automaat in dezelfde kassa terechtkomen als betalingen aan de bemande balie. Kies een werkstation dat gedeeld wordt met andere leenrobots. In dat geval worden alle automatische leentransacties onder hetzelfde werkstation-id verzameld (denk aan tellingen, kastransacties, layout tickets, ...) - Kies per leenrobot ook een ander werkstation-ID. Deze benadering geeft de meeste flexibiliteit aangezien zowel tellingen als kasontvangsten aan betaalautomaten gescheiden gehouden kunnen worden.

Zorg ervoor dat de meta-informatie van de werkstations ook correct is ingevuld !

Externe klasse voor deze robot

Geef de externe klasse die als default geldt voor de leentransacties van de leenrobot. Indien niet gedefinieerd, dan wordt de default externe klasse genomen zoals opgegeven in het leensysteem. - Bijvoorbeeld: OBA-N

Afwijkende externe klasse bij nooduitleen situaties

Geef de externe klasse voor die leentransacties, waar het veld no block='Y'. Dit gebeurt bij zogenaamde noodleentransacties : de leenautomaat kan tijdelijk geen connectie maken met Brocade, stockeert de leentransacties, en stuurt ze later op, nadat de verbinding is hersteld. Uiteraard is dit afhankelijk van de configuratie en mogelijkheden van de leenautomaat. Bijvoorbeeld: OBA-S

Default 'resensitize'

Vink deze optie aan indien je het bij innemen van een object aan de robot te kennen wil geven dat het ingenomen object opnieuw moet worden gemagnetiseerd. Enkel van toepassing indien je bibliotheek werkt met beveiliging door magneetstrip en indien de leenrobot is uitgerust met een magneetplaat.

Beep geluid bij waarschuwingen

Vink deze optie aan indien je wenst dat de SIP2 server bij het innemen van een object in voorkomend geval (bv. document gereserveerd door andere lezer, object behoort tot andere locatie, ...) een alert meegeeft.

Default 'magnetic media'

Bij een checkin/checkout kan de SIP2 server meegeven of het desbetreffend object magnetisch van aard is of niet. Dit kan belangrijk zijn voor de verdere afhandeling van de diefstalbeveiliging (magneetstrip). Aanvinken betekent dat de waarde op magnetisch zal worden gezet indien de Brocade-toepassing dat verder niet kan achterhalen.

Default mediatype

In SIP2 worden een aantal mediatypes gedefinieerd:

000 other
001 book
002 magazine
003 bound journal
004 audio tape
005 video tape
006 CD/CDROM
007 diskette
008 book with diskette
009 book with CD
010 book with audio tape

Geef hier de default code die Brocade moet nemen indien de Brocade-toepassing het media type zelf verder niet kon achterhalen..

Institution ID

In de meeste SIP2 messages wordt steeds een Institution ID meegegeven. De Brocade SIP2 server stuurt steeds het ID terug dat door de robot in eerste instantie werd opgegeven. Ontbreekt die informatie dan stuurt de Brocade SIP2 server het ID mee dat hier werd ingegeven. Bijvoorbeeld: OBA.

Library name

In een aantal SIP2 messages wordt de Library name meegegeven. De Brocade SIP2 server stuurt steeds de Library name terug die door de robot in eerste instantie werd opgegeven. Ontbreekt die informatie dan stuurt de Brocade SIP2 server de Library name mee dat hier werd ingegeven. Bijvoorbeeld: Openbare Bibliotheek Antwerpen.

Behandeling van checksum en sequence number

Staat standaard op lowercase. Sommige Sip2 clients houden niet van checksums in lowercase : kies dan Stuur checksum in hoofdletters. Sommige Sip2 clients houden helemaal niet van de error handling, optioneel voorzien in het Sip2 protocol : kies Geen om dit uit te schakelen.

Druk etiket af bij End Patron Response

Vink deze optie aan indien het overzicht van de geleende werken moet worden meegestuurd bij een End Patron Response (afsluiten van een sessie).

Printvelden omzetten in karakterset

Kies hier indien je de karakters in de printvelden in Sip2 boodschappen (AG) wil omzetten naar een andere karakterset, aangepast aan de printer van de leenautomaat. Kies 'Iso Latin' indien geen bijzonder ingreep vereist. 'Ascii-representatie' verarmt de karakters tot strikte ascii (Voorbeeld : 'Geneviève' wordt doorgestuurd als 'Genevieve'). 'CP850 is een karakterset gebruikt in minder recente printers. 'UTF-8' is dan eerder bedoeld voor recentere printers, die deze uitgebreide karakterset aankunnen.

Maximum lengte van het AJ veld (title)

Standaard worden de korte titels, behorend bij een object, afgekort tot 25 karakters. Wijzig dit indien gewenst. Dit heeft tegelijk zijn repercussies op alle boodschappen, die het veld AJ = item title bevatten, zoals checkin reponse, checkout response, item info response, renew response

Afwijkende bepaling AJ veld

Geef een executable, die eventueel RDobjtit bepaalt als alternatief voor veld AJ (= item title). Laat dit veld leeg, als het veld AJ de (verkorte) titel van het object mag bevatten. Hierbij mag je steunen op RAenv, de meta-informatie van de leenrobot , op RDobje, het object id, en op RAob, de data, behorend bij het object.

Voorbeeld :

s MDvo=RAob("vo") s:MDvo="-" MDvo="" s RDobjtit=$$%ShortTi^gboj(RDobje,30-$l(MDvo)-1)_" "_MDvo (Dit plaatst het volume bij de titel, indien niet gelijk aan '-')

Afwijkende bepaling BV veld

Geef een executable, die eventueel RDfee en RDfeetyp bepaalt als inhoud van veld BV (= fee amount) en als fee type. Hierbij mag je steunen op dezelfde parameters als bij de afwijkende bepaling van het AJ veld

Voorbeeld : ...

5.3.3. Parameters met betrekking tot eindgebruikers

Een SIP2 client kan een Block patron message sturen, een verzoek tot blokkering van het lenersrecord. Daarbij kan de kaart door de automaat worden "ingeslikt" en kan een blokkeringsbericht worden meegestuurd. De velden hieronder geven aan welke blokkeringstypes en welke blokkeringsberichten dienen meegestuurd.

Type blokkering bij niet-ingeslikte lenerskaart

Geef aan met welk blokkeringstype de lezer dient geblokkeerd indien de robot een blokkeringsverzoek verstuurt en daarbij aangeeft dat de kaart niet werd "ingeslikt".

Tekst, vermeld als reden bij eindgebruiker

Geef een bijhorende reden van blokkering bij niet ingeslikte lenerskaart.

Type blokkering bij ingeslikte lenerskaart

Geef aan met welk blokkeringstype de lezer dient geblokkeerd indien de robot een blokkeringsverzoek verstuurt en daarbij aangeeft dat de kaart werd "ingeslikt".

Tekst, vermeld als reden bij eindgebruiker

Geef een bijhorende reden van blokkering bij ingeslikte lenerskaart.

Type blokkering, dat door robot mag worden weggehaald

Net zoals een verzoek om een lezer te blokkeren kan de robot ook een verzoek tot deblokkeren versturen, zgn. Patron enable message. Geef hier aan welke blokkeringstype de robot mag wegnemen in het lenersrecord. Deze optie wordt de facto niet gebruikt. Zie SIP2 documentatie: "It should only be used for system testing and validation.".

Afwijkende samenstelling naam

Laat dit open, indien je de standaard representatie van een naam (naam, voornaam of naam) in Sip2 messages wil doorsturen. Geef anders een M executable, die aan de hand van familienaam RAeuser("fn") en voornaam RAeuser("vn") een string RDname samenstelt. Voorbeeld :

s RDname=RAeuser("vn")_" "_RAeuser("fn")

Naam omzetten in karakterset

Kies hier indien U de karakters in de naam van een eindgebruiker in Sip2 boodschappen (AE) wil omzetten naar een andere karakterset, aangepast aan de mogelijkheden van de leenautomaat. Kies 'Iso Latin' indien geen bijzonder ingreep vereist. 'Ascii-representatie' verarmt de karakters tot strikte ascii (Voorbeeld : 'Geneviève' wordt doorgestuurd als 'Genevieve'). 'CP850 is een karakterset gebruikt in minder recente omgevingen. 'UTF-8' is dan weer een uitgebreidere karakterset voor recentere schermen.

Afwijkende samenstelling adres

Laat dit open, indien U de standaard Brocade representatie van een adres in Sip2 boodschappen wenst. Geef anders een M executable, die aan de hand van de gegevens van een adresarray RAadres een string RDadres samenstelt. Zulke adresarray kan volgende nodes bevatten : ("street"), ("nr"), ("bus"), ("zip"), ("city"), ("country") Voorbeeld :

s RDadres=$g(RAadres("zip")_"-"_$g(RAadres("city")

Bibliotheekdienst gekoppeld aan charge privileges

In sommige Sip2 boodschappen kan men aanduiden of een lener 'charge privileges' heeft, dwz, of zij of hij mag gebruik maken van uitleenfaciliteiten. Voor gangbare uitleenstations vul je hier UTL = uitlenen in.

Afwijkende check van veld AD (password enduser)

Geef een M algoritme, dat RDcq=Y of N zet, indien aan de hand van het doorgegeven veld RDad = AD=patron password de authenticatie geldig is of niet. Bij ontstentenis wordt het veld AD afgecheckt als clear paswoord volgens de regels, bepaald in het eindgebruikerssysteem.

Opmerking: deze test gebeurt enkel, indien de sip2 client een paswoord aanbiedt ; het heeft verder geen effect op de verwerking van enige Sip2 boodschap. Het is aan de Sip2 client, om de doorgegeven informatie te interpreteren en verdere acties te ondernemen.

Druk etiket openstaande schulden af bij Patron Status Response

Vink deze optie aan indien het overzicht van de openstaande schulden moet worden meegestuurd bij een Patron Status Response (afsluiten van een sessie).

Druk etiket openstaande schulden af bij Patron Status Response

Vink deze optie aan indien het overzicht van de openstaande schulden moet worden meegestuurd bij een Patron Status Response (afsluiten van een sessie).

5.3.4. Parameters bij innemen

Met optie innemen

Vink deze optie aan indien de robot in kwestie gebruikt kan worden voor inname (checkin). Indien deze optie niet is aangevinkt, dan wordt het innemen van objecten op de gegeven robot geweigerd.

Als de robot wordt gebruikt voor uitlenen, maar occasioneel ook voor innemen, is het verkieselijk om de toch de optie innemen aan te vinken. Op die manier moet de meta-informatie van de robot niet steeds worden gewijzigd als beide functies actief worden gezet.

Bericht bij (succesvolle) inname met openstaande schulden

Bericht bij (succesvolle) te late inname

Bericht bij succesrijk innemen

Indien ingevuld, wordt deze message meegestuurd in het Screen message of AF-veld van de SIP2 Checkin Reponse boodschap. Dit kan een vrije tekst zijn, maar het is verkieselijk om hier een code op te nemen die door de robot naar een leesbaar bericht voor de lezer in de interface wordt omgezet. Verder af te spreken met de leverancier van de apparatuur.

Bericht indien object niet in deze lokalisatie mag worden ingenomen

Bericht indien object gereserveerd voor andere lener

Ook dit bericht kan verschijnen bij een succesvolle inname. Hierbij mag je zelfs gebruik maken van volgende placeholders:

  • <enr> = eloi van de lener, die het werk heeft gereserveerd.

  • <name> = Naam van diezelfde lener

  • <rsv> = het reserveringsnummer in loi formaat

Default bericht bij weigering innemen

Dit bericht wordt doorgestuurd (AF) bij alle andere weigeringen van innemen.

Sorteringsalgoritme

Geef hier de M-executable die de sorteerbin bepaalt voor een ingenomen object. Voorbeeld:

s RDsort=$$%RPK^bsipsor(RDoloi,RDlnsys,"R","N")

Dit betekent: - Ga na of dit object gereserveerd is voor een lener. Indien zo, ken bin "R" toe en stop. - Zoek de sortbin zoals die is ingegeven in het genre plaatskenmerk dat bij het ingnomen objecthoort. Indien gevonden, ken ze toe en stop. - Neem als sortbin "N", zijnde een soort 'restbin'.

Stuur sortbin door als screen message

Geef hierbij aan of bij inname van een object de code van de sortbin moet worden meegestuurd als screen message. Dit kan bijvoorbeeld nuttig zijn om bij testen van een sorteerautomaat na te gaan of bij inname de correcte sorteerbin wordt berekend

M executable, die veld AP bepaalt indien ontbrekend

Geef een executable, die eventueel RDAP bepaalt als alternatief voor een ontbrekend veld AP. Laat dit veld leeg, als het veld AP conform aanwezig is bij een checkin message. Je mag uitgaan van array RAenv, die de meta-informatie van de leenrobot bevat. Voorbeeld : s RDAP="". Indien je SIP2 client zich strikt aan het SIP2 protocol houdt, laat dit dan gewoon leeg.

Minimum tijdspanne tussen twee innames van eenzelfde object (s)

Indien een object is uitgeleend aan een transit eindgebruiker, en de laatste inname was binnen de opgegeven tijdspanne, dan wordt het object niet opnieuw ingenomen. De SIP2 client krijgt in elk geval het antwoord, dat de inname is gelukt.

Druk etiket af bij inname van gereserveerd object

Geef aan of het ticket voor klaarstaande reservatie moet worden doorgestuurd als print informatie naar de SIP2 client. Let wel, dat de gebruikelijke parameters in het werkstation zijn ingevuld.

5.3.5. Parameters bij uitlenen

Met optie uitlenen

Vink deze optie aan indien de robot in kwestie gebruikt kan worden voor uitleen (checkout). Indien deze optie niet is aangevinkt, dan wordt het uitlenen van objecten op de gegeven robot geweigerd.

Als de robot wordt gebruikt voor innemen, maar occasioneel ook voor uitlenen, is het verkieselijk om de toch de optie uitlenen aan te vinken. Op die manier moet de meta-informatie van de robot niet steeds worden gewijzigd als beide functies actief worden gezet.

Mag een uitleen met leengeld bij ontstentenis worden aanvaard ?

Bij het uitlenen kan het gebeuren dat er leengelden worden aangerekend. In SIP2 gaat een dergelijke uitleentransactie pas door indien de gebruiker zich akkoord heeft verklaard voor betaling van de leengelden (fee acknowledge = yes). Door de optie hier aan te vinken wordt de fee acknowledge overruled, m.a.w. de fee acknowledge wordt steeds op ja gezet ongeacht wat de robot doorstuurt.

Bericht bij succesrijk uitlenen

Indien ingevuld, wordt deze message meegestuurd in het Screen message of AF-veld van de SIP2 Checkout Reponse boodschap. Dit kan een vrije tekst zijn, maar het is verkieselijk om hier een code op te nemen die door de robot naar een leesbaar bericht voor de lezer in de interface wordt omgezet. Verder af te spreken met de leverancier van de apparatuur.

Bericht indien gebruiker niet mag lenen

Idem.

Bericht indien object niet uitleenbaar

Idem.

Bericht indien object niet uitleenbaar voor deze gebruiker

Idem.

Bericht indien maximum aantal overschreden

Idem.

Bericht bij subtotaal overschreden

Idem.

Bericht indien maximum aantal voor een gegeven objectklasse overschreden

Idem.

Bericht indien gereserveerd voor andere lener

Idem.

Default bericht bij weigering uitlenen

Idem.

5.3.6. Parameters bij verlengen

Met optie verlengingen

Vink deze optie aan indien de robot in kwestie gebruikt kan worden voor verlengen (checkout). Indien deze optie niet is aangevinkt, dan wordt het verlengen van objecten op de gegeven robot geweigerd.

Als de robot wordt gebruikt voor uitlenen, maar occasioneel ook voor verlengen, is het verkieselijk om de toch de optie verlengen aan te vinken. Op die manier moet de meta-informatie van de robot niet steeds worden gewijzigd als beide functies actief worden gezet.

Stuur exemplaren mee bij renew all response

Vink deze optie aan, indien bij een 'renew all response' de optionele velden BM en BN mee moeten worden gestuurd. Zij bevatten de exemplaaridentiteiten van respectievelijk de verlengde en niet-verlengde objecten.

Bericht bij succesrijk verlengen

Indien ingevuld, wordt deze message meegestuurd in het Screen message of AF-veld van de SIP2 Checkout Reponse boodschap. Dit kan een vrije tekst zijn, maar het is verkieselijk om hier een code op te nemen die door de robot naar een leesbaar bericht voor de lezer in de interface wordt omgezet. Verder af te spreken met de leverancier van de apparatuur.

Bericht indien gebruiker niet mag verlengen

Idem.

Bericht indien object niet verlengbaar

Idem.

Bericht indien maximum aantal verlengingen overschreden

Idem.

Bericht indien gereserveerd voor een andere lener

Idem.

Bericht indien uitleentermijn overschreden

Idem.

Default bericht bij weigering verlengen

Idem.

5.3.7. Parameters bij betalen

Herkent munteenheid

Vul in principe EUR in. Binnen Sip2 boodschappen is in het algemeen slechts ruimte voor een enkele munteenheid.

M expressie saldo van de eindgebruiker

Geef in dit veld een M-executable die aangeeft welk bedrag van openstaande schuld op de betaalautomaat moet worden getoond. Enkele mogelijkheden: - "0" = steeds nul - $$%OS^bsipsal(RDeuser,RDmunt) = totaal van alle openstaande bedragen - $$%OSDep^bsipsal(RDeuser,RDmunt) = openstaande schuld minus eventuele deposito kredieten

Mag teveel betaald op deposito geplaatst worden ?

Vink deze optie aan indien het teveel dat de lezer betaalt op zijn deposito mag worden geschreven.

Voorbeeld: - Te betalen: 15 EUR - Betaalautomaat geeft aan Brocade door: 20 EUR - Optie Mag teveel betaald op deposito geplaatst worden ? is aangevinkt - 5 EUR wordt op het deposito van de lezer geplaatst

Voorbeeld: - Te betalen: 15 EUR - Betaalautomaat geeft aan Brocade door: 20 EUR - Optie Mag teveel betaald op deposito geplaatst worden ? is niet aangevinkt - Betaling wordt geweigerd - Indien Eindgebruiker ongeldige betalingen is ingevuld, wordt het bedrag van 20 EUR wel weggeschreven bij deze dummy gebruiker

Eindgebruiker ongeldige betalingen

Indien de Brocade-toepassing een bericht krijgt dat een lezer een bedrag betaald heeft, maar de lezer wordt om één of andere reden niet in de databank teruggevonden, dan wordt de betaling weggeschreven in het lenersrecords dat in dit veld werd ingegeven. Verschillende opties - Alle automaten werken met dezelfde dummy user - Voor elke automaat een andere dummy user

Druk kasticket af bij fee paid response

Vink deze optie aan indien je wenst dat een betaalticket moet worden afgedrukt. In dat geval wordt de af te drukken tekst meegestuurd in het AG-veld van de SIP2 boodschap.

Betaalalgoritme

Laat dit leeg indien U het standaard algoritme wenst : Fee Paid messages worden als een betaling beschouwd. Geef een M executable, die op basis van array RAquery("CG") en RAquery("BK") bepaalt : - RDpay (0=opbouw schuld,1=betaling) - RDart ( = code artikel bij opbouw schuld)

Default : s RDpay=1,RDart=""

5.3.8. Berichten, afwijkend van het SIP2 protocol

Nummer bericht: M executable

Geef één bericht per lijn. Hierbij is elke lijn van de vorm bericht nummer : M entry. Nadere uitleg en een uitgewerkt voorbeeld vind je in hoofdstuk Communiceren, afwijkend van SIP2

5.4. Configuratie

5.4.1. Acties m.b.t. SIP2 server

Hoe installeren?

  • Ken volgende delphi waarde toe : delphi -add sip2-type cs

  • Ken volgende delphi-waarden toe: sip2-server-password het paswoord, dat de sip2client nodig heeft, om de sip2 server stil te leggen. Deze waarde wordt zowel gebruikt door de aanroepende sip2 client als de sip2 server ter verificatie. Kies een paswoord naar eigen goeddunken.

  • Ken volgende delphi-waarde toe: sip2-process-dir de naam van de directory, waarin o.a. logging gegevens van de Sip2 server terecht komen.

  • Installeer (opnieuw) de volgende projecten :

    • /acs/server

    • /acs/client

  • Zorg ervoor dat de lokale firewalls de communicatie over poort 6001 doorlaten.

Relatie met procesbeheer/Opstarten van de SIP2 server
  • De sip2 servers worden uitsluitend opgestart via procesbeheer.

  • Maak (minstens) twee processen aan, die respectievelijk volgende lijnen als executable hebben:

    • /usr/local/bin/sip2server -run verbose (Procman proces xxx.sip2server)

    • ( Indien op andere tcp poorten bijkomende sip2 servers dienen te worden gestart, maak dan overeenkomstige processen aan. Voorbeeld : /usr/local/bin/sip2server -run 6002 verbose, /usr/local/bin/sip2server -run 6003 verbose,..)

    • /usr/local/bin/sip2server -stop (Procman proces xxx.sip2serverstop). Deze programmer je op het tijdstip, waarop je je sip2 server wil stoppen.

    • ( Indien op andere tcp poorten bijkomende sip2 servers dienen te worden gestopt, maak dan overeenkomstige processen aan. Voorbeeld : /usr/local/bin/sip2server -stop 6002, /usr/local/bin/sip2server -stop 6003,..)

Starten/stoppen/herstarten
  • Een sip2 server start je door het geassocieerd procman proces op te starten.

  • Een sip2 server stop je door het commando sip2server -stop (= op default poort 6001), of specifieker sip2server -stop 6002

  • Overnacht worden de wijzigingen in de configuratie van de robots automatisch doorgevoerd. Indien gewenst, kan dit ook quasi onmiddellijk worden geactualiseerd, door :

    • De knop 'Update Python module' in het scherm van de meta-informatie van de leenrobots aan te klikken

    • Uit te voeren : sip2server -reload, eventueel sip2server -reload 6002, ..

Probes
  • Volgende URL controleert of er een connectie is op poort 6001 van de server : https://server adres/probes/sip2probe.phtml. Er is ook een bijbehorend script, dat naar wens kan worden aangepast. Let wel, dit controleert enkel of er een connectie kan gemaakt worden met de sip2 server, en checkt niet de verbinding tussen de sip2 server en de Brocade M omgeving.

  • Om de SIP2 connectie tussen een client en een server te testen kan je ook gebruik maken van het programma sip2client. Dit programma kan je downloaden vanuit het Software archief van Brocade. Plaats deze executable ergens op je systeem. Open de command prompt vanuit de directory waar sip2client.exe staat. Voer dan bijvoorbeeld de instructie uit sip2client probe <server> <port>. Verander <server> door de naam van de server en <port> door het poortnummer, bv. sip2client probe oba.anet.be 6001.

5.4.2. Acties m.b.t. leenrobot

  • Het userid zoals ingegeven in de meta-informatie van de robot (Administratieve gegevens - Identificatie) en het wachtwoord (Administratieve gegevens - Sip2 login paswoord) moeten worden ingegeven in de configuratie van elke lokale robot

  • Aanpassing van de meta-informatie leidt niet automatisch tot aangepast gedrag van de SIP2 server. Indien je wenst dat de SIP2 server reageert overeenkomstig aangepaste meta-informatie, ga dan als volgt te werk:

    • Klik op Update Python modules

    • Herstart de SIP2 server, of voer uit sip2server -reload

    Deze procedure wordt ook automatisch elke nacht doorgevoerd.

5.4.3. Acties m.b.t. PC aan een bemande balie

De PC aan een bemande balie moet in staat zijn om de beveiligingsbit (EAS-functie) in de RFID-tag af te zetten bij uitlening en aan te zetten bij inname. De bestaande localexec-toepassing werd daarom uitgebreid met een optie waarbij een executable op de lokale PC wordt gestart die dan de operaties uitvoert. Om correct te laten werken moet in Brocade de volgende informatie worden ingevuld:

Beheer leensysteem
  • De waarde Preferentieel barcode type moet op bc staan of een ander type van exemplaarnummer (inv, cat, ...). Het is het exemplaarnummer van dat type dat localexec doorgeeft aan de lokale software.

  • Parameter Beveiliging bij uitleen moet staan op Beveilig net uitgeleende werken of Beveilig alle geleende werken

  • Parameter Beveiliging bij inname moet staan op Beveilig net ingenomen werken

Werkstation - Executable bij 'innemen'

Zorg via een combinatie van een Clipboard actie en Argumenten vor een executable die moeten worden uitgevoerd bij elke inname van een object. Voorbeelden:

Commando dat uitgevoerd moet worden bij de checkin van een object.

Voorbeelden:

  • testexec c:testexec.log checkin &#60;rfids&#62;

  • testexec c:testexec.log checkout &#60;rfids&#62;

  • bibliocmdline -t checkin -i &#60;rfids&#62;

  • bibliocmdline -t checkout -i &#60;rfids&#62;

De placeholder <rfids> staat voor een sequentie van object identifiers (preferentieel barcode type van het leensysteem).

Werkstation - Executable bij 'uitlenen'

Zorg via een combinatie van een Clipboard actie en Argumenten vor een executable die moeten worden uitgevoerd bij elke uitlening van een object. Voorbeelden:

Commando dat uitgevoerd moet worden bij de checkout van een object.

Voorbeelden:

  • testexec c:testexec.log checkin &#60;rfids&#62;

  • testexec c:testexec.log checkout &#60;rfids&#62;

  • bibliocmdline -t checkin -i &#60;rfids&#62;

  • bibliocmdline -t checkout -i &#60;rfids&#62;

De placeholder <rfids> staat voor een sequentie van object identifiers (preferentieel barcode type van het leensysteem).

5.5. Communiceren, afwijkend van SIP2

Zoals we tot nog toe hebben gelezen, ondersteunt Brocade het SIP2 protocol op een flexibele en vrij complete manier. Op diverse plaatsen kan men de werking naar de hand te zetten van de leenautomaat. Deze leenautomaat neemt meer en meer verrassende vormen aan, hetgeen gepaard gaat met hogere eisen van functionaliteit. Ondanks zijn inherente voordelen (alleen al het feit dat het een veelgebruikte standaard is) moet SIP2 echter af en toe wel forfait geven :

  • Meer en meer functionaliteit wordt gekoppeld aan het SIP2 gebeuren, en dit past niet altijd in de SIP2 structuur.

  • Sommige afhandelingen van SIP2 boodschappen zou men in sommige gevallen helemaal anders willen benaderen.

  • Ook geïmplementeerde SIP2 boodschappen zou men graag willen uitbreiden met extra velden, die niet zijn voorzien binnen SIP2.

Brocade laat toe dit te configureren.

Hoe stuur je zulk afwijkend gedrag aan ?

De rubriek Berichten, afwijkend van het SIP2 protocol in de meta-informatie van een leenrobot vormt hier de spil informatie :

  • In het invulveld Nummer bericht: M executable vul je die types berichten in, waarvan je een afwijkend gedrag wenst. Hierbij is elke lijn van de vorm bericht nummer:M entry

Voorbeeld

17:%Entry17^cxyz
47:%Entry47^cxyz

Dit stukje software moet passen in volgend plaatje :

  • Aan de M entry wordt gegeven :

    • RAenv : de omgevingsparameters van de robot (zie macro getRobotMetaData)

    • RAquery : de query, afkomstig van de SIP2 client. Deze ééndimensionale array heeft de volgende vorm :

      • RAquery("id"): de nummer van de boodschap, gestuurd door de leenautomaat.

        Voorbeeld

        RAquery("id")="17
        
      • RAquery("robid"): de id van de leenrobot.

        Voorbeeld

        RAquery("robid")="archie"
        
      • RAquery("veld id"): (Bij boodschappen met nummering volgens SIP2 standaard) de inhouden van velden, aangeduid door id .

        Voorbeeld

        RAquery("AB")="o:lvd:100"
        RAquery("AO")="beanan"
        RAquery("ZB")="mx788"
        RAquery("tdate")="20051005    140102"
        

        Bemerk, dat bij SIP2 berichten met standaard nummering (vb. 17) ook niet-standaard velden worden geanalyseerd (vb. ZB)

      • RAquery("nonsip")(Bij boodschappen met nummering niet volgens SIP2 standaard) de inhoud van de query string, ontdaan van nummer, sequence nummer en eventuele checksum.

        Voorbeeld

        RAquery("id")="47"
        
        RAquery("nonsip")="20051005    140102AAo:lvd:100|AObeanan|ZAmx55|ZBMGa"
        
  • van deze M entry wordt verwacht :

    • RAreply : een array, die het antwoord bevat. Dit is een array, die van de vorm :

      • RAreply("id")code, bestaande uit twee cijfers, dat het nummer bevat van het antwoordbericht. Het nummer is al dan niet een nummer, voorzien in het SIP2 protocol.

        Voorbeeld

        RAreply("id")="48"
        
      • RAreply("veld id")voor SIP2 boodschappenper veld id de waarde ervan. Voor niet-SIP2 boodschappen worden deze genegeerd.

        Voorbeeld

        RAreply("AB")="o:lvd:100"
        RAreply("AH")="28.03.2009"
        RAreply("AJ")="Lorreinen    76"
        RAreply("AQ")="MAG-UIA-B 27505"
        RAreply("BG")="e:UA:75884"
        RAreply("CF")=1
        RAreply("CK")="007"
        RAreply("bi")="2 bijl"
        RAreply("circulation")="04"
        RAreply("euser")="e:UA:75884"
        RAreply("feetype")="01"
        RAreply("is")="UA-CST"
        RAreply("objc")="UA-WU"
        RAreply("oloi")="o:lvd:100"
        RAreply("securitymarker")="00"
        RAreply("tdate")="20051005    140102"
        
      • RAreply("extra") : een string, dat (achteraan) wordt geplakt aan de reply message. Voor niet-SIP2 boodschappen staat hier de hele string, die het antwoord bevat. Sequence nummer en checksum worden automatisch nadien hieraan toegevoegd. Voorbeeld :

        RAreply("extra")="ZAextraA|ZBextraB"

Welke M entry wordt eigenlijk uitgevoerd als ik geen afwijkingen definieer ?

  • Boodschappen met niet-standaard nummering worden genegeerd

  • Voor boodschappen met SIP2 nummeringvind je de M entry terug via macro m4_getSip2defaultexe

En stel, dat ik gewoon een extra veld wil toevoegen aan een SIP2 bericht, en voor de rest gewoon SIP2 zijn ding wil laten doen ?

Dat kunnen we illustreren aan de hand van een voorbeeld (Item information 17):

  • Plaats in de meta-informatie van de leenrobot : Berichten, afwijkend van het SIP2 protocol Nummer bericht: M executable

    17:%A17^cmyxyz
    ...
    
  • Maak een M routine cmyxyz

1def %A17:
2n x,mentry
3m4_getSip2defaultexe(mentry,"loan",17) d @mentry
4...
5s x="aaa",y="bbb"
6s RAreply("extra")="ZA"_x_"|ZB"_y
7q
  • Actualiseer de python update module en herlaad de Sip2 server, zoals hier beschreven.