`Bates et al.
`
`US006247043B1
`US 6,247,043 B1
`Jun. 12, 2001
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`(54) APPARATUS, PROGRAM PRODUCTS AND
`METHODS UTILIZING INTELLIGENT
`CONTACT MANAGEMENT
`
`Primary Examiner—Paul V. Kulik
`(74) Attorney, Agent, or Firm—Wood, Herron & Evans,
`L.L.P.
`
`(75) Inventors: Cary Lee Bates; Paul Reuben Day,
`both of Rochester, MN (US)
`
`(73) Assignee: International Business Machines
`Corporation, Armonk, NY (US)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21) Appl. No.: 09/096,243
`(22) Filed:
`Jun. 11, 1998
`
`(51) Int. Cl.7 .................................................... .. G06F 19/00
`(52) US. Cl. ................ ..
`709/200; 709/206
`(58) Field of Search ................................... .. 709/203, 206,
`709/200; 707/3—5, 10
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,870,744 * 2/1999 Sprague ................................. .. 707/9
`5,913,032 * 6/1999 Schwartz et al. .
`709/213
`
`5,999,932 * 12/1999 Paul . . . . . . . . . . . . . . . . . .
`
`. . . . .. 707/10
`
`6,026,396 * 2/2000 Hall ........................................ .. 707/4
`
`OTHER PUBLICATIONS
`
`Robert Kass et al., “Intelligent Assistance for the Commu
`nication of Information in Large Organizations,” Proceed
`ings of the Eighth Conference on Arti?cial Intelligence for
`Application CAIA, pp. 171—178, 1992*
`Thomas Malone et al., “The Information Lens: An Intelli
`gent System for Information Sharing and Coordination,”
`(M.H. Olsen
`Technological Support for Work Group
`Collaboration, pp. 65—88, 1989*
`
`(57)
`
`ABSTRACT
`
`Apparatus, program products, and methods implement vari
`ous intelligent contact management operations to improve
`the productivity of users of electronic messaging systems
`and the like. To perform an intelligent name lookup, for
`example, a subset of the users in a contact database that meet
`a predetermined search criteria is identi?ed, and a favored
`user is selected therefrom based upon a predetermined
`af?nity criteria. Also, the automated addition of neW entries
`to a contact database is supported by accumulating the
`number of contacts betWeen a ?rst user and a second user,
`With a neW entry associated With the second user added to
`the contact database associated With the ?rst user in response
`to the number of contacts betWeen the ?rst and second users
`exceeding a predetermined threshold. The automated
`addressing of electronic messages is also supported by
`determining, in response to a ?rst user addressing an elec
`tronic message to a second user, Whether the second user is
`a member of an electronic messaging group that de?nes a
`plurality of member users, and if so, to address the electronic
`message to at least one additional member user in the
`electronic messaging group. The automated creation of
`electronic messaging groups is also supported by addressing
`an electronic message to a plurality of recipient users in
`response to user input, and automatically creating a neW
`electronic messaging group including the plurality of recipi
`ent users. Furthermore, the automated updating of electronic
`messaging groups is supported by addressing an electronic
`message to an electronic messaging group including a
`plurality of member users in response to user input, selec
`tively updating an address list for the electronic message in
`response to user input, and selectively updating the elec
`tronic messaging group based upon the updates to the
`address list.
`
`* cited by examiner
`
`8 Claims, 9 Drawing Sheets
`
`152
`
`180
`
`Auto-“add
`Entry
`
`ls count field
`for name >
`threshold?
`
`in local
`CDB?
`
`Copy entry for name
`to local CDB
`
`GOOGLE INC. 1004
`
`1
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 1 0f 9
`
`US 6,247,043 B1
`
`30
`
`User
`Input
`--~__
`Display
`V/
`34
`
`38
`
`31
`
`4
`
`32
`
`42
`
`processor _
`
`Memory
`_
`I
`I/
`Contact
`Communlcatlon
`Database (CDB)
`App|ication(s)
`40 +
`Operating System
`
`36
`
`_,
`/
`+
`Mass Storage
`
`Network(s)
`
`2
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 2 0f 9
`
`US 6,247,043 B1
`
`Master
`
`52
`
`Server
`
`Messaging
`Manager
`
`Server
`
`Messaging
`Manager
`
`80
`\
`\
`
`i
`
`User
`Name
`
`82
`
`/
`‘Group \
`
`86
`Priority
`
`_
`
`Flg. 4
`
`Address
`
`Next ‘ M
`
`Location lD‘s/
`Function lD's
`*
`
`K
`84
`
`90
`v Members \
`/'
`‘ 2 /
`j V
`Member
`88
`
`——m___
`Groups
`\
`
`e Grou
`82 / p
`
`*
`
`Next _
`
`*
`
`Group Flag “J81
`
`*
`*
`
`*
`
`, Next ~
`
`90
`
`,
`Member
`
`*
`
`:
`
`j
`
`91
`
`Next
`
`3
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 3 0f 9
`
`US 6,247,043 B1
`
`78
`\ Name
`92/’_“Doe, Jane
`Ffublic, John Q.
`
`C‘
`Count Location/Functionai ID's
`3
`Rochester, Engineer
`i 5
`San Jose, Lawyer
`\
`
`.1
`
`96
`
`74
`
`Flg. 5
`
`MAIL APPLICATION
`Main
`
`100
`\ Get event
`
`4/110
`
`Perform Partial
`Name Lookup
`/112
`Send/Receive
`
`Message
`
`Senq/
`Recelve
`Message?
`
`-
`
`FIQ- 6
`
`Compose
`Message?
`
`114
`’ Compose “/
`Message
`
`108
`Handle other /
`mail events
`
`155
`\ISMII
`156\
`Smith, Fred
`_
`_
`Fig. 8
`SmIIIey, Bill
`/ Smith, Stephanie
`Smith,Aaron
`
`y
`
`1
`
`T
`
`158
`
`\
`SM'W
`
`59
`1
`
`Flg' 9
`
`4
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 4 0f 9
`
`US 6,247,043 B1
`
`-
`
`Flg. 7
`
`110
`\T Perform Partial
`Name Lookup
`
`120
`\ Clear Search
`Criteria
`
`/
`
`WW’_W_‘_>_M_M_AM__A___~*W Wait for additional
`l
`input from user
`
`124_
`
`125
`
`Accept
`Displayed
`Name?
`no
`Update search
`criteria
`
`122
`
`142
`
`Contact
`
`126
`
`__._
`
`\ Build list of entries
`matching search criteria
`130
`from local CDB
`\
`_l%—_
`Build list of entries
`yes
`matching search criteria'<—
`from global CDB
`
`128
`
`—yeS/ist no
`<
`empty?
`/
`132
`
`~
`
`142
`
`is,
`
`no
`134
`Determine affinity /
`rank for each
`entry in list based
`on selected
`affinity criteria
`l 136
`Sort list according /
`to affinity rank for
`each entry in list
`
`Display most __
`favored entry
`
`no
`
`l
`
`138
`
`Multiple
`names
`enabled?
`yes
`
`*
`
`Display top N /140
`favored entries
`
`5
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 5 0f 9
`
`US 6,247,043 B1
`
`142
`
`contact type
`enabled?
`
`’
`
`ls entry in
`contact table
`\ for name?
`yes
`
`no Add entry to
`contact table
`for name
`
`Increment count field
`for name by scaled value
`based on contact type
`L
`Auto-add K152
`Entry
`
`150
`
`152
`
`DONE
`
`Fig. 12
`
`Auto-add
`Entry
`
`ls count field
`for name >
`threshold?
`
`180
`
`Is name
`in local
`CDB?
`no
`
`yes
`
`184
`
`Copy entry for name
`to local CDB
`
`—
`
`DONE
`
`Send/Receive
`Message
`
`\ Connect to
`messaging
`manager
`
`162
`
`For each
`message in
`out box?
`
`done
`
`16
`next
`4\ Send
`Message
`l
`Maintain
`Groups
`
`166
`
`clone
`
`For each
`addressee in
`message?
`
`142
`\“ Update
`Contact
`
`170\ Receive
`messages
`
`done
`
`142
`
`For each
`received
`message?
`
`next
`Update
`Contact
`
`168
`
`172
`
`Disconnect
`from messaging
`
`174
`
`manager @@
`
`6
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 6 0f 9
`
`US 6,247,043 B1
`
`114
`
`_%
`
`Compose
`Message
`
`110
`\ Perform Partial
`Name Lookup
`
`no
`
`_
`
`F lg. 13
`
`_JL
`190\ Auto-
`address
`enabled?
`
`yes
`192
`\ Auto
`Address
`
`I
`194
`\ Edit and
`compose
`message
`J
`196
`\ Put message
`in out box
`
`DONE
`
`Group Found!
`
`230
`
`I
`
`x
`
`User ‘Smith, John‘ is a member of the
`//”
`group ‘Java Team‘
`232
`
`Do you want to address the message
`to the other members of the group?
`
`/4>Accept
`
`User
`
`OK
`
`—
`
`-
`
`Flg. 15
`/ 234
`
`)40
`
`242
`
`236 / Publlc, John Q.
`
`-
`
`RejectA" _r//
`
`244
`
`238 W’
`
`246
`Save Group __J
`
`248
`Save As... ~J/
`
`7
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 7 0f 9
`
`US 6,247,043 B1
`
`192
`
`\[Auto-Address
`
`200
`
`/ls accepted
`name from local
`CO8?
`
`Fig. 14
`
`is accepted
`name a primary
`addressee?
`
`Done
`
`204
`
`yes
`Retrieve group(s) for
`accepted name
`
`206
`__J
`\z/GTroup list Yes
`xempty?
`
`n
`°
`Auto-group
`<add enabled?
`yes
`
`L___
`
`210
`
`Sort group list
`by priority
`
`212
`\ Multiple
`names
`enabled?
`
`n°
`
`216
`
`218
`\
`Add users from highest
`priority group as CC's
`if group flags not set,
`otherwise add as primary
`
`214
`/
`Display sorted
`group list and
`allow user to
`select group(s)
`
`Add users from
`selected group(s)
`as CC's if group flags
`not set, otherwise
`add as primary
`
`220
`
`Display Group
`Found dialog box
`for each group
`and build list of
`accepted names
`
`Add selected users
`as CC's if group flags
`not set, otherwise
`add as primary
`
`222
`
`8
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 8 0f 9
`
`US 6,247,043 B1
`
`166
`
`maintain
`Groups
`
`h“
`
`250
`
`Build message group
`from list of addressees
`
`251 ~
`For each
`addressee in
`message?
`next
`no /l—s name
`in local
`CDB?
`Fmessage
`
`done
`
`252
`
`254
`
`Fig. 16
`
`group already
`in group list
`for addressee?
`
`258
`
`lnc\rement yes
`
`‘_ priority for _
`r u
`9 o p
`
`Add message
`group to
`group list
`
`256
`
`300
`
`MESSAGING MANAGER
`
`[/Monitor Location Contact]
`
`'
`
`Flg' 18
`
`302
`
`Message
`sent from this
`location?
`
`306
`304
`Yes Determine J Update affinities /
`- destination
`for destination
`looation(s)
`location(s)
`
`no
`308
`\ Message
`sent to this
`location?
`
`310
`yes Determine 1 Update affinity
`source
`for source
`location
`location
`
`312
`
`314
`
`"0
`
`Retrieve
`affinities?
`
`no
`
`316
`Return ordered _/
`yes _ list of affinities
`for monitored
`locations
`
`9
`
`
`
`U.S. Patent
`
`Jun. 12, 2001
`
`Sheet 9 0f 9
`
`US 6,247,043 B1
`
`260
`
`Process Group
`Found Dialog
`
`.
`Flg
`
`262
`
`Wait for event
`
`264
`
`268
`
`274
`
`266
`_ Update local /
`CDB entry
`
`n°
`save AS’) Yes _ Get name of
`'
`group
`
`no—
`
`272
`/270 Add entry to /
`local CO8 for
`group and set
`group flag
`
`RETURN
`selected names
`
`276
`
`RETURN
`lmtames
`
`284
`
`Handle other
`dlalog box events
`
`‘
`
`10
`
`
`
`US 6,247,043 B1
`
`1
`APPARATUS, PROGRAM PRODUCTS AND
`METHODS UTILIZING INTELLIGENT
`CONTACT MANAGEMENT
`
`FIELD OF THE INVENTION
`
`The invention is generally related to computers and
`computer software. More speci?cally, the invention is
`related to contact management in electronic messaging
`systems and the like.
`
`BACKGROUND OF THE INVENTION
`
`Electronic messaging has dramatically changed the man
`ner in Which people communicate With one another in the
`digital age. Electronic messaging systems, for example,
`permit users on different computers to communicate With
`one another by transmitting information such as text mes
`sages and the like betWeen the different computers. Elec
`tronic messaging is often used to permit employees in a
`company to communicate With other employees connected
`to the company’s internal netWork, regardless of Whether
`they are in the same or another company facility. Also, due
`to the explosive groWth of the Internet, electronic messaging
`has noW become a relatively common Way for anyone With
`a computer to communicate With other computer users all
`over the World.
`In most electronic messaging systems, users are assigned
`user identi?ers, or “user id’s” that uniquely identify each
`user. Furthermore, each user is typically assigned one or
`more “mailboxes,” (also referred to as “post of?ce boxes”)
`that have a unique address so that any user Wishing to send
`an electronic message (often referred to as an “e-mail”) to
`another user can do so by addressing the electronic message
`to the mailbox assigned to that user.
`Many electronic messaging systems furthermore keep
`electronic “address books,” Which typically include contact
`databases Within Which are stored records of the mailbox
`addresses for different users. Therefore, for example, a user
`Wishing to send an electronic message to a user named John
`Smith, Whose mailbox address is “smithj @xyZcom”, is then
`able to search through an address book to ?nd an entry for
`“Smith, John”, rather than having to remember a relatively
`cryptic mailbox address that is assigned to that user.
`Some address books also store additional information
`about users, such as telephone numbers, mailing addresses,
`job titles, and other information that is more or less unrelated
`to electronic messaging. Moreover, such address books have
`also been integrated With other personal information man
`agement (PIM) tools such as electronic calendars, to-do lists,
`project planners, and meeting scheduling tools. One type of
`electronic messaging system, knoWn as “groupware”, tightly
`integrates all of these functions together to enable users that
`Work together to collaborate more effectively With one
`another.
`An address book is often referred to as a “contact
`manager,” as a user is capable of using an address book to
`maintain a Wide variety of information about many different
`people (referred to in this context as “contacts”). As the use
`of electronic messaging has become more Widespread, many
`computer users send and receive more electronic messages
`to and from a larger number of other computer users.
`Contact management therefore becomes more important for
`these users so that they can accurately keep track of other
`users With Whom they correspond.
`Particularly in many groupWare systems, a global or
`master address book is maintained on a central computer for
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`shared access by all users of such a system. A global address
`book typically includes information Rout all users of the
`system, and may include hundreds or thousands of records
`for larger organiZations.
`Any individual user often may also keep a local address
`book that contains only the users With Which that user
`regularly corresponds. HoWever, Whenever that user Wishes
`to correspond With another user that is not in his or her local
`address book, the user often must search through the global
`address book to ?nd the mailbox address for the other user
`(a process referred to as “name lookup”), Which can be
`relatively time consuming in a large global address book that
`is shared by many users.
`Some systems also permit a process knoWn as “partial”
`name lookup to permit a search to be performed concur
`rently With a user typing in the name of a user to locate in
`an address book. Often, the partial name lookup processes
`searches ?rst for matching entries in a use’s local address
`book, and if none are found, searches for matching entries in
`a global address book. For example, as a user types in the
`name “Smith, John”, a partial name lookup process Would
`retrieve all address book entries that start With a user name
`“s” after the user typed the letter “s”, then retrieve only the
`address book entries that start With the user name “sm” after
`the user typed the letter “m”, etc. Eventually, the user Would
`be left With a relatively manageable list of entries to select
`from as the intended recipient of an electronic message.
`Particularly With large global address books, partial name
`lookup can be someWhat time consuming, so it is often
`desirable to locate a desired recipient With a minimum
`number of input characters. HoWever, one problem associ
`ated With the search processes for conventional address
`books is that such processes typically order search results
`alphabetically. Therefore, for example, if a user is attempt
`ing to locate the entry for “Smith, John” in an address book
`that contains entries for users such as “Smith, Aaron”,
`“Smith, Betty”, “Smith, Fred”, “Smith, John”, “Smith,
`Joseph”, and “Smith, Stephanie”, a user typing in the letters
`“smith” Would be presented With an alphabetically-arranged
`list of these users.
`The searching user may have Worked With John Smith
`many times before, and may have never even met any of the
`other users. Or, for example, the searching user and John
`Smith may be located in the same office building, or may
`both be engineers, While the other users are located in other
`facilities or are managers, assembly line Workers, laWyers,
`etc. Nonetheless, the searching user still receives an alpha
`betical list, and he or she must scan doWn through the list of
`users before selecting the desired entry. Conventional elec
`tronic messaging systems lack any capability to suggest any
`particular entry from a list of search results on any basis
`other than alphabetically.
`Some electronic messaging systems also provide the
`ability to automatically add an entry to a user’s local address
`book in response to receiving an electronic message from
`another user. HoWever, many users receive literally hun
`dreds of electronic messages a day, With many coming from
`other users that a particular user has no intention of ever
`corresponding With again. Creating an entry for each and
`every user that sends a message can signi?cantly clutter up
`a user’s local address book and make it more dif?cult for the
`user to locate speci?c entries. Moreover, a user may be
`required to periodically sWeep through his or her local
`address book and remove all useless entries—a process that
`can be Wasteful and time consuming.
`Many electronic messaging systems further permit users
`to be grouped together into “groups” that can be separately
`
`11
`
`
`
`US 6,247,043 B1
`
`3
`named and utilized to send electronic messages to multiple
`users at once. However, management of groups can become
`someWhat burdensome, as a user is typically required to
`manually create the groups by locating and adding each
`desired user to the groups. Furthermore, unless the user can
`remember the particular name assigned to a group, the user
`must either perform a search for the group or manually
`address an electronic message to each member of the group
`individually. These additional steps often distract a user and
`consume additional time, thereby decreasing a user’s pro
`ductivity.
`It should therefore be appreciated that the contact man
`agement capabilities of many conventional electronic mes
`saging systems are signi?cantly limited and can often have
`a negative impact on user productivity. Therefore, a signi?
`cant need has arisen for a manner of improving electronic
`messaging systems to provide for more intelligent and useful
`contact management.
`
`SUMMARY OF THE INVENTION
`The invention addresses these and other problems asso
`ciated With the prior art by providing apparatus, program
`products, and methods that implement various intelligent
`contact management operations to improve the productivity
`of users of electronic messaging systems and the like.
`Consistent With one aspect of the invention, intelligent
`name lookup functionality may be supported to facilitate
`location of a user from a contact database such as an address
`book or the like. In particular, a particular user may be
`suggested among multiple possible candidates by recogniZ
`ing that some users may have a greater “affinity” to a
`particular user than to other users, and thus, may be more
`likely to be the intended subjects of a name lookup opera
`tion. For example, tWo users that have corresponded With
`one another in the past may be considered to have a greater
`af?nity than tWo users that have not. Similarly, tWo users that
`Work in the same facility or in the same building, or that both
`have the same type of job, likely have a greater affinity than
`tWo users that are located in other facilities or that perform
`vastly different jobs. By identifying one or more of these
`characteristics of possible candidates, often a relatively
`intelligent suggestion may be made as to Which of such
`candidates is the likely lookup target for a particular user.
`Intelligent name lookup consistent With the invention
`identi?es a subset of the users in a contact database that meet
`a predetermined search criteria. A favored user is selected
`therefrom based upon a predetermined af?nity criteria.
`Furthermore, a display representation associated With the
`favored user is displayed. As a result, a user may be
`presented With a suggested user among the multiple identi
`?ed users, thereby providing more helpful search results and
`potentially shortening the time required to locate a particular
`user stored in the contact database.
`Consistent With another aspect of the invention, intelli
`gent contact database management functionality may also be
`supported to facilitate the automated addition of neW entries
`to the contact database for a given user. In particular,
`consistent With the invention the number of contacts
`betWeen a ?rst user and a second user are accumulated, and
`a neW entry associated With the second user is added to the
`contact database associated With the ?rst user in response to
`the number of contacts betWeen the ?rst and second users
`exceeding a predetermined threshold. It is anticipated that
`requiring a threshold to be exceeded prior to automatically
`adding any entry in a contact database may result in a higher
`probability that such added entries are meaningful and
`helpful to a user.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`4
`Consistent With another aspect of the invention, additional
`functionality may be supported to facilitate the use of
`electronic messaging groups. In particular, automated
`addressing of electronic messages may be provided,
`Whereby, in response to a ?rst user addressing an electronic
`message to a second user, a determination is made Whether
`the second user is a member of an electronic messaging
`group that de?nes a plurality of member users. If the second
`user is a member of the electronic messaging group, the
`electronic message is addressed to at least one additional
`member user in the electronic messaging group.
`Consistent With a further aspect of the invention, addi
`tional functionality may be supported to facilitate the man
`agement of electronic messaging groups. In particular, the
`automated creation of electronic messaging groups may be
`provided, Whereby an electronic message is addressed to a
`plurality of recipient users in response to user input, and a
`neW electronic messaging group is automatically created
`including the plurality of recipient users. Also, the auto
`mated updating of electronic messaging groups may be
`provided, Whereby an electronic message is addressed to an
`electronic messaging group including a plurality of member
`users in response to user input, an address list for the
`electronic message is selectively updated in response to user
`input, and the electronic messaging group is selectively
`updated based upon the updates to the address list.
`These and other advantages and features, Which charac
`teriZe the invention, are set forth in the claims annexed
`hereto and forming a further part hereof. HoWever, for a
`better understanding of the invention, and of the advantages
`and objectives attained through its use, reference should be
`made to the DraWings, and to the accompanying descriptive
`matter, in Which there is described exemplary embodiments
`of the invention.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a block diagram of a computer system consistent
`With the invention.
`FIG. 2 is a block diagram of an exemplary hardWare and
`softWare environment consistent With the invention.
`FIG. 3 is a block diagram illustrating the primary softWare
`components in an electronic messaging system consistent
`With the invention.
`FIG. 4 is a block diagram of a contact database entry from
`one of the contact databases in FIG. 3.
`FIG. 5 is a block diagram of a contact table from one of
`the contact databases in FIG. 3.
`FIG. 6 is a ?oWchart illustrating the program How of a
`main routine executed by a mail application in one of the
`client computers of FIG. 3.
`FIG. 7 is a ?oWchart illustrating the program How of the
`partial name lookup routine of FIG. 6.
`FIG. 8 is a block diagram illustrating an exemplary
`multiple entry display representation of a favored entry
`consistent With the invention.
`FIG. 9 is a block diagram illustrating an exemplary single
`entry display representation of a favored entry consistent
`With the invention.
`FIG. 10 is a ?oWchart illustrating the program How of the
`update contact routine of FIG. 7.
`FIG. 11 is a ?oWchart illustrating the program How of the
`send/receive message routine of FIG. 6.
`FIG. 12 is a ?oWchart illustrating the program How of the
`auto-add entry routine of FIG. 10.
`
`12
`
`
`
`US 6,247,043 B1
`
`5
`FIG. 13 is a ?owchart illustrating the program ?ow of the
`compose message routine of FIG. 6.
`FIG. 14 is a ?owchart illustrating the program ?ow of the
`auto-address routine of FIG. 13.
`FIG. 15 is a block diagram of a group found dialog box
`used by the autoaddress routine of FIG. 14.
`FIG. 16 is a ?owchart illustrating the program ?ow of the
`maintain groups routine of FIG. 11.
`FIG. 17 is a ?owchart illustrating the program ?ow of a
`process dialog box routine for the group found dialog box of
`FIG. 15.
`FIG. 18 is a ?owchart illustrating the program ?ow of a
`monitor location contacts routine executed by a messaging
`manager in one of the servers of FIG. 3.
`
`DETAILED DESCRIPTION
`
`Hardware and Software Environment
`
`Turning to the Drawings, wherein like numbers denote
`like parts throughout the several views, FIG. 1 illustrates a
`computer system 10 consistent with the invention. Computer
`system 10 is illustrated as a networked computer system
`including one or more client computers 12, 13, 14 and 20
`(e.g., desktop or PC-based computers, workstations, etc.)
`coupled to one or more servers 16, 17 (e.g., PC-based
`servers, minicomputers, midrange computers, mainframe
`computers, etc.) through a network 18. Network 18 may
`represent practically any type of networked interconnection,
`including but not limited to local-area, wide-area, wireless,
`and public networks (e.g., the Internet), and combinations
`thereof. Moreover, any number of computers and other
`electronic devices may be networked through network.
`Client computer 20, which may be similar to computers
`12, 14, may include a central processing unit (CPU) 21; a
`number of peripheral components such as a computer dis
`play 22; a storage device 23; a printer 24; and various input
`devices (e.g., a mouse 26 and keyboard 27), among others.
`Server computers 16 and 17 may be similarly con?gured,
`albeit typically with greater processing performance and
`storage capacity, as is well known in the art.
`FIG. 2 illustrates in another way an exemplary hardware
`and software environment for an apparatus 30 consistent
`with the invention. For the purposes of the invention,
`apparatus 30 may represent practically any type of
`computer, computer system or other programmable elec
`tronic device, including a client computer (e.g., similar to
`computers 12, 13, 14 and 20 of FIG. 1), a server computer
`(e.g., similar to servers 16 and 17 of FIG. 1), a portable
`computer, an embedded controller, etc. Apparatus 30 may be
`coupled in a network as shown in FIG. 1, or may be a
`stand-alone device in the alternative. Apparatus 30 will
`hereinafter also be referred to as a “computer”, although it
`should be appreciated the term “apparatus” may also include
`other suitable programmable electronic devices consistent
`with the invention.
`Computer 30 typically includes at least one processor 31
`coupled to a memory 32. Processor 31 may represent one or
`more processors (e.g., microprocessors), and memory 32
`may represent the random access memory (RAM) devices
`comprising the main storage of computer 30, as well as any
`supplemental levels of memory, e.g., cache memories, non
`volatile or backup memories (e.g., programmable or ?ash
`memories), read-only memories, etc. In addition, memory
`32 may be considered to include memory storage physically
`located elsewhere in computer 30, e.g., any cache memory
`
`6
`in a processor 31, as well as any storage capacity used as a
`virtual memory, e.g., as stored on a mass storage device 36
`or on another computer coupled to computer 30 via network
`38.
`Computer 30 also typically receives a number of inputs
`and outputs for communicating information externally. For
`interface with a user or operator, computer 30 typically
`includes one or more user input devices 33 (e.g., a keyboard,
`a mouse, a trackball, a joystick, a touchpad, and/or a
`microphone, among others) and a display 34 (e.g., a CRT
`monitor, an LCD display panel, and/or a speaker, among
`others). It should be appreciated, however, that with some
`implementations of computer 30, e.g., some server
`implementations, direct user input and output may not be
`supported by the computer.
`For additional storage, computer 30 may also include one
`or more mass storage devices 36, e.g., a ?oppy or other
`removable disk drive, a hard disk drive, a direct access
`storage device (DASD), an optical drive (e.g., a CD drive,
`a DVD drive, etc.), and/or a tape drive, among others.
`Furthermore, computer 30 may include an interface with one
`or more networks 38 (e.g., a LAN, a WAN, a wireless
`network, and/or the Internet, among others) to permit the
`communication of information with other computers
`coupled to the network. It should be appreciated that com
`puter 30 typically includes suitable analog and/or digital
`interfaces between processor 31 and each of components 32,
`33, 34, 36 and 38 as is well known in the art.
`Computer 30 operates under the control of an operating
`system 40, and executes various computer software
`applications, components, programs, objects, modules, etc.
`(e.g., communication application 42 and contact database
`44, among others). Moreover, various applications,
`components, programs, objects, modules, etc. may also
`execute on one or more processors in another computer
`coupled to computer 30 via a network 38, e.g., in a distrib
`uted or client-server computing environment, whereby the
`processing required to implement the functions of a com
`puter program may be allocated to multiple computers over
`a network.
`In general, the routines executed to implement the
`embodiments of the invention, whether implemented as part
`of an operating system or a speci?c application, component,
`program, object, module or sequence of instructions will be
`referred to herein as “computer programs”, or simply “pro
`grams”. The computer programs typically comprise one or
`more instructions that are resident at various times in various
`memory and storage devices in a computer, and that, when
`read and executed by one or more processors in a computer,
`cause that computer to perform the steps necessary to
`execute steps or elements embodying the various aspects of
`the invention. Moreover, while the invention has and here
`inafter will be described in the context of fully functioning
`computers and computer systems, those skilled in the art will
`appreciate that the various embodiments of the invention are
`capable of being distributed as a program product in a
`variety of forms, and that the invention applies equally
`regardless of the particular type of signal bearing media used
`to actually carry out the distribution. Examples of signal
`bearing media include but are not limited to recordable type
`media such as volatile and non-volatile memory devices,
`?oppy and other removable disks, hard disk drives, optical
`disks (e.g., CD-ROM’s, DVD’s, etc.), among others, and
`transmission type media such as digital and analog commu
`nication links.
`In addition, various programs described hereinafter may
`be identi?ed based upon the application for which they are
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`13
`
`
`
`US 6,247,043 B1
`
`7
`implemented in a speci?c embodiment of the invention.
`However, it should be appreciated that any particular pro
`gram nomenclature that follows is used merely for
`convenience, and thus the invention should not be limited to
`use solely in any speci?c application identi?ed and/or
`implied by such nomenclature.
`Those skilled in the art Will recognize that the exemplary
`environments illustrated in FIGS. 1 and 2 are not intended
`to limit the present invention. Indeed, those skilled in the art
`Will recognize that other alternative hardWare and/or soft
`Ware environments may be used Without departing from the
`scope of the invention.
`
`Electronic Messaging With Intelligent Contact
`Management
`As discussed above, the various embodiments of the
`invention implement several intelligent contact management
`features to improve the performance and usability of an
`electronic messaging system. One typical arrangement of an
`electronic messaging system implementation 50 is illus
`trated in greater detail in FIG. 3. Electronic messaging
`system 50 is distributed over one or more servers (e.g.,
`servers 51, 52) and one or more clients (e.g., 54, 56 and 58
`coupled to server 51, and clients 60 and 62 coupled to server
`52). Server 51 includes a messaging manager application 64
`coupled to a master contact database 66. The messaging
`manager application may be any form of server-based elec
`tronic messaging application, e.g., a mail or groupWare
`server, among others. Moreover, master contact database 66
`may be