User Tools

Site Tools


This is an old revision of the document!

Circulation Behavior

I'm using the term circulation behavior to refer to such things as loan duration, fine amounts and intervals, number of renewals, and whether circulation is even allowed given arbitrary criteria. You can configure such behavior using either server-side Javascript, "matrix" tables in the database, or (at some point in the future) a combination of the two. A GUI for the in-db tables approach is being developed and may be found in some form in the staff client application under Admin -> Local Administration.

Rule Tables

Certain types of behavior ultimately come down to a handful of rule tables in the database. The goal of both the circ scripts and the alternative matrix tables is to pick rows from those rule tables. In older versions of Evergreen, you would configure these tables with the "Open-ILS Bootstrapping Scripts", under "Circulation and Holds Rules". This interface lives by default at http://localhost/cgi-bin/config.cgi (if you use a browser on the Evergreen itself. Otherwise, you will need to tweak your Apache config to allow external access to those scripts and modify your URL as appropriate.) You could also manage these tables directly in the database, for example, by using pgAdmin or psql. FIXME I thought all of the Bootstrapping interfaces were deprecated and replaced with "Conify" interfaces, but I can't find any for the config.rules tables.

Circulation Duration (config.rule_circ_duration)

The stock circ duration table includes these rules:

id name extended normal shrt max_renewals
1 7_days_0_renew 7 days 7 days 7 days 0
2 28_days_2_renew 28 days 28 days 28 days 2
3 3_months_0_renew 3 mons 3 mons 3 mons 0
4 3_days_1_renew 3 days 3 days 3 days 1
5 2_months_2_renew 2 mons 2 mons 2 mons 2
6 35_days_1_renew 35 days 35 days 35 days 1
7 7_days_2_renew 7 days 7 days 7 days 2
8 1_hour_2_renew 01:00:00 01:00:00 01:00:00 2
9 28_days_0_renew 28 days 28 days 28 days 0
10 14_days_2_renew 14 days 14 days 14 days 2
11 default 21 days 14 days 7 days 2

The stock circ scripts (and in-db circ matrix) will always target the "default" rule here. An item circulating under this rule will start with 2 allowed renewals, and either circulate for 7, 14, or 21 days depending on the value of the item's Loan Duration field (which can have the values Short, Normal, or Long, corresponding with the shrt, normal, and extended columns in the rule table).

The circ scripts reference these rules by the value in the name column. The circ matrix tables reference these rules by the value in their id column. A common practice is to embed the values for a rule into the rule name itself, as seen above, to make it easier to understand and manage the circ scripts. It could also make sense to use names like "audiobook" or "bestseller", but those sort of labels are more often used with item circulation modifiers, to push configurability more toward end-user staff and away from admins. It also helps facilitate the configuration of rules that may be different per library in a shared system. Consider that two libraries may both have an "audiobook" circ modifier, yet based on the circ scripts, a different loan duration rule may be chosen. If those loan duration rules are named after their values, then they'll never be changed and potentially surprise a library that targets them.

Recurring Fine Levels (config.rule_recuring_fine)

Max Fine Levels (config.rule_max_fine)

Item Age Hold Protection (config.rule_age_hold_protect)

Standing Penalties

Circ Scripts

In-db Circ Matrix

FIXME Someone else can tackle this one.

evergreen-admin/customization/circ.1256596663.txt.gz · Last modified: 2009/10/26 18:37 by phasefx

© 2008-2017 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a member of Software Freedom Conservancy.