Info | ||
---|---|---|
| ||
...
1. Loan Policy - KRMS
...
Info | ||
---|---|---|
| ||
Circulation policy is going to be developed using the Rice2.x codebase which offers KRMS(Rule engine). The various features pertaining to Loan will be tested and demonstrated independently of OLE_Rice1.x |
1. Service(s):
Namespace: Kuali
Context:
1. Patron Validation Context -
The Agenda 'Patron Allowed to Borrow' is contained within this context 'Patron Validation Context'.
2. Item Validation Context -
The Agendas 'Item Available for Loan' and 'Determine Loan Period' are contained within this context 'Item Validation Context'.
Patron Validation Context:
Agenda:
...
1.Patron Allowed to Borrow
...
'Patron Allowed to Borrow' is an Agenda,which is a collection of rules in a defined plan.
Category: Patron -
Category 'Patron' is used to help organize related term 'Patron'
Term: Patron -
The Term 'Patron' is used to input to the rule system.
Term Function: patronBorrowerLimit(String patronBarcode, boolean isOverridden)
Normal Mode: (isOverridden == false)
1. validatePatronBarcodeStatus(String patronBarcode) -
This method exposes patron barcode status.
2. checkMembershipExpirationDate(String patronBarcode) -
This method exposes Patron expiration date.
3. isPartonBlocked(String patronBarcode) -
This method exposes patron block status
4. getBorrowerType(String patronBarcode) -
This method exposes Borrower Type (eg. Student or Faculty).
5. getNumOfItemsOnLoan(String patronBarcode) -
This method exposes Number of Items on Loan from each Item Type and/or Item Location, Item Type and/or Item Location are retrieved from patronBarcode.
6. getFeeBalance(String patronBarcode) -
This method exposes Fee Balance from each Item Type and/or Item Location, Item Type and/or Item Location are retrieved from patronBarcode.
7. getNumOfOverdueItems(String patronBarcode) -
This method exposes Number of Overdue items from each Item Type and/or Item Location, Item Type and/or Item Location are retrieved from patronBarcode.
8. checkBorrowerLimitation(String patronBarcode) -
For borrower limits, this method will indicate whether the patron is over their borrower limit and what limits the patron has exceeded.
Override Mode: (isOverridden == true)
1.checkMembershipExpirationDate(String patronBarcode) -
By default it will not be possible to override an expired patron expiration date.
2. Need list of validation for override mode.
Item Validation Context:
Agenda:
- Item Available for Loan
- Determine Loan Period
1.Item Available for Loan
'Item Available for Loan' is an Agenda,which is a collection of rules in a defined plan.
Category: ItemAndLoanPeriod -
Category 'ItemAndLoanPeriod' is used to help organize related term 'Item'
Term: Item -
The Term 'Item' is used to input to the rule system.
Term Function: IsItemAvailable(String itemId, boolean isOverridden)
Normal Mode: (isOverridden == false)
1. getItemEffectiveInstitution(String itemId)
2. getItemEffectiveCampus(String itemId)
3. getItemEffectiveLibrary(String itemId)
4. getItemEffectiveShelvingLocation(String itemId)
5. getItemEffectiveCollection(String itemId)
6. getItemType(String itemId) -
This method exposes Item Type from docstore using itemId.
7. checkItemAvailabilityStatus(String ItemId) -
This method checks whether the item has an active recall request,
the item is on loan to another patron,
the item is on hold for another patron,
the item is in transit to fill a request for another patron,
the item would fill a request for another patron,
the item is lost,the item is withdrawn and the item is missing.
Override Mode: (isOverridden == true)
1. checkItemAvailabilityStatus(String ItemId) - This method checks whether the item is withdrawn.
2. Need list of validation for override mode.
2. Determine Loan Period
'Determine Loan Period' is an Agenda,which is a collection of rules in a defined plan.
Category: ItemAndLoanPeriod -
Category 'ItemAndLoanPeriod' is used to help organize related term 'Item'
Term: Patron and Item -
The Term 'Patron and Item' is used to input to the rule system.
Term Function: checkLoanPeriod(String itemId,String patronBarcode, boolean isOverridden)
Normal Mode: (isOverridden == false)
1. calculateDueDate(String itemId,String patronBarcode) -
This method checks whether the patron can borrow the item using the Agenda 'Item Available for Loan', and if so, either how long or specifically what the due date it.
2. determineFineRate(String itemId,String patronBarcode) -
For overdue fines, this method will return a fine rate, including the fine period.
Override Mode: (isOverridden == true)
Need list of validation for override mode.
2. Circular Policy KRMS Model
3. Data Model : The DM for Patron is going to reside in the Rice2.x Schema
| |
KRMS offers a UI framework to setup and manage rules. With some backend code wiring, users can create and edit rules, in particular loan periods, borrower limts etc. Some of this was covered during Eric Westfall's KRMS training in March 2012, where the focus was on exercises pertaining to Circ policies. |
- Setup default parameters like Category,Context,Rules etc using UI
- Setup appropriate Term(s), FunctionLoaders, ActionTypeService etc using backend code
- Create CircPolicy (KRMS Agenda) using both above
...
Pros:
...
- User can create, view and edit rules without having to worry too much about the backend implementation details
...
Cons:
...
- For this story, simple rules using the UI doesn't for setting up rules wont suffice and needs backend setup.
- Updates to rules, enhancements and longer term extensibility is going to be very limited due to the mixed approach of UI and backend coding.
- The version of xStream being used by rice framework is not compatible with the version of xStream needed to perform some of the docstore functionalities and hence cant go too far with the UI approach (Bug Reported in Rice).
Info | ||
---|---|---|
| ||
KRMS has been utilized for Staff Upload (Batch Ingest) process in KOLE with custom setup of rules, actions etc using a profile concept; KRMS UI doesn't offer support for setting up custom rules etc, and so the intent here is to leverage what was done for staff upload for 0.6 release and extend the functionality to circ policies. We are going to abstract out the common parts such as setting up function loaders, term resolvers etc and then have specific implementations for staff upload, circ polices. This will also enable future extensibility of such custom setups. |
- Profile.xml detailing terms, rules, actions etc
- Similar to staff upload profile
- Create Circ Policy (KRMS Agenda) using existing ProfileBuilder which is a custom engine that uses a profile.xml and setups up all the rules/actions etc..
- Apply the policy to Patron type
...
Pros
...
- XML approach for defining rules, actions etc.
- Extensibility and flexibility supported by providing a generic profile concept that can then be used for setting up various agendas (policies).
- No prior KRMS knowledge required for setting up of rules etc.
- Leveraging existing profile builder for staff upload
...
Cons
...
- Complete rules set may not be viewable using the KRMS UI
- May need to provide a custom UI to export the profile xml
2. Roles (For this pass we are not going to be implementing the override'en mode)
- Full Circulation attendant - will have the all loan privileges including the approval permissions - being implemented for this pass
- Permissions
- Create a loan
- Approve a loan for borrower limit
- Approve loan for unavailable item
- Approve loan for non-circulating item
- Permissions
2. Limited circulation attendant - operator will have only the "create loan" permission - not implemented this pass
Note: Permissions will be created using DB scripts.
Creating roles and permission involves following tables:
- KRIM_ROLE_T - Insert a record to create role
- KRIM_PERM_T - Insert a record to create permission for role created
- KRIM_ROLE_PERM_T - Insert a record to map role with permission
- KRIM_PERM_ATTR_DATA_T - Insert a record for permission details
- KRIM_ROLE_MBR_T - Insert a record to map a user with a role
3. Data Model
4. Sign Off
Review complete? No (Sr.Technical Architect) - Absent
Review with Core (Handoff #2)? Yes (OLE Core Team/S&A Team) - June 26th, 2012
...