Known CML Issues
The Corporate Media Library (CML) application meets its design specifications in most ways, but not all. The items in the following list describe the areas in which it can be improved. These areas differ from those in the Future Enhancements section; these represent ways in which the current design is not fulfilled, and those in Future Enhancements represent changes to the design of the CML. In many cases, the issues in this list are simply unimplemented features.
- Send e-mail to borrowers to alert them their requested library materials have been checked out. Although this functionality was planned for the CML application, it was never implemented. To add it, you would probably use the xp_sendmail extended stored procedure. For more information on using xp_sendmail, refer to the stored procedure fm_admin_send_notice.
- Enable recall of library items. This is the functionality to recall books that are not yet due because new requests have arrived for them. It has not yet been implemented in the CML application. The stored procedures (fm_admin_recall_notices and fm_admin_send_recall) for this functionality exist but may not yet work correctly. Debugging this feature is left as an exercise for the reader. Hint: You will need to use SQL Server Agent to schedule these stored procedures.
- Clicking author, subject links returns unfiltered recordset. When searching for library materials, the filtering selections (the check boxes on the Library Search page that determine media types to include in the search) are ignored when clicking author and subject links. For example, books are returned whether or not the option to include books is selected. See DSearch.asp and Library.asp.
- ISBN should not always be required. An ISBN number should be required only for books and periodicals, not other media types. Likewise, publisher information should also not be required. You should be able to enter NULL values for both, and the client-side script should allow missing values for these fields. However, because the exact nature of the requirements for a variety of organizations is hard to define, this functionality has been left intact in the CML. It is easier to remove unnecessary client-side data validation than it would be to add it later. See the files Verify.asp and AddTitles.asp.
- Cached search results do not cause an event. Clicking the Back button to return to the search results pages will cause RDS to reuse the client-side cache. However, since the dataset has not changed, no event is fired. If this happens, the "Please Wait..." message is never removed. Clicking the sort buttons causes the data to appear.
- Collections instead of recordsets. Some of the CML components return ADO Recordset objects, for instance the Available property of the Admin component. Since CML components are running outside the IIS process (in the MTS context), it takes extra work to invoke these properties as recordsets are marshaled and returned across process boundaries. Rather than returning raw recordset objects, we could improve the performance of the CML application by using "collection" objects to wrap recordset functionality. Then, it would be possible to perform actions like the following loop (in Visual Basic®):
For Each item In oAdmin.Available(nBibNo)
Response.Write item.Barcode & "<br>"
Next
This change was not implemented because the existing object model was already in extensive use. It could be implemented in the future.
- Takes a long time to display a list of requests. This applies to both ViewRequests.asp and ViewMyRequests.asp. Probably, the marshalling of recordsets is at the root of the problem. Marshalling recordsets across process boundaries is time-consuming and adversely affects performance. In ViewRequests.asp, the CML first requests a single recordset (Admin.Requests), and then for each row, it requests another recordset (Admin.Available). In ViewMyRequests.asp, recordsets from User.Requests, and User.Checkouts are used. (See the previous recommendation about object collections.)
- Use full author name and subject text in title of search results. The CML application currently displays the variables auth# and subj# in the title of the Search Results page (displayed in the title bar of the browser window). Rather than just displaying this number, using the full author name or subject text would make it easier to identify the book or item, and to return to the correct page using the browser's Back button.
- A person can cancel another's requests by knowing their e-mail address. You can view a person's requests simply by typing, in the address bar, "ViewMyRequests.asp?Logon=" followed by the user's e-mail alias. Especially mischevious users could even cancel another user's requests. Given that users of the application are subject to less stringent security requirements than administrators, there may be no solution to this problem. Fortunately, the complete URL for ViewMyRequests is not displayed on the browser's Address bar, which should make it less likely that this weakness will be exploited.
- Administrators should be able to view all items checked out. This would make it easier to tell what can be checked in to match requests. Administrators can view checkouts by alias, but there is no single location for viewing all checkouts, or overdue materials, for that matter.
To add this, consider starting with the following query:
SELECT * from item where due_date < getdate()
- Keep menu options visible while moving through the site. Make more use of the menu options on the home page by keeping them visible on the left while moving about the CML site. This would mean using the right side of the page more, and possibly redesigning the general navigational scheme for the CML application. This major redesign would be a big task.
- SearchType is ignored. This is a self-reported error in the Search component source file. Because the CML user interface does not expose alternate full-text search types (such as INFLECTIONAL, or FREETEXT), it was not a high priority to support them in CML.
- Admin Wizard works best with medium font size. If the library user increases the font size, screen elements — sometimes text but usually buttons — overlap in the pages AddTitles.asp and AddItems.asp. Fixing the problem would require additional script to determine the user's font size and modify the positioning of <DIV>s appropriately.