Address Book is an application/service hybrid. It allows the end user to create and store contact information in a collaborative web environment according to permissions set through the standard ACS permissions API. As a service, it also allows application programmers to leverage its extensible contact storage mechanism for other applications, such as an e-commerce order fulfillment system.
Address book stores basic identity information about each contact. Each contact may store an arbitrary number of custom attributes that may be used to contain phone numbers, notes and email addresses. Address Book relies on the places service to provide storage of an arbitrary number of street addresses per contact. The end result is a superset of the attribute and address storage provided by Palm-OS's address book application. This will enable us to write a full-featured synchronization conduit in the future.
Address Book evolved out of an ACS3.x package of the same name. The original address-book provided specific storage of all attributes, which was very limiting. A given entry could only support the number of email or street addresses originally planned when programming the application. It also provided a reminder service for birthdays. An address-book itself should not be date aware. The 4.x model is to integrate applications as completely as possible, especially considering the public APIs that are now standard with 4.x packages. This functionality should be handled by the calendar or even a new birthday reminder application that has the capability to link address-book contacts with calendar reminders.
Another disadvantage of the 3.x model of address-book was that there was no canonical storage mechanism for street addresses. Another application hoping to derive meaning from the address book data would have to be programmed to interact specifically with the table and column names of the address-book application. By using the places service for street address storage, address-book opens the storage of addresses to other applications. If a mapping package were written for ACS, it could be passed the address_id of the addresses associated with a contact and know exactly how to display a map for it. Contact addresses can even be used directly for radius searches using the places service.
Address Book was designed to take the functionality of the Palm application of the same name as a starting point. It goes from there to provide arbitrary numbers of attributes and addresses, which means greatly reducing the headache involved in keeping track of complex entries (such as a contact having home and work addresses, or many telephone numbers and email addresses). Address Book also supports single-step creation of a basic contact. There is no extra complexity just because of the more robust storage mechanism. You get the same ease-of-use of the Palm application with fully extensible storage sitting behind it.
There were two areas of address-book that were identified as focal points from the beginning of design. First, it was to be flexible. We met this requirement by providing extensible attribute and address storage. Second, it had to be easy to use. At every phase of design and development, the user experience was taken into account. Initially, there was a significant amount of JavaScript automation in the user interface. It did appear very slick, and allowed users to swap attribute locations on the page on the edit page without waiting for a page load. The problem was that it could be confusing to users unaware of the state of the actual data. The interface was pared down to the minimum. Swapping still exists, but all swaps are done on the server side in a quick operation rather than on the browser side. Forms are less confusing because there is only one committal action that can be taken per form. That is clicking on the submit button. Rather than incorporating confusing functionality on a single edit form, the user may choose to modify what they want through a number of intuitive actions directly from the view page. An additional benefit of removing JavaScript is a decreased dependence on client-side robustness. Many businesses and higher security institutions disable JavaScript on all workstations for security reasons. By eliminating this frivolous dependency, Address Book becomes fully functional on older and more unusual platforms.
ab_contact_attr_type
: Contact Attribute Type - subtype of acs_object
new
/delete
functionality.name
function that returns the pretty name of the attribute type.ab_contact_attr
: Contact Attribute - subtype of acs_object
new
/delete
functionality. The new function does not directly take a value for sort_key
.
It instead offers a before_attr_id
argument so that the application programmer need not
worry about attribute values.swap_sort
procedure that takes two attribute IDs and swaps their sort keys.ab_contact_rel
: Contact Rel - subtype of acs_rel
new
/delete
functionality.ab_contact
: Contact - subtype of acs_object
new
/delete
functionality.name
function that returns the concatenation of first_names
and last_name
.ab_contacts_complete
- A flat view of all contacts along with the primary work_phone, home_phone,
fax, other and email fields. Note that this does not attempt to join in a primary street address as this is
a complicated data structure best suited to custom logic.ab_contacts_related
- A wrapper around ab_contacts_complete
that returns all
contacts that are associated with other objects through contact_rels along with the rel_id
and
associated object_id
.
The tables associated with the object types above may be manipulated through standard legal ACS practices. Inserts and deletes should
be carried out through the PL/SQL API, but updates are allowed. Developers are advised to use the PL/SQL API to manipulate
sort_key
fields unless they are willing to accept the responsibility of keeping sort_key
s unique within a
contact in the multi-user environment (which can be a daunting task).
The User Interface of Address Book is entirely targeted at the end user. It supports a single-step contact creation to speed data entry, and a robust editing system in which the user may modify any basic information, attribute, or address by selecting it on the view page. The address book listing page is fully sortable and searchable.
Address Book takes no special configuration.
The most likely change to Address Book is a PalmOS synchronization conduit. Other features may be added as found necessary.
Document Revision # | Action Taken, Notes | When? | By Whom? |
---|---|---|---|
0.1 | Creation | 01/05/2001 | John Mileham |