[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