Table of Contents |
---|
...
- Shared Collection Visibility – ReCAP middleware consolidates and normalizes ReCAP item and bib records from all three partners and pushes update feeds to all partners. ReCAP search service provides ability to perform search on shared collection from Middleware Search UI. ReCAP will provide the records of the other Partners on incremental or full basis and Partners will provide the indexing.
- Real-time Availability – ReCAP middleware database maintains real-time status of all ReCAP items. Item availability is provided through ReCAP middleware API.
- Real-time Request Processing – ReCAP middleware maintains validation rules and item status. Request submitted through Discovery forms are validated real-time, processed in the Partner ILS and recorded in ReCAP middleware database. Users receive confirmation or validation error messages in real-time enabling them to resubmit a valid request.
- Real-time Status Reporting – ReCAP middleware consolidates a complete view of item status across GFA and ILS systems into middleware database. Consolidated status can be leveraged for tracking and analytics.
- Collection Management – ReCAP middleware implements centralized automated collection classification algorithm. Middleware provides user interfaces for manual workflow steps such as withdrawal of preservation copies.
...
The following diagram represents the environment (of the collaborating systems) where the solution fits in. The block named "Middleware" represents the solution being developed and implemented.
Layered Architecture
...
In this use-case ReCap staff will accession an item into the facility and the ReCAP middleware will interface with each Partner's database and return the bibliographic, holdings, and item data that matches the accessioned barcode. The middleware will check the accessioned item status and then apply accessioning algorithm.
The algorithm identifies titles where more than one copy is housed at ReCAP. Three Collection Group Designations have been defined by the Partners: Shared, which is defined as a single copy that is committed for sharing to all partners, and to permanent retention; Open, which is open to sharing by all partners but either a duplicate or not committed for permanent retention; Private, which are items that will be viewable and requestable only by the owning institution The accessioning algorithm identifies items that are duplicates. Only items in customers codes that are designated as Shared are subject to matching. Item information with assigned collection codes will be returned back to the owning libraries through SFTP drop. ReCAP staff also participates in the accessioning of an item
https://www.lucidchart.com/documents/view/98626f09-9e53-45ca-bb79-111528becc98/0
...
- Core Functionality
- Complexities – ReCAP middleware will run accessioning algorithm to reassign circulation codes for other items after deaccessioning an item. A review/approval workflow will be implemented to manage preservation collections.
...
No. | Exception Guideline | Description |
---|---|---|
1 | Exceptions should not create additional package dependencies | Assume that a client class in package A accesses a class in package B. The class in package B should not throw an exception that belongs to package C (which is used by package B). This produces dependencies between package A and C. |
2 | Exceptions by package. | If a package's classes throw any exceptions, the package should have its own top-level checked exception. The package should then define exception subclasses for any exceptions that may be handled differently by clients. Good models for this paradigm can be found in the Java packages java.io, java.sql and javax.naming. |
3 | No blind catches of Exception | A class is responsible for knowing what exceptions it may encounter, and it must treat each exception individually. If the handling of many exceptions is identical, it could be extracted into helper methods. |
4 | No empty catch-blocks | At the very least, a catch-block should contain an assertion that it should never be reached or a comment stating that it is irrelevant |
5 | Write sensible throws clauses | Fewer (<3) the number of exceptions thrown, better it is. Always throw exceptions that make sense to the calling class, if not wrap that exception in another, which more closely captures the error type |
6 | Chaining Exceptions | Always chain exceptions so that the root cause of the error is available for logging it into the error/system log file. This is very useful for diagnosing errors in production environment |
7 | Use Message Catalogs for easy localization | Use message catalogs for message text of an exception, whose message is directly presented to the end user. This will help the application to be localized or internationalized by just adding another message catalog |
...
Online Availability Target : 99.9%
Fail Over: The goal of fail-over is to allow work that would normally be done by one server to be done by another server should the regular one fail. For example, Server A responds to all requests unless it has a hardware failure, or someone trips over its network cable, or the data center it is located in burns to the ground. And if Server A cannot respond to requests, then Server B can take over. Or if we simply need a service to be highly available, fail-over allows you to perform maintenance on individual servers (nodes) without taking your service off-line.
Load Balancing: Load balancing lets you spread load over multiple servers. You would want to do this if you were maxing out your CPU or disk IO or network capacity on a particular server. Alternatives to load balancing include 'scaling' vertically. e.g. getting faster or better hardware such as quicker disks, a faster CPU or a fatter network pipe.
Backup and Recovery: In general, backup and recovery refers to the various strategies and procedures involved in protecting your database against data loss and reconstructing the database after any kind of data loss.
- Physical Backups and Logical Backups
- Errors and Failures Requiring Recovery from Backup
...
Business Function Counter | Business Function Description | Service Level Agreement | Testing Results (Date) (seconds) | Currently Meeting Business Requested SLA?( Date) |
---|---|---|---|---|
1 | Search SCSB Collection | < 1 second | ||
2 | Request Item | ~ 1- 2 seconds | ||
3 | Validate Request | < 1 second | ||
4 | Place Hold on Item | ~1-2 seconds | ||
5 | Recall Item | ~1-2 seconds | ||
6 | Ongoing Accession Item | ~1-2 seconds | ||
7 | Deaccession Item | ~1-2 seconds | ||
8 | Process Borrow Direct Request | ~1-2 seconds | ||
9 | Re-file Item | ~1-2 seconds | ||
10 | Check Item Availability | < 1 second | ||
11 | Get Shared Collection Items | < 30 seconds for 10K Items | ||
12 | Submit Collection Information | TBD | ||
13 | Receive Collection Updates | TBD | ||
14 | Search for Requests | < 1 second | ||
23 | Initial Accession Records | ~1-2 seconds | ||
24 | SCSB Matching Algorithm | |||
25 | Process EDD Request | ~1-2 seconds | ||
26 | Non-owning bib and item req | TBD | ||
END TO END TIME |
Modifiability
...
No. | Name | Purpose |
1 | IntelliJ 16.x | Eclipse is a multi-language software development environment comprising a base workspace(Eclipse Public License (EPL)) |
2 | MySQL 5.7 | Open source relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases (GNU General Public License) |
3 | Tomcat 7.0 | Apache Tomcat is an open source web server which provides pure Java HTTP web server environment for Java code to run. (Apache License) |
4 | Apache SOLR 6.x | SOLR is an open source enterprise search platform written in Java and runs as a standalone full-text search server within a servlet container.(Apache License) |
5 | Docker | Containerized solution for quick deployments and application run time environment. |
6 | AWS | Deployment environment. |
7 | Jenkins | Jenkins is a server-based system running in a servlet container providing open source continuous integration features.( Massachusetts Institute of Technology (MIT) License) |
8 | JUnit 4 | JUnit is a unit testing framework for the Java Programming language (Common Public License) |
9 | SOAP UI 4.5.1 | SoapUI is an open source web service testing application for service-oriented architectures (SOA) and provides functionalities like web service inspection, invoking, development, simulation and mocking, functional testing, load and compliance testing (GNU Lesser General Public License (LGPL)) |
10 | Gradle | Gradle is a build automation tool used primarily for Java projects |
11 | Java Platforms (Java 7) | Java is a set of several computer software products and specifications that together provide a system for developing application software and deploying it in a cross-platform computing environment (Freeware) |
...