Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
Introduction

...

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

...

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.
(This rule may not apply where Package C is a standard and stable package, such as java.io.)

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.
Sometimes a package is clearly a "sub-package" of another package. In such a case, the sub-package's exceptions can extend the parent package's exceptions. In example of such a sub-package is java.nio.charset (whose exceptions extend java.io.IOException).

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) 
Green = Pass SLA, 
Red = Fail SLA

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



24SCSB Matching Algorithm


25

Process EDD Request

~1-2 seconds



26Non-owning bib and item reqTBD

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

DockerContainerized solution for quick deployments and application run time environment.

6

AWSDeployment 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)

...