! in state of translation from a German original
Abstract
Currently FOLIO offers two disjoint interfaces Dies ist die Engllsche Version der Seite: Konzeptionale Lücke bei zwei disjunkten Schnittstellen zu Verfügbarkeit und Nutzer*in-Interaktion
Table of Contents |
---|
Abstract
Currently, FOLIO provides two disjunctive APIs for discovery systems:
- edge_rtac: for item related availability (functional subset of DAIA)
- edge_patron: for ordering (functional subset of PAIA) patron actions
The basic
...
axioms are:
- Availability is a binary property that can be derived exclusively from the properties of the media.
- The user functions do not require any information other than availability. If nevertheless, the search interface APIs should handle this.
When discussing During the discussion of real-world challenges in the discovery sub-group, it was quickly became clear that these axioms are were not sufficient. All There are use cases are missing, where availability does not only depend on the properties of the medium, but can also be is also limited by the properties of the userpatron. It was also realized that 'availability' is not really binary, and that there is a need for context.
This gap is documented in this paper with here. On the basis of an example and different possible solutions are , different approaches will be discussed.
...
Related FOLIO tickets
- UXPROD-2422 (Discovery Integrations - Expose Circulation Rules Regarding Requests)
- UXPROD-2758 (Discovery Integrations - Expose Circulation Rules Regarding Renewal Options)
- UXPROD-1630 (Pre-Check Request Policy When Requests are Created and/or Moved)
Generic example
Environment
- A small library has two types of readers and all media are stored in a closed stacks.
- Some of the media may be sent to ordered by all readers, some only to by group 'A' and others only to by group 'B'.
- The library has a search interface discovery system that does not require an initial registration for research.
Challenge
The search interface discovery system should offer navigation meaningful action elements (buttons) that are as meaningful as possible in two modes of operation.
- Without prior registration (patron is unknown) there There are four possibilities of display:
- The copy is basically not available. (Infotext Info text for the reason: e.g. ordered, lost, ...)
- The copy is available and may be ordered by all patrons. (Button: "Please register and order")
- The copy is available but on loan. (Button: "Please register, reservation possibly possible")
- The copy is available but may only be ordered by one patron group. (Button: "Please register, ordering may be possible")
- With prior registration (patron is known) there are again several options:
- The copy is basically not available. (Infotext Info text for the reason e.g. on buy, lost, ...)
- The copy is available and
- the patron's group has the authority to place a hold. (Button: "order")
- the patron's group has no authority to place a hold. (InfotextInfo text: ...)
- The copy is available but on loan and
- the patron's group has the authority to place a hold. (Button: "reserve")
- the patron's group has no authority to place a hold. (InfotextInfo text: ...)
...
Task
For the first case of the example, an extended¹ edge_rtac should sufficient.
¹) Currently there is no information about the limitations/restrictions of the general availability available.
In the second case, however, it is necessary to include knowledge about the patron's properties. The full set of circulation rules have has to be evaluated.
Currently neither edge_rtac nor edge_patron are able to fulfill the requirement.!!!!!!
Solution
Possible approaches
When designing edge_rtac and edge_patron , an attempt was made to avoid overlaps between the interfacesare designed to be distinct. There should be no overlap between the APIs. As demonstrated in the example
above, this cannot be always sustained.
In this paragraph we discuss where/ how the missing connection between the user's characteristics and those of the medium can be mappedto handle the need to combine attributes of objects and patrons.
Introduction of an additional
...
API (For example edge_patron-rtac)
It is seems obvious to outsource functions that cannot be directly assigned to a separate interfaceadd a new API. The advantage is that edge_rtac and edge_patron may stay unchanged. On the other hand every new interface brings new
complexity. Such an additional interface would obviously have a lot of overlaps with edge_rtac and edge_patron. So edge_rtac and edge_patron . To avoid duplicate code, the
existing interfaces would have to be reworked as wellit could be hard to decide which API to use. Also that third API may lead to produce duplicate code.
Extension of the availability information (edge_rtac)
To consider properties of a reader the patron's properties edge_rtac would have needs to know the login data. On the other hand, edge_rtac must also has to work without the login.
This
would result in two different working modes for edge_rtac: "Without login → vague information" vs. "With login → exact information".
The second mode
would correspond be quite similar to the third interface discarded above, but would be clearer to assign.
For a search interface, such an approach had only the disadvantage that existing availability information (hit list) would have to be reloaded after a loginAPI discussed above. But as apart of edge_rtac the design would be comprehensible.
This approach has two disadvantages:
- edge_rtac becomes bloated
- If the discovery system handles login in a popup window, some pages will need to be refreshed after login, as the availability information displayed may be out of date.
Extension of the user interaction (edge_patron)
In contrast to edge_rtac, edge_patron always knows the ID of the copy and the reader. Accordingly, a two-step workflow would be conceivable: 1.
fetch the exact availability information; 2. order according to the obtained information.
The first step would again correspond to the third interface (or the 2nd mode for edge_rtac), would be logically most inappropriate assigned to
edge_paron.
Split expansion of both interfacespatron already needs to handle with patron and item.but adding the same functionality here would have no advantage. It would still require two modes:
- Before login: fetch the exact availability information via edge_rtac
- After login: fetch the exact availability information via edge_patron
Partitioned expansion of both APIs
The non-overlapping design of edge_rtac and edge_patron can be preserved if both interfaces APIs are slightly extended in their context.
* edge_rtac provides not only should extend the basic availability but also with additional information about restrictions on and extensions of the availability, partly as a list for
different user groups.
For this extension Even for attributes that depend on user groups, edge_rtac does not need to know the ID of the readerlogin. It is sufficient if the interface becomes should be enough to make the API more talkative and outputs return as much loan
lending-relevant information as possible.
* edge_parton offers the possibility of a blind order. This validates the individual identifier and provides information about should provide a mock order function to query each patron's state,
individual restrictions (lock, ...) and individual options (pickup location, ...).
The concept of a blind mock order can be adopted taken from the basically comparable interface PAIAsimilar API 'PAIA'.. The procedure is as follows:1. If
- When the
...
- patron wishes to place
...
- a hold, the discovery system sends an incomplete request to edge_patron (e.g. no pick-up location). This triggers a
...
- dummy order in the
...
- circulation module. This
...
- mock should not write anything, but should evaluate all circulation rules and return the detected restrictions/options. (
...
- Subset of possible
...
- pick-up locations,
...
- possible delivery options,
...
- individual restrictions, ...).
...
- The discovery system generates a dialogue box with the result of the
...
- dummy request to:
- inform the reader patron why the order/registration is not possible for you. (
...
- e.g.
...
- blocked due to too many open charges).
...
- allow the patron to select the order parameters
...
- (pick-up location, delivery option,
...
- acceptance costs, ...)
- acceptance costs, ...)
...
- With the additional information the discovery system can send a complete request to the API. This will trigger a regular order attempt.
...
- The discovery system displays a feedback with the status of the order.
The current behavior of edge_patron is already similarlikely. Currently, at least the parameter 'pickupLocationId ' (pickup location ) is expected for an
order/registration. If this is missing id' parameter is required to place a hold. Without it, edge_patron reacts responds with an error message. At this point a blind , a dummy order could be included. At this point an mock order could also be triggered, which returns the
lists of possible options. included
(Currently such a blind mock order is not yet supported by FOLIO, bur requested -> Tickets).
Summary
Even though they all sketched approaches are possible in principle, the first three possibilities seem incossistentto be inconsistent.
- An additional
...
- API would confuse more than help.
- The extension only of 'edge_rtac', would disturb the flow in the
...
- discovery system
- Extending only 'edge_patron' would blur the clear separation to edge_rtac.
In contrast, the split partitioned extension of the interfaces both APIs fulfills the requirements of the example without any problems and without logical breaks.
Appendix
More application examples
Of course, there are many other framework conditions real library challenges besides the example above that need to be covered with the approach discussed above. In the
following, further basic examples are outlined and it is examined whether the solution described above is sufficient.
Remote locations 1
...
Environment
...
- A library has two library locations.
...
- Local stock should not be able to be ordered.
...
- Stock from site 'A' should be able to be ordered to site 'B'.
...
- Stock from site 'B' should be able to be ordered to site 'A'.
...
- The library has a
...
- discovery system that does not require registration for research.
Discussion
This example is only item depended. But still it has two aspects:1.
- edge_rtac
The
...
- discovery system needs the information, that
...
- ordering is limited by location ("not local").
- edge_patron
...
- The mock order returns only issue pickup locations from other locations like that of the
...
- item. (a use case of UXPROD-2689)
Remote locations 2
Framework
...
- In a departure from the previous example, there is a privileged group that is also allowed to order locally.
...
- Additionally, there is a third group that is allowed to order locally for a handling fee.
Discussion
...
edge_rtac
...
Orderability should be specified as a property of the group.
Code Block title possible response {"limitations": [
...
{"place" [
...
{"
...
ordinary patrons":
...
"non local"},
...
{"privileged patrons":
...
"also local"}, {"payer": "local for money"} ]} ]}
Note: The example above isn't a realistic goal. But providing all non classified attributes and notes of holding, location and item might be sufficient. The discovery system should be able to identify the cases.
edge_patron
Returns the usable pickup locations.
Returns the amount of the fee a 'payer' could by accept.
Reading room
Environment
- A library has a collection mandate. Media not leave the building, but
...
- may be
...
- consulted.
...
- Some
...
- items are stored in
...
- closed
...
- stacks. They can only be
...
- read in special reading rooms.
...
- During the loan period, the items are kept there and reserved for the patron.
...
- There is a trusted group
...
- of customers who can order to any pick-up location in the house.
Discussion
...
edge_rtac
...
Orderability should be specified as a property of the group.
...
Code Block title possible response {"limitations": [ {"place" [ {"ordinary patrons": "only reading rooms"}, {"trusted patrons": "only for in house use"}, ]} ]}
- edge_patron
...
- Returns the usable pickup locations
...
Short-term loan
...
Environment
- Some items (e.g. textbooks) may have a shorter loan period than usual.
Discussion
edge_rtac
...
Indicate the
...
shortened lending time
Code Block title possible response {"limitations": [ {"shortened loan period" [ {"ordinary patrons": "3d"}, {"privileged patrons": "5d"}, ]} ]}
- edge_patron
Returns the usable pickup locations.