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

Split circulation interface to reduce cascading impact of breaking compatibility changes

    XMLWordPrintable

Details

    • Vega

    Description

      Context

      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

      Questions

      • 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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                  Created:
                  Updated:

                  TestRail: Runs

                    TestRail: Cases