[OPEN-ILS-GENERAL] Floating Groups
Thomas Berezansky
tsbere at mvlc.org
Fri Mar 9 17:04:12 EST 2012
Currently floating is an on/off flag on copies. When turned on a copy
will never go into transit to return "home" but will instead have its
circulation library changed to the checkin location.
I wish to change that to make floating useful to a wider selection of
users and use cases. I am thus looking for comments, opinions, missed
use cases, etc with regards to my current plan. Note that I am aware
of but am intentionally not looking at time-based concerns (automatic
rotation through multiple libraries, float for X amount of time, etc).
I am currently focusing on expanding the "where" options.
My current plan is to change the on/off flag to a reference to a
"Floating Group". Each group would define the list of libraries that
the copy can float to.
Each group would have a name and a flag to indicate if it is a
"manual" group. Manual groups would require a checkin modifier to be
active in order to trigger floating for greater staff control over
when items do float.
The members of each group would have an Org Unit, a Stop Depth, an
optional Max Depth, and an Exclude flag.
The Org Unit is to add a location to the Floating Group, including all
descendants thereof. Adding the top of the org tree would include all
locations. Adding a system would include branches thereof, etc.
The Stop Depth is the highest depth on the org tree the copy will
traverse to get to the checkin library. A value of 0 allows movement
anywhere, while a value of 1 would prevent a copy from floating into
the checkin library from another system.
The Max Depth, if set, would be the deepest descendant level to
include. You could use a value of 2 to limit floating to branches,
automatically excluding sub libraries and bookmobiles.
The Exclude flag would cause a match to instead abort and not allow
the float to happen. This would be useful if you want things to float
globally normally, but not to specific locations. For example, you may
have a central office you don't want things to float to, or a special
location used for out of system borrowing. Excludes would take
priority over allows.
I have prepared some examples of how to configure various things,
assuming the default org tree:
1. Float Everywhere
This would be a default, and included on upgrade to migrate existing
floating copies to.
It would consist of a single entry:
Org Unit: CONS
Stop Depth: 0
Max Depth: unset
Exclude: off
2. Float Within System
This would permit a copy to float anywhere within a system, but would
return to the system if it was returned elsewhere.
It would consist of a single entry:
Org Unit: CONS
Stop Depth: 1
Max Depth: unset
Exclude: off
3. Float To All Branches
This would permit a copy to float to any branch, but not to
sublibraries or bookmobiles.
It would consist of a single entry:
Org Unit: CONS
Stop Depth: 0
Max Depth: 2
Exclude: off
4. Float To All Branches Within System
This would permit a copy to float to any branch in a system, but not
to sublibraries or bookmobiles, and returning to the system if
returned elsewhere.
It would consist of a single entry:
Org Unit: CONS
Stop Depth: 1
Max Depth: 2
Exclude: off
5. Float Between BR1 and BR3
This would permit a copy to float between BR1 and BR3 specifically,
excluding sublibraries and bookmobiles.
It would consist of two entries, identical other than the org unit:
Org Unit: BR1 / BR3
Stop Depth: 0
Max Depth: 2
Exclude: off
6. Float Everywhere Except BM1
This would allow an item to float anywhere except for BM1. It
accomplishes this with two entries.
The first includes all org units, just like Float Everywhere:
Org Unit: CONS
Stop Depth: 0
Max Depth: unset
Exclude: off
The second excludes BM1:
Org Unit: BM1
Stop Depth: 0
Max Depth: unset
Exclude: on
That works because excludes are applied first.
7. Float into, but not out of, BR2
This would allow an item to float into BR2, but once there it would
never leave. Why you would want to allow items to float to but not
from a library I dunno, but here it is. This takes advantage of the
fact that the rules say where we can float *to*, but outside of stop
depth don't care where we are floating *from*.
One entry:
Org Unit: BR2
Stop Depth: 0
Max Depth: unset
Exclude: off
Thomas Berezansky
Merrimack Valley Library Consortium
More information about the Open-ils-general
mailing list