How to Be a Good Elliott Citizen
Every time I go to an Elliott user site for training, I always set aside some time to discuss how to be a good Elliott citizen. It is important for Elliott users to adopt a few common practices so the Elliott system can function smoothly. I have outlined the following rules as a guideline. Most of them are related to “record locking.”
Don’t Become a Record-Locking Hog
Record locking is a necessary programming technique to prevent two users from updating the same record at the same time. For example, if user A is in the process of changing Customer 123456, then when another user B is trying to change Customer 123456, user B will receive a message indicating that Customer 123456 is currently locked. In this case, the system can handle the situation "gracefully."
In some other situations, especially in the posting routine, the system can’t handle it gracefully. If an Elliott process encounters record locking during the posting routine, the only thing the posting routine can do is to wait and display a message at the bottom of Elliott window indicating what table and record is currently locked.
As a good Elliott citizen, you should know when you are creating a record lock and avoid or minimize that situation so we can all use the system without constantly fighting one another for system resources. The following are some rules that will help you avoid locking records:
Use Inquiry Instead of Maintenance
In most of the Master File maintenance screens -- like Customer, Item and Vendor …etc.-- the system offers both “Maintenance” and “Inquiry” functions. For example, if your intention is not to update a Customer record, then you should not use Customer Maintenance. Use Customer Inquiry instead.
If you choose to use Customer Maintenance and bring up a customer record in the Change mode, you will lock that customer record. In the meantime, if someone else is performing a posting (like AR Cash Receipt Posting) and needs to update this customer record, then that user will be waiting in a lock loop until this customer record is unlocked. If you keep this customer record open on the maintenance screen and go out for lunch, than other people will really hate you.
On the other hand, if you use Customer inquiry, you do not lock the customer record. If you have to make a change to a customer record, then bring up the customer record in the Change mode, change it quickly, then exit. Being a good Elliott citizen means you will minimize your locking impact on other users.
Using the Inquiry function especially makes sense in Elliott version 8.2 and later because we now allow most of the Inquiry functions to launch an equivalent "Change" through "Special Function." Below is an example showing how you can change customer information from the Customer Inquiry screen through "Special Function."
Therefore, the chances are slim that you need to start up "Change Customer" directly. As a result, you will reduce potential locking.
Don’t Kill an Elliott Posting Routine through Task Manager
Let's say you are performing a posting routine and, in the middle, you receive a message like the following on the bottom left corner of the Elliott screen:
ARCUSFIL 031528 locked in way
This message indicates someone in your organization has locked Customer Number 031528. Most likely, that user is in the Customer File Maintenance screen.
The first thing you should do is to wait a little bit. Maybe wait 1 minute or more to see if this locking will go away by itself (when the other user exits the Customer File Maintenance screen). If the locking does not go away, you should try to find out who locked the customer record. The low tech solution is to walk around your organization to see who may be the suspect. Usually, when a user exits to the main or sub menu, all record locking should be cleared.
A more high tech solution is to use the Pervasive “Monitor” utility. You may go to the Elliott server and choose “Start” -> “All Programs” -> “Pervasive” -> “Pervasive.SQL” -> “Other Utilities” -> “Monitor”. From the “Monitor” window, choose menu “MicroKernel” -> “Active Files”.
In the “MicroKernel Active Files” window, on the left-hand pane, find and click on the “ARCUSFIL.BTR” entry (or whatever the table is that’s locked on your screen). On your right-hand pane, you will see a list of users who opened this table. Click on each user one by one. On the bottom right of your window, the user with “Record Lock Type” showing “Single” is your suspect. Go to that user and ask him or her to exit so your posting routine can continue.
Many users may choose to “Terminate” an Elliott process through Task Manager when they encounter a locking situation. You can only use the “Terminate” function as the last resort. Do not use it lightly for you may create inconsistent posting or data corruption.
Utilizing Defer ProcessingIf you are like most common Elliott users, then chances are you have not purged much of your data for many years. As a result, many report printing and posting functions require the system to scan through an entire table. Using Defer Processing to schedule your time-consuming process tasks at night can shift heavy duty tasks to the nighttime, when your users are not using the system. Also, the potential locking conflict that may be created by the posting routine can be kept to a minimum.