Uploaded image for project: 'mod-circulation'
  1. mod-circulation
  2. CIRC-216

Split circulation interface to reduce cascading impact of breaking compatibility changes



    • Vega



      At the moment, breaking changes to the circulation interface involves assessment of at least 7 dependent modules:

      • ui-checkin
      • ui-checkout
      • ui-circulation
      • ui-inventory
      • ui-users
      • mod-rtac
      • mod-patron

      Often, a change does not impact many of these modules. That suggests that there are different aspects of the interface that are relevant to different clients.

      Making those aspects more explicit, by separating the interface into multiple interfaces, could reduce the cascade and make it easier to understand the impact of changes.

      Trade offs

      • Record representations that are used across the interfaces will need to be more carefully managed
        • the impact of these could be missed during changes
        • this could still lead to a cascade of breaking changes under some circumstances

      Proposal for separation

      I'm proposing the following aspects as a starting point for discussion.

      Check Out (circulation.item-check-out)
      For check out workflow related endpoints

      • /circulation/check-out-by-barcode
      • /circulation/

      Check In (circulation.item-check-in)
      For check in workflow related endpoints

      • /circulation/check-in-by-barcode

      Renewal (circulation.loan-renewal)
      For renewal workflow related endpoints

      • /circulation/renew-by-barcode
      • /circulation/renew-by-id
      • /circulation/override-renewal-by-barcode

      Rules (circulation.rules)
      For the endpoints for rule management and applying them to determine the relevant policies.

      • /circulation/rules
      • /circulation/rules/loan-policy
      • /circulation/rules/loan-policy-all
      • /circulation/rules/request-policy
      • /circulation/rules/request-policy-all

      Loans (circulation.loans)
      For general loans endpoints.

      • /circulation/loans

      Requests (circulation.requests)
      For general request endpoints.

      • /circulation/requests
      • /circulation/requests/queue


      • Can Okapi support for multiple interfaces that share parts of a path e.g. /circulation?
      • Can RAML Module Builder support for multiple interfaces that share parts of a path e.g. /circulation?
      • How do we want to name these interfaces, would . or - be a better separator?

      TestRail: Results


          Issue Links



                Unassigned Unassigned
                marcjohnson Marc Johnson
                0 Vote for this issue
                7 Start watching this issue



                  TestRail: Runs

                    TestRail: Cases