2010 Sopac Cosugi


Published on

Description of how the connector were created for SOPAC to work with Sirsi/Unicorn

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

2010 Sopac Cosugi

  1. 1. Sopac connectors for Sirsi Sean Robinson Allen County Public Library Fort Wayne IN
  2. 2. The history <ul><li>4-5 years ago I meet John Blyberg in Ann Arbor, Michigan and they has just integrated III into Drupal 4 but it was a very customized solution. </li></ul><ul><li>2-3 years ago I came to my first Sirsi conference and there seemed to be an interest in the Sirsi community to separate the data from the presentation layer. </li></ul><ul><li>1 -2 years ago John wanted abstract the SOPAC design so it could be integrated into any OPAC and he asked if I would be interested in writing the connector code for SIRSI. </li></ul><ul><li>I said, Yes! He gave me the source code for III and I translated the code into Sirsi speak and made a few alterations. </li></ul>
  3. 3. How in the H*LL was I going to do this? <ul><li>I wanted all the data that could be real-time data to be real-time data. </li></ul><ul><li>I wanted the design to simple, clean and easily understood. </li></ul><ul><li>I wanted it to work across Sirsi/Dynix versions. </li></ul><ul><li>I wanted to follow John’s vision and completely separate data layer from the presentation layer. </li></ul>
  4. 4. Decisions <ul><li>How was I going to get the data? I had two choices, either the API or the XMLAPI. My choice was to use the XMPAPI. </li></ul><ul><li>What is the most universally useful way to present the data? I felt that creating a set of independent building blocks that programmers could use independently was the design I wanted to follow. So, creating a set web services seem the most generic and logical solution. People could then use these services in the future for anything. </li></ul><ul><li>The XMPAPI gave me the freedom to create these services in Perl simple and clear manner. Parsing XML would be easy. </li></ul>
  5. 5. Design elements
  6. 6. Webservices on Sirsi <ul><li>Hold_status.pl – Checks to see if in transit, available. </li></ul><ul><li>Item_status.pl- Gets call number, home location, item number, item location now. </li></ul><ul><li>Item_type.pl – Input is catkey and result it item type. </li></ul><ul><li>Item_avail.pl – Does some location checking to find item. We want to check that the item is at the same location as the home location for the patron and then if this is not true to locate another item. </li></ul>
  7. 7. … more Webservices on Sirsi <ul><li>Patron_bib.pl – Dumps bib information based on cat key. </li></ul><ul><li>Patron_details.pl – Gets patron information. </li></ul><ul><li>Patron_dump.pl – Gets addition patron information. </li></ul><ul><li>Patron_tools.pl Handles renew, cancel hold, place a hold. </li></ul>
  8. 8. How was I going to pass data to another computer?
  9. 9. Adding Drupal into the equation
  10. 10. Sopac structure
  11. 11. ILS Connector <ul><li>The connector is constructed using three standalone php classes. </li></ul><ul><li>(Written in php because that is the development language of Drupal) </li></ul><ul><li>Sirsi_patronapi.php </li></ul><ul><li>Sirsitools_3125.php </li></ul><ul><li>Locum_sirsi_3125.php </li></ul>
  12. 12. Sirsi_patronapi.php <ul><li>This gathers patron information, name, address, holds, bills, charged items, home library etc… </li></ul><ul><li>All this data is then held in various a data structures. </li></ul><ul><li>Only item of information that is passed to the web service is the patrons library card. </li></ul><ul><li>This was the first connector piece that I wrote. </li></ul>
  13. 13. Sirsitools_3125.php <ul><li>Creates and instance of the patron_api object and populates it with data. </li></ul><ul><li>Renew of material. </li></ul><ul><li>Cancel a hold. </li></ul><ul><li>Places a hold. </li></ul><ul><li>This was the second class that I wrote. </li></ul>
  14. 14. Locum_sirsi_3125.php <ul><li>Returns bibliographic information. in locum ready array. This is done with the catalog key rather than item key. </li></ul><ul><li>Returns item status. Is the item available, on hold, copies available, now many etc… </li></ul><ul><li>Here we are using both previous classes to get data and perform functions to pass as data structures to locum. </li></ul><ul><li>This was the last class that I wrote. </li></ul>
  15. 15. Getting the data from MARC <ul><li>Question: Why not just dump the data with the catalogdump command? </li></ul><ul><li>Answer: It would have involved a major rewrite of John’s code and effected compatibility and overall philosophy. </li></ul>
  16. 16. Getting the data from MARC
  17. 17. Getting the data from MARC <ul><li>Originally the catkey was feed to catalogdump and the MARC record was returned and then parsed into the MySQL database. </li></ul><ul><li>Problem was that we had to spawn a catalogdump process to each catkey request. We have about 1.5 million records and it was going to take about a week to import the database. </li></ul><ul><li>The other problem was the http protocol overhead with running this as a CGI. </li></ul><ul><li>So here is the solution. </li></ul>
  18. 18. Getting the data from MARC
  19. 19. Getting the data from MARC <ul><li>We wrote a MARC server that has catalogdump running as a daemon. We only have to spawn the process once. </li></ul><ul><li>The MARC server is constantly checking for connections. </li></ul><ul><li>Once it receives a connection is checks for completeness. </li></ul><ul><li>Sends it to the catalogdump. </li></ul><ul><li>Waits for response from catalogdump. </li></ul><ul><li>If there are errors they are sent to the errorlog file. </li></ul><ul><li>Sends MARC back to SOPAC </li></ul><ul><li>Performance increase of 200 records per second. </li></ul><ul><li>One day to process 1.5 million records. </li></ul>
  20. 20. Look and feel
  21. 21. Look and feel
  22. 22. Look and feel
  23. 23. Look and feel
  24. 24. Look and feel
  25. 25. Look and feel
  26. 26. Look and feel
  27. 27. Look and feel
  28. 28. Look and feel
  29. 29. Look and feel
  30. 30. Contact information <ul><li>Sean Robinson </li></ul><ul><li>Email : [email_address] </li></ul><ul><li>Blog : www.tscrobinson.com </li></ul>