Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6088717
Reed , ; et al.
July 11, 2000
Title
Computer-based communication system and method using metadata defining a control-structure
Abstract
An automated communications system operates to transfer data, metadata and methods from a provider computer to a consumer computer through a communications network. The transferred information controls the communications relationship, including responses by the consumer computer, updating of information, and processes for future communications. Information which changes in the provider computer is automatically updated in the consumer computer through the communications system in order to maintain continuity of the relationship. Transfer of metadata and methods permits intelligent processing of information by the consumer computer and combined control by the provider and consumer of the types and content of information subsequently transferred. Object oriented processing is used for storage and transfer of information. The use of metadata and methods further allows for automating may of the actions underlying the communications, including communication acknowledgements and archiving of information. Service objects and partner servers provide specialized data, metadata, and methods to providers and consumers to automate many common communications services and transactions useful to both providers and consumers. A combination of the provider and consumer programs and databases allows for additional functionality, including coordination of multiple users for a single database.
Inventors:
Reed; Drummond Shattuck
(Seattle,
WA
)
, Heymann; Peter Earnshaw
(Seattle,
WA
)
, Mushero; Steven Mark
(Seattle,
WA
)
, Jones; Kevin Benard
(Seattle,
WA
)
, Oberlander; Jeffrey Todd
(Seattle,
WA
)
Assignee:
OneName Corporation
(Seattle,
WA
)
Appl. No.:
143888
Filed:
August 31, 1998
Current U.S. Class:
709/201
709/212
709/227
709/229
709/242
709/244
707/10
707/104.1
707/203
707/204
Field of Search:
709/200-203,212,216-219,227-229,232,242-244 707/1,9-10,100-104,200-204
U.S. Patent Documents
4274139
June 1981
Hodgkinson et al.
4432057
February 1984
Daniell et al.
4558413
December 1985
Schmidt et al.
4604686
August 1986
Reiter et al.
4714992
December 1987
Gladney et al.
4714995
December 1987
Materna et al.
4745559
May 1988
Willis et al.
4746559
May 1988
Nishikawa
4815030
March 1989
Cross et al.
4974149
November 1990
Valenti
5008814
April 1991
Mathur
5008853
April 1991
Bly et al.
5019963
May 1991
Alderson et al.
5133075
July 1992
Risch
5155847
October 1992
Kirouac et al.
5187787
February 1993
Skeen et al.
5220657
June 1993
Bly et al.
5226161
July 1993
Khoyi et al.
5257369
October 1993
Skeen et al.
5287504
February 1994
Carpenter et al.
5303379
April 1994
Khoyi et al.
5359730
October 1994
Marron
5404488
April 1995
Kerrigan et al.
5426747
June 1995
Weinreb et al.
5440744
August 1995
Jacobson et al.
5452447
September 1995
Nelson et al.
5473772
December 1995
Halliwell et al.
5485370
January 1996
Moss et al.
5491820
February 1996
Belove et al.
5495610
February 1996
Shing et al.
5497491
March 1996
Mitchell et al.
5499343
March 1996
Pettus
5515508
May 1996
Pettus et al.
5519769
May 1996
Weinberger et al.
5519875
May 1996
Yokoyama et al.
5528490
June 1996
Hill
5548726
August 1996
Pettus
5555427
September 1996
Aoe et al.
5557793
September 1996
Koerber
5560012
September 1996
Ryu et al.
5564051
October 1996
Halliwell et al.
5566302
October 1996
Khalidi et al.
5577244
November 1996
Killebrew et al.
5581755
December 1996
Koerber et al.
5581761
December 1996
Radia et al.
5581764
December 1996
Fitzgerald et al.
5586311
December 1996
Davies et al.
5586326
December 1996
Ryu et al.
5596720
January 1997
Hamada et al.
5596746
January 1997
Shen et al.
5600834
February 1997
Howard
5608874
March 1997
Ogawa et al.
5615112
March 1997
Liu Sheng et al.
5619710
April 1997
Travis, Jr. et al.
5623656
April 1997
Lyons
5623661
April 1997
Hon
5625818
April 1997
Zarmer et al.
5628005
May 1997
Hurvig
5630092
May 1997
Carreiro et al.
5630116
May 1997
Takaya et al.
5634010
May 1997
Ciscon et al.
5640564
June 1997
Hamilton et al.
5644710
July 1997
Johnson et al.
5644764
July 1997
Johnson et al.
5649192
July 1997
Stucky
5652887
July 1997
Dewey et al.
5668997
September 1997
Lynch-Freshner et al.
5673322
September 1997
Pepe et al.
5682532
October 1997
Remington et al.
5684984
November 1997
Jones et al.
5684991
November 1997
Malcolm
5689708
November 1997
Regnier et al.
5706434
January 1998
Kremen et al.
5710918
January 1998
Lagarde et al.
5721911
February 1998
Ha et al.
5761677
June 1998
Senator et al.
5761678
June 1998
Bendert et al.
Other References
C Bowman, P. Danzig, D. Hardy, U. Manber, M. Schwartz & D. Wessels "Harvest: A Scalable, Customizable Discovery and Access System" Mar. 12, 1995. .
D. Hardy & M. Schwartz "Customized Information Extraction as a Basis for Resource Discovery" Mar., 1994. .
William G. Camargo "The Harvest Broker", Dec., 1994. .
D. Bulterman, G. van Rossum and R. van Liere "A Structure for Transportable, Dynamic Multimedia Documents" USENIX, Summer '91 Nashville, TN. .
G. Almes and C. Holman "Edmas: An Object-Oriented, Locally Distributed Mail .
System" IEEE Transactions on Software Engineering, Sep., 1987. .
G. Almes, A. Black, C. Bunje and D. Wiebe "Edmas: A Locally Distributed Mail System" IEEE, 1984. .
W. Bender, H. Lie, J. Orwant, L. Teodosio, & N. Abramson "Newspace: Mass Media and Personal Computing", USENIX--Summer '91--Nashville, TN. .
R. Thomas, H. Forsdick, T. Crowley, R. Schaaf, R. Tomlinson & V. Travers "Diamond: A Multimedia Message System Built on a Distributed Architecture" IEEE, Dec. 1985. .
S. Ramanathan & P. V. Rangan "Architectures for Personalized Multimedia" IEEE, 1994. .
N. Yankelovich, B. Haan, N. Mevrowitz & S. Drucker "Intermedia: The Concept and the Construction of a Seamless Information Environment" IEEE, Jan. 1988. .
D. Woekl, W. Kim & W. Luther "An Object-Oriented Approach to Multimedia Databases" ACM 1986. .
N. Borenstein, C. Everhart, J. Rosenberg, A. Stoller "A Multi-media Message System for Andrew" USENIX Winter Conference Feb., 1988. .
S. Jackson & N. Yankelovich "InterMail: A Prototype Hypermedia Mail System" Hypertext 91 Proceedings Dec. 1991. .
E. Hoffert & G. Gretsch "The Digital News System at Educom: A Convergence of Interactive Computing, Newspapers, Television and High Speed Networks" Communications of the ACM Apr. 1991. .
D. Crocker, E. Szurkowski & D. Farber "An Internetwork Memo Distribution Capability--MMDF" IEEE ACM 1979. .
Douglas Engelbart "Authorship Provisions in Augment" IEEE, 1984. .
J.J. Garcia-Luna-Aceves "Towards Computer-Based Multimedia Information Systems" Computer Message Systems 85, 1986. .
Debra P. Deutsch "Implementing Distribution Lists in Computer-Based Message Systems" Computer-Based Message Services, IFIP, 1984. .
T. Purdy, D. Thorslund & N. Witchlow "Meridian SL Messaging" Computer Message Systems--85 IFIP, 1986. .
Michael Tschichholz "Message Handling System: Requirements to the User Agent" Computer Message Systems--85, IFIP, 1986. .
Lother Wosnitza "Group Communication in the MHS Context" Computer Message Systems 85 IFIP, 1986. .
Jacob Palme "Distribution Agents (mailing lists) in Message Handling Systems" Computer Message Systems 85 IFIP, 1986. .
Teresa F. Lunt "A Model for Message System Security" Computer Message Systems 85 IFIP, 1986. .
A. Roger Kave "A User Agent for Multiple Computer-Based Message Services" Computer-Based Message Services, IFIP 1984. .
Paul Wilson "Structures for Mailbox System Applications" Computer-Based Message Services, IFIP 1984. .
J. Postel, G. Finn, A. Katz & J. Reynolds "The ISI Experimental Multimedia Mail System" Information Sciences Institute, Sep. 1986. .
E. Moeller, A. Scheller & G. Schurmann "Distributed Processing of Multimedia Information" IEEE Computer Society Proceedings May 28-Jun. 1, 1990. .
Richard L. Phillips "An Interpersonal Multimedia Visualization System" IEEE Computer Graphics & Applications IEEE 1991. .
Jacob Palme "You Have 134 Unread Mail! Do You Want to Read Them Now?" Computer-Based Message Services IFIP, 1984. .
Michael Caplinger "An Information System Based on Distributed Objects" OOPSLA '87 Proceedings. .
M. Papa, G. Ragucci, G. Corrente, M. Ferrise, S. Giurleo and D. Vitale "The Development of an Object-Oriented Multimedia Information System" Lecture Notes in Computer Science, Sep., 1994. .
Silvano Maffeis "A Flexible System Design to Support Object-Groups and Object-Oriented Distributed Programming" Lecture Notes in Computer Science, Jul. 1993. .
R. Gotze, H. Eirund & R. Claa.beta.en "Object-Oriented Dialog Control for Multimedia User Interfaces" Lecture Notes in Computer Science--Human Computer Interaction Sep. 1993. .
Chris Maeda "A Metaobject Protocol for Controlling File Cache Management" Lecture Notes in Computer Science, Mar., 1996. .
A. Joseph, A. deLespinasse, J. Tauber, D. Gifford & M. Kaashoek "Rover A Toolkit for Mobile Information Access" SIGOPS '95 1995 ACM. .
Wolfgang Lux "Adaptable Object Migration: Concept and Implemenetaion" Operating Systems Review Apr., 1995. .
R. Campbell, N. Islam, R. Johnson, P. Kougiouris & P. Madany "Choices, Frameworks and Refinement" Deptment of Computer Science, University of Illinois, Dec. 1991. .
Klemens Bohm & Thomas C. Rakow "Metadata for Multimedia Documents" SIGMOD Record, vol. 23, No. 4, Dec. 1994. .
Simon Gibbs "Composite Multimedia and Active Objects" OOPSLA '91. .
T. Purdin, R. Schlichting & G. Andrews "A File Replication Facility for Berkeley Unix" Software Practive and Experience, vol. 17, Dec. 1987. .
A. Black, N. Hutchinson, E. Jul & H. Levy "Object Structure in the Emerald System" OOPSLA '86 Proceedings. .
Daniel T. Chang "Coral: A Concurrent Object-Oriented System for Constructing and Executing Sequential, Parallel and Distributed Applications" OOPS Messenger, Apr. 1991. .
A. Birrell, G. Nelson, S. Owicki & E. Wobber "Network Objects" Proceedings of the 14th ACM Symposium on Operating Systems Principles, Dec. 5-8, 1993. .
Jacques Ferber "Computational Reflection in Class based Object Oriented Languages" OOPSLA '89 Proceedings. .
C. Fung & M. Pong "MOCS: an Object-Oriented Programming Model for Multimedia Object Communication and Synchronization" 1994 IEEE. .
T. Hase & M. Matsuda "A New Audio-Visual Control Using Message Object Transmission", 1994 IEEE, Nov., 1994. .
F. Horn & J. Stefani "On Programming and Supporting Multimedia Object Synchronization" The Computer Journal, vol. 36, No. 1, 1993. .
T. Little & A. Ghafoor Spatio-Temporal Composition of Distributed Multimedia Objects for Value-Added Networks, IEEE 1991. .
M. Vazirgiannis & C. Mourlas "An Object-Oriented Model for Interactive Multimedia Presentations" The Computer Journal, vol. 36, No. 1, 1993. .
T. Little & A. Ghafoor "Synchronization and Storage Models for Multimedia Objects" 1990 IEEE Apr. 1990. .
Cosmos Nicolaou "An Architecture for Real-Time Multimedia Communication Systems", 1990 IEEE, Apr., 1990. .
Ralf Steinmetz "Synchronization Properties in Multimedia Systems" 1990 IEEE, Apr. 1990. .
T. Little & A. Ghafoor "Network Considerations for Distributed Multimedia Object Composition and Communication" 1990 IEEE Network Magazine, Nov., 1990. .
K. Smith and S. Zdonik "Intermedia: A Case Study of the Differences Between Relational and Object-Oriented Database Systems" OOPSLA '87 Proceedings. .
S. Ramanathan & P. Rangan "Architectures for Personalized Multimedia" 1994 IEEE. .
Marvin Sirbu and J.D. Tygar, "Netbill: An Internet Commerce system Optimized For Network-Delivered Services", IEEE Personal Communications Magazine, p. 34-39, Aug. 1995. .
Henrik Eriksson, "Expert System As Knowledge Servers", IEEE Expert Magazine, p. 14-19, Jun. 1996. .
Budi Yuwono and Dik Lun Lee, "Wise: A World Wide Web Resource Database System", IEEE Transactions on Knowledge and Data Engineering, vol. 8, No. 4, Aug. 1996. .
H. Penny Nii "Blackboard Systems" The AI Magazine, Summer, 1986. .
AppleShare, Apr. 1995. .
"Manual Page for Unix NFS Mount Command" No Date. .
"Manual Page for Unix FSTAB Command" No Date. .
Phil Lapsley and Brian Kantor "Network News Transfer Protocol", Feb. 1986. .
Brain Kantor and Phil Lapsley, Network News Transfer Protocol, "A Proposed Standard for the Stream-Based Transmission of News", Feb. 1986. .
M. Crispin "Network Working Group", University of Washington, Dec., 1996. .
Terry Gray Comparing Two Approaches to Remote Mailbox Access: IMAP vs. POP, University of Washington No Date. .
Terry Gray "Message Access Paradigms and Protocols", University of Washington, Aug. 1995..~
Primary Examiner:
Matar; Ahmad F.
Assistant Examiner:
Barot; Bharat
Attorney, Agent or Firm:
Wolf, Greenfield & Sacks, P.C.
Parent Case Text
This application is a continuation of application Ser. No. 08/722,314, filed Sep. 27, 1996 (allowed) now U.S. Pat. No. 5,862,325 which is a continuation-in-part of application Ser. No. 08/609,115, filed Feb. 29, 1996 (pending).
Claims
What is claimed is:
1. A node for use in a computer-based communications system which includes multiple nodes arranged and adapted to intercommunicate via a communications network, said node characterized by:
(A) storage means for storing information;
(B) association means for associating portions of said information with metadata, said metadata defining a control structure which is transferred in either direction between said node and a second node of said system to associate with said associated information processes which execute instructions external to said control structure to control communications of said associated information, said metadata including at least one of
(1) update metadata which associates with said associated information a process for determining when said portions of said information associated by said metadata have been updated and transfer metadata which associates a process for controlling the transfer at least a portion of said updated information,
(2) data exchange metadata which associates with said associated information a process for controlling the transfer of feedback information, said feedback information including at least a portion of said information stored at the receiving node, and
(3) receipt processing metadata which associates with said associated information a process for determining the processing of said associated information by comparison to an associated version of said control structure; and
(C) communications means for at least one of
(1) transferring said information, including said metadata defining said control structure, to said second node to control at least one of
(a) transferring said updated in formation to said second node,
(b) receiving said feedback information from said second node, and
(c) processing said feedback information, and
(2) receiving said information, including said metadata defining said control structure, from said second node to control at least one of
(a) receiving said updated information from said second node,
(b) processing said updated information, and
(c) transferring said feedback information to said second node.
2. The node of claim 1 further characterized by processing means for executing said processes associated by said metadata to control communications of said information.
3. The node of claim 2 wherein the instructions executed by said processes associated by said control structure are transferred as part of said information.
4. The node of claim 1 wherein said metadata includes self-reference metadata describing an association with said control structure.
5. The node of claim 2 wherein said processing means processes said feedback information to modify said metadata defining said control structure.
6. The node of claim 1 wherein multiple instances of said metadata are transferred to said node, and wherein at least one of said processes is associated with more than one of said instances.
7. The node of claim 1 wherein multiple instances of said metadata are transferred to said node, and wherein said a portion of said information is associated with more than one of said instances.
8. The node of claim 1 further characterized by unique identifier generation means for generating unique system data uniquely identifying portions of said information in said system; and
wherein said metadata includes unique identifier metadata describing associations between said unique system data and said portions of said information.
9. The node of claim 1 further characterized by unique identifier association means for creating metadata which associates said control structure with at least one unique identifier from among a plurality of unique identifiers stored at said second node.
10. The node of claim 9 wherein said unique identifier is a representation of a human-language name.
11. The node of claim 1 further characterized by version means for generating state data identifying a state of a portion of said information when said portion of said information is changed; and
wherein said metadata includes version metadata associating said state data and said portion of said information.
12. The node of claim 1 wherein said information includes data types and wherein said metadata includes data type metadata associating said data types and said portions of said information.
13. The node of claim 1 wherein said information has data relationships and said metadata includes data relationship metadata describing said data relationships.
14. The node of claim 13 wherein said data relationships include at least one of container, composite, aggregate, and sequence.
15. The node of claim 2 wherein said processing means includes means for translating said information according to a selected markup language based upon processing of said control structure.
16. The node of claim 2 wherein said information includes preference information representing actions to occur in connection with said associated information, and said metadata includes preference metadata describing associations between said preference information and said associated information; and
wherein said processing means includes preference means for processing said preference metadata to control said actions.
17. The node of claim 2, wherein said information includes acknowledgment information representing a transfer of said associated information at least one of to and from said second node, and said metadata includes acknowledgment metadata associating said acknowledgment information, said second node, and said associated information; and
wherein said processing means includes acknowledgment means for processing said acknowledgment metadata to control further actions with regard to communications of said associated information.
18. The node of claim 2 wherein said information includes recipient information representing said second node and said metadata includes recipient metadata associating said recipient information and said associated information; and
wherein said processing means processes said recipient metadata to control communications of said associated information to and from said second node.
19. The node of claim 18, wherein said recipient information is received as said feedback information.
20. The node of claim 18 wherein said recipient information includes a communications network address, and wherein said transfer metadata includes push metadata describing associations between said communications network address and said associated information; and
wherein said processing means includes transfer means for processing said push metadata to transfer said updated information to said communications network address.
21. The node of claim 2, wherein said information includes a communications network server address and polling control data, and wherein said transfer metadata includes pull metadata associating said network server address, said polling control data, and said associated information; and
wherein said processing means includes:
polling trigger means for processing said pull metadata to trigger update processing,
transfer means for processing said update metadata to access a server at said network server address to request transfer of said updated information, and
reception means for receiving said updated information transferred by said server in response to a request and storing said updated information at said node.
22. The node of claim 2, wherein said information includes at least one communications network casting address, and wherein said transfer metadata includes casting metadata associating said casting address and said associated information; and
wherein said processing means includes
monitoring means for processing said casting metadata to monitor said at least one communications network casting address to retrieve said updated information, and
reception means for receiving said updated information from said at least one communications network casting address and storing said updated information at said node.
23. The node of of claim 2, wherein said information includes notification information and said metadata includes notification metadata associating said notification information and said associated information; and
wherein said processing means includes notification means for processing said notification metadata to control notifying at least one of a user and another process when said associated information has been received.
24. The node of claim 2, wherein said information includes secondary recipient information representing a third node, and said metadata includes forwarding metadata associating said third node and said associated information; and
wherein said processing means includes forwarding means for processing said forwarding metadata to control the transfer at least a portion of said associated information to said third node.
25. The node of claim 2 wherein said processing means includes:
request means for processing said data exchange metadata to generate a request to obtain at least a portion of said feedback information from a user; and
input means for receiving said portion of said feedback information input by a user and storing said portion of said feedback information at said node.
26. The node of claim 2 wherein said processing means includes:
query means for applying a query to information at said node to obtain said feedback information.
27. The node of claim 2 wherein said information includes event information representing events, and said metadata includes event metadata associating said event information and said portions of information; and
wherein said processing means includes event means for processing said event metadata to control communications events.
28. The node of claim 27 wherein said event information includes event logging information, and wherein said event metadata includes event logging metadata associating said events and at least one recording process; and
wherein said event means executes said at least one recording process when an associated communications event occurs.
29. The node of claim 2 wherein said information includes access control information and wherein said metadata includes access control metadata describing associations between said access control information and said associated information; and
wherein said processing means includes access control means for processing said access control metadata to control access to said associated information.
30. The node of claim 2 wherein said information includes selection information representing selected portions of said associated information, and said metadata includes selection metadata describing associations between said selection information and said selected portions of said information; and
wherein said processing means includes selection means for processing said selection metadata to select said associated information.
31. The node of claim 2 wherein said metadata includes link metadata associating a portion of secondary information stored at a location separate from said node; and
wherein said processing means includes linking means for processing said link metadata to control communications of said secondary information.
32. The node of claim 31 wherein said linking means retrieves said portion of said secondary information based upon the receipt of predetermined information.
33. The node of claim 2 wherein said information includes encoding information representing processes for at least one of encoding and decoding said information for at least one of transfer and receipt, and said metadata includes encoding metadata describing associations between said encoding information and said associated information; and
wherein said processing means includes encoding means for processing said encoding metadata to select at least one of a plurality of encoding processes.
34. The node of claim 33 wherein said encoding processes include a process for at least one of compression, encryption, digitally signing, file formatting, data translation, and language translation.
35. The node of claim 33 wherein said encoding processes include asymmetric encoding in accordance with one of a plurality of keys which may include public keys or private keys or both of them, and wherein said encoding metadata describes an association to a selected one of the plurality of keys.
36. The node of claim 35 wherein said asymmetric encoding includes at least one of encryption and digital signing.
37. The node of claim 35 wherein said plurality of keys includes a plurality of key pairs, each key pair including a public key and a private key, and
wherein said encoding means includes means for selecting one of the plurality of key pairs; and
wherein said metadata includes key selection metadata describing an association between said portions of information and said selected key pair.
38. The node of claim 2 wherein said information includes transmission information representing processes for transmitting said information, and said metadata includes transmission metadata describing associations between said transmission information and said associated information; and
wherein said processing means includes transmission means for processing said transmission metadata to select at least one of a plurality of transmission processes.
39. The node of claim 2 wherein said information includes termination information, and said metadata includes termination metadata describing associations between said termination information and at least one process to be executed upon deletion of said metadata at said node; and
wherein said processing means includes termination means for processing said termination metadata to execute said at least one process when said metadata is deleted at said node.
40. The node of claim 2 wherein said information includes rules, and said metadata includes rule metadata describing associations between said associated information and said rules; and
wherein said processing means includes rule means for processing at least one associated rule to control processing when a communication event occurs with respect to said associated information.
41. The node of claim 40 wherein said at least one of said rules is a rule control rule defining a process for determining another rule to be processed when a communication event occurs with respect to said associated information; and
wherein said rule processing means processes said rule control rule based upon said associated information to determine a second rule to be processed and processes the second rule.
42. The node of claim 40 wherein at least one of said rules is a data exchange rule defining a process for determining when to transfer said feedback information; and
wherein said rule processing means processes said data exchange rule to execute said process.
43. The node of claim 40 wherein at least one of said rules is an authentication rule defining a process for authenticating a source of received information; and
wherein said rule processing means processes said authentication rule to authenticate said source.
44. The node of claim 40 wherein at least one of said rules is an encoding rule defining an encoding process for encoding transferred information; and
wherein said rule processing means processes said encoding rule to execute said encoding process.
45. The node of claim 40 wherein at least one of said rules is a notification rule defining a notification process for determining notification, of at least one of a user and another process, of the reception of updated information; and
wherein said rule processing means processes said notification rule to execute said notification process.
46. The node of claim 2 wherein said information includes graphical user interface information and said metadata includes graphical user interface metadata describing associations between said graphical user interface information, said metadata, and said associated information; and
wherein said system is further characterized by graphical user interface means for processing said graphical user interface metadata to visually create, edit, delete, or manipulate said metadata.
47. The node of claim 1 wherein the node operates as at least one of a web server and a web client.
48. The node of claim 1 wherein the associations are expressed as at least one of Uniform Resource Locaters (URLs), Uniform Resource Names (URNs), and hypertext links.
49. The node of claim 1 wherein said metadata is encoded as a MIME object when transferred.
50. A method for use at a node of a computer-based communications system which includes multiple nodes arranged and adapted to intercommunicate via a communications network, said method characterized by the steps of:
(A) providing storage means for storing information;
(B) associating portions of said information with metadata, said metadata defining a control structure;
(C) transferring said metadata in at least one direction between said node and a second node of said system to associate with said associated information one or more processes which execute instructions external to said control structure to control communications of said associated
information, said metadata including at least one of
(1) update metadata which associates a process for determining when said portions of said information associated by said metadata have been up dated and transfer metadata which associates a process for controlling the transfer at least a portion of said updated information,
(2) data exchange metadata which associates a process for controlling the transfer of feedback information, said feedback information including at least a portion of said information stored at the receiving node, and
(3) receipt processing metadata which associates a process for determining the processing of said associated information by comparison to an associated version of said control structure; and
(D) at least one of
(1) transferring said information, including said metadata defining said control structure, to said second node to control at least one of
(a) transferring said updated information to said second node,
(b) receiving said feedback information from said second node, and
(c) processing said feedback information, and
(2) receiving said information, including said metadata defining said control structure, from said second node to control at least one of
(a) receiving said updated information from said second node,
(b) processing said updated information, and
(c) transferring said feedback information to said second node.
51. The method of claim 50 further characterized by executing said processes associated by said metadata to control communications of said information.
52. The method of claim 51 further including the step of transferring the instructions executed by said processes associated by said control structure as part of said information.
53. The method of claim 50 wherein said metadata includes self-reference metadata describing an association with said control structure.
54. The method of claim 51 wherein said feedback information is processed to modify said metadata defining said control structure.
55. The method of claim 50 further characterized by transferring multiple instances of said metadata to said node, and wherein at least one of said processes is associated with more than one of said instances.
56. The method of claim 50 further characterized by transferring multiple instances of said metadata to said node, and wherein a portion of said information is associated with more than one of said instances.
57. The method of claim 50 further characterized by generating unique system data uniquely identifying portions of said information in said system; and
wherein said metadata includes unique identifier metadata describing associations between said unique system data and said portions of said information.
58. The method of claim 50 further characterized by creating metadata which associates said control structure with at least one unique identifier from among a plurality of unique identifiers stored at said second node.
59. The method of claim 57 wherein said unique identifier is a representation of a human-language name.
60. The method of claim 50 further characterized by generating state data identifying a state of a portion of said information when said portion of said information is changed; and
wherein said metadata includes version metadata associating said state data and said portion of said information.
61. The method of claim 50 wherein said information includes data types and wherein said metadata includes data type metadata associating said data types and said portions of said information.
62. The method of claim 50 wherein said information has data relationships and said metadata includes data relationship metadata describing said data relationships.
63. The method of claim 62 wherein said data relationships include at least one of container, composite, aggregate, and sequence.
64. The method of claim 51 wherein said processing step includes translating said information according to a selected markup language based upon processing of said control structure.
65. The method of claim 51 wherein said information includes preference information representing actions to occur in connection with said associated information, and said metadata includes preference metadata describing associations between said preference information and said associated information; and
wherein said processing means includes preference means for processing said preference metadata to control said actions.
66. The method of claim 51, wherein said information includes acknowledgment information representing a transfer of said associated information at least one of to and from said second node, and said metadata includes acknowledgment metadata associating said acknowledgment information, said second node, and said associated information; and
wherein said processing step includes processing said acknowledgment metadata to control further actions with regard to communications of said associated information.
67. The method of claim 51 wherein said information includes recipient information representing said second node and said metadata includes recipient metadata associating said recipient information and said associated information; and
wherein said processing step processes said recipient metadata to control communications of said associated information to and from said second node.
68. The method of claim 67, wherein said recipient information is received as said feedback information.
69. The method of claim 67 wherein said recipient information includes a communications network address, and wherein said transfer metadata includes push metadata describing associations between said communications network address and said associated information; and
wherein said processing step includes processing said push metadata to transfer said updated information to said communications network address.
70. The method of claim 51, wherein said information includes a communications network server address and polling control data, and wherein said transfer metadata includes pull metadata associating said network server address, said polling control data, and said associated information; and
wherein said processing step includes:
processing said pull metadata to trigger update processing,
processing said update metadata to access a server at said network server address to request transfer of said updated information, and
receiving said updated information transferred by said server in response to a request and storing said updated information at said node.
71. The method of claim 51, wherein said information includes at least one communications network casting address, and wherein said transfer metadata includes casting metadata associating said casting address and said associated information; and
wherein said processing step includes
processing said casting metadata to monitor said at least one communications network casting address to retrieve said updated information, and
receiving said updated information from said at least one communications network casting address and storing said updated information at said node.
72. The method of claim 51, wherein said information includes notification information and said metadata includes notification metadata associating said notification information and said associated information; and
wherein said processing step includes processing said notification metadata to control notifying at least one of a user and another process when said associated information has been received.
73. The method of claim 51, wherein said information includes secondary recipient information representing a third node, and said metadata includes forwarding metadata associating said third node and said associated information; and
wherein said processing step includes processing said forwarding metadata to control the transfer at least a portion of said associated information to said third node.
74. The method of claim 51 wherein said processing step includes:
processing said data exchange metadata to generate a request to obtain at least a portion of said feedback information from a user; and
receiving said portion of said feedback information input by a user and storing said portion of said feedback information at said node.
75. The method of claim 51 wherein said processing step includes:
applying a query to information at said node to obtain said feedback information.
76. The method of claim 51 wherein said information includes event information representing events, and said metadata includes event metadata associating said event information and said portions of information; and
wherein said processing step includes processing said event metadata to control communications events.
77. The method of claim 76 wherein said event information includes event logging information, and wherein said event metadata includes event logging metadata associating said events and at least one recording process; and
wherein said event metadata processing step executes said at least one recording process when an associated communications event occurs.
78. The method of claim 51 wherein said information includes access control information and wherein said metadata includes access control metadata describing associations between said access control information and said associated information; and
wherein said processing step includes processing said access control metadata to control access to said associated information.
79. The method of claim 51 wherein said information includes selection information representing selected portions of said associated information, and said metadata includes selection metadata describing associations between said selection information and said selected portions of said information; and
wherein said processing step includes processing said selection metadata to select said associated information.
80. The method of claim 51 wherein said metadata includes link metadata associating and a portion of secondary information stored at a location separate from said node; and
wherein said processing step includes processing said link metadata to control communications of said secondary information.
81. The method of claim 80 wherein said step of processing link metadata retrieves said portion of said secondary information based upon the receipt of predetermined information.
82. The method of claim 51 wherein said information includes encoding information representing processes for at least one of encoding and decoding said information for at least one of transfer and receipt, and said metadata includes encoding metadata describing associations between said encoding information and said associated information; and
wherein said processing step includes processing said encoding metadata to select at least one of a plurality of encoding processes.
83. The method of claim 82 wherein said encoding processes include at least one of compression, encryption, digital signatures, file formatting, data translation, and language translation.
84. The method of claim 82 wherein said encoding processes include asymmetric encoding in accordance with one of a plurality of keys which may include one or more public and private keys, and wherein said encoding metadata describes an association to a selected one of the plurality of keys.
85. The method of claim 84 wherein said asymmetric encoding includes at least one of encryption and digital signing.
86. The method of claim 84 wherein said plurality of keys includes a plurality of key pairs, each key pair including a public key and a private key, and
wherein said encoding step includes selecting one of the plurality of key pairs; and
wherein said metadata includes key selection metadata describing an association between said portions of information and said selected key pair.
87. The method of claim 51 wherein said information includes transmission information representing processes for transmitting said information, and said metadata includes transmission metadata describing associations between said transmission information and said associated information; and
wherein said processing step includes processing said transmission metadata to select at least one of a plurality of transmission processes.
88. The method of claim 51 wherein said information includes termination information, and said metadata includes termination metadata describing associations between said termination information and at least one process to be executed upon deletion of said metadata at said node; and
wherein said processing step includes processing said termination metadata to execute said at least one process when said metadata is deleted at said node.
89. The method of claim 51 wherein said information includes rules, and said metadata includes rule metadata describing associations between said associated information and said rules; and
wherein said processing step includes processing at least one associated rule to control processing when a communication event occurs with respect
to said associated information.
90. The method of claim 89 wherein said at least one of said rules is a rule control rule defining a process for determining another rule to be processed when a communication event occurs with respect to said associated information; and
wherein said rule processing step processes said rule control rule based upon said associated information to determine a second rule to be processed and processes the second rule.
91. The method of claim 89 wherein at least one of said rules is a data exchange rule defining a process for determining when to transfer said feedback information; and
wherein said rule processing step processes said data exchange rule to execute said process.
92. The method of claim 89 wherein at least one of said rules is an authentication rule defining a process for authenticating a source of received information; and
wherein said rule processing step processes said authentication rule to authenticate said source.
93. The method of claim 89 wherein at least one of said rules is an encoding rule defining an encoding process for encoding transferred information; and
wherein said rule processing step processes said encoding rule to execute said encoding process.
94. The method of claim 89 wherein at least one of said rules is a notification rule defining a notification process for determining notification of at least one of a user or another process of the reception of updated information; and
wherein said rule processing step processes said notification rule to execute said notification process.
95. The method of claim 51 wherein said information includes graphical user interface information and said metadata includes graphical user interface metadata describing associations between said graphical user interface information, said metadata, and said associated information; and
wherein said method is further characterized by processing said graphical user interface metadata to visually create, edit, delete, or manipulate said metadata.
96. The method of claim 50 wherein the node operates as at least one of a web server and a web client.
97. The method of claim 50 wherein the associations are expressed as at least one of Uniform Resource Locaters (URLs), Uniform Resource Names (URNs), and hypertext links.
98. The method of claim 50 wherein said metadata is encoded as a MIME object when transferred.
99. A product for use in connection with a digital computer connected to a communication network, to configure and operate the computer as a node of said network, comprising a computer-readable medium and a computer program recorded thereon, the computer program comprising a series of instructions for execution in said computer and when so executed causing the computer to instantiate:
(A) storage means for storing information;
(B) association means for associating portions of said information with metadata, said metadata defining a control structure which is transferred in either direction between said node and another, second node of said network to associate with said associated information processes which execute instructions external to said control structure to control communications of said associated information, said metadata including at least one of
(1) update metadata which associates with said associated information a process for determining when said portions of said information associated by said metadata have been updated and transfer metadata which associates a process for controlling the transfer at least a portion of said updated information,
(2) data exchange metadata which associates with said associated information a process for controlling the transfer of feedback information, said feedback information including at least a portion of said information stored at the receiving node, and
(3) receipt processing metadata which associates with said associated information a process for determining the processing of said associated information by comparison to an associated version of said control structure; and
(C) communications means for at least one of
(1) transferring said information, including said metadata defining said control structure, to said second node to control at least one of
(a) transferring said updated information to said second node,
(b) receiving said feedback information from said second node, and
(c) processing said feedback information, and
(2) receiving said information, including said metadata defining said control structure, from said second node to control at least one of
(a) receiving said updated information from said second node,
(b) processing said updated information, and
(c) transferring said feedback information to said second node.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to data communications systems. More particularly, it relates to an automated communications system which coordinates the transfer of data, metadata, and instructions between databases in order to control and process communications.
2. Discussion of the Related Art
All communications consist of a mechanism for exchanging information between one entity, a provider, and another, a consumer. The terms "provider" and "consumer" are used to designate separate functions in information transfers. Typically an entity, at various times, operates as both a provider and a consumer in any communication relationship. These relationships may be one-to-one, such as between two individuals; one-to-many, such as between company and its customers; or many-to-many, such as between the members of a workgroup. These communications relationships may also exist over multiple communications networks, such phone networks, LANs, public data communications networks, radio and TV networks, wireless networks, and conventional postal mail networks.
Establishing, maintaining, operating, and even terminating any one of these types of communications relationships involves significant work on the part of both the provider and consumer. For example, to initiate any type of communications relationship, providers must first locate the consumers with whom to communicate and vice versa. Solving this problem is subject of several entire industries, such as the directory industry, the mailing list industry, and the advertising industry. Once a provider or consumer has been identified, contact information (e.g., names, titles, addresses, telephone numbers, electronic mail addresses, etc.) must be exchanged between the provider and consumer. This contact information must be maintained by both parties so that future communications can be effected as needed. When the contact information changes for an entity, all providers or consumers having relationships with the entity must be notified of the changes, who in turn must update their own records. This work also extends to other data and records exchanged in the context of the communications relationship, e.g. orders, receipts, product numbers, invoice numbers, customer numbers, notes, brochures, reports, etc. Maintenance of this information requires significant human time involvement for receiving information, storing information, indexing information, searching for desired information, and retrieving information. The human component of record maintenance also creates a potential for error, which can cause the information to be faulty or to become lost.
Once the communications relationship is established, the next major workload is the active use of the relationship to accomplish communications objectives. The problems here take different forms depending on the type of communications relationship. For example, in a one-to-many relationship, particularly a mass-market relationship such as a company and its customers, the problem is how to efficiently disseminate information about products and services to consumers. Optimally, such information would be disseminated only to the consumers who need the information, only at the precise time they need it, and only via the communications network the consumer preferred. However, knowing who needs what information, when, and how can be very difficult. Therefore, providers typically disseminate information widely in the form of mass advertisements and mailings via all possible communications mediums in order to reach all likely consumers. Because of this broad dissemination by providers, consumers receive large amounts of information, much of which is irrelevant to them. Consumers are forced to sort and filter through this information, and frequently much of it is discarded. Information which is kept may not be immediately useful, but may be needed at a later time. Unless the consumer expends a great deal of work to store, catalog, and index this information, the information can be difficult or impossible to find when the consumer actually needs it.
This same problem of efficient information distribution is exacerbated in many-to-many communications relationships, such as among the members of a workgroup. Here, communications are much more frequent and timely, and there is much greater quantity of information to be shared, stored, archived, and indexed. Members of a workgroup also have a strong need to employ communications for group coordination, such as scheduling meetings, conference calls, project deadlines, etc. These communications involve time deadlines and feedback requirements which are not typically present in one-to-many communications relationships.
With one-to-one communications relationships, the problem of efficient information disemination is lessened because the parties typically have a much higher knowledge of each other's needs and interests. Conversely, the need to use communications for coordination purposes is greatly increased, largely because between individuals the need for real-time communications sessions such as phone calls and personal meetings is acute. Thus the universal problem of "phone-tag", when both parties exchange numerous messages trying to coordinate the opportunity to communicate in real time.
The next workload involved in communications relationships is when the parties need to exchange, process, and store structured data. In a one-to-many communications relationship, a common example is a consumer ordering a product. The consumer must place a telephone call, locate a salesperson, and then manually transmit the necessary ordering information, which the salesperson must manually record. Paper or electronic product order forms can help automate this process for the provider, but they still must be filled out manually by the consumer. Many of these forms require the same standard information from the consumer, which the consumer must enter repeatedly. All of these information transfers require human involvement and thus create the potential for data errors. On the provider's part, more work is required to perform error checking on the order, process it, and in many cases return an acknowledgment to the consumer. Many providers invest heavily in data
processing and electronic communications systems for automating these functions. However, the lack of a standard communications system for exchanging common data means that providers adopt largely proprietary systems, increasing the investment necessary for every provider. In addition, consumers must still interact with each these systems manually.
In a many-to-many communications relationship, such as a workgroup, the need for structured data exchange is even higher, especially when automated data processing tools such as computer software are in widespread use. Also, the need for structured data exchange for workgroup coordination activities, such as scheduling and planning, grows significantly.
One-to-one communications relationships may also involve strong needs for structured data exchange. For example, two individuals from different companies may need to review and revise a document involving both companies. The ability to do so electronically, using a secure method of exchange over public data networks, would make the task considerably easier. Individuals involved with one-to-one communications relationships also have an acute need to use structured data exchange to solve the problem of scheduling communications sessions, i.e. the phone-tag problem.
Since all communications relationships are inherently dynamic, they involve three other common tasks involved for providers and consumers: copying the relationship, transfering the relationship, and terminating the relationship. Copying is when one consumer wants to share a particular communications relationship with another consumer. For example, a mail-order catalog customer may wish to give a copy of the catalog to a friend, or a businessperson may need to share the phone number of a colleague with a customer. Transferring is when one provider assumes a consumer communications relationship from another, or one consumer assumes a provider communications relationship from another. An example would when a company changes the salesperson responsible for the customers in a sales territory, or when a customer transfers ownership of a product. Termination is when either a provider or consumer wishes to end a communications relationship, i.e. a provider no longer wants to distributes information, and/or a consumer no longer wants to receive, process, or store the information. A widespread example is consumers who wish to be dropped from direct mailing lists, and the providers who wish they could efficiently identify such consumers to save mailing costs. All three of these common, everyday communications relationship operations involve considerable effort on the part of the provider and consumers to carry out.
Therefore, a need exists for a communications system which allows providers and consumers to quickly and easily establish an automated communications relationship, one in which the data necessary to operate the communications relationship is exchanged and updated automatically, and which can control all types of communications via all types of communications network common to both the provider and consumer. A need also exists for a communications system which allows a provider to actively notify a consumer of new information in which the consumer may be interested, and which allows the consumer to precisely filter the information being sent by one or more providers. A need also exists for a communications system which allows providers and consumers to automatically structure, exchange, and process incoming or outgoing communications to the greatest extent possible. A need also exists for a communications system which allows providers and consumers to easily share access to many common communications services. Finally, a need exists for a communications control system which allows providers and consumers to easily copy, transfer, and terminate communications relationships.
Various computer-based systems have been created to provide mechanisms for communicating information. The Internet and World Wide Web provide a network of a large number of information sources, providing a voluminous amount of information. Computer programs exist which can be executed on Internet-connected computers to search these sources to obtain desired information. Additionally, through the medium of hypertext, providers of World Wide Web pages can create links in their pages between items of related information which can significantly aid consumers in finding desired information. However, the links to the information source are neither dynamic nor persistent; in the sense that they do not provide new or updated information once the consumer has found a topic of interest. "Bookmarks" in a web browser program can facilitate subsequent access to a particular web page to determine if new information is present. However, if the web page referenced by the bookmark is removed, the bookmark is no longer valid. Bookmark polling programs, such as Smart Bookmarks from First Floor, Inc., can also be used to determine whether a web page has changed since the last time the consumer viewed it. In addition, Smart Bookmarks can examine a changed page and automatically transfer to the consumer a text string embedded by the author of the page informing the consumer of the nature of the change. However, Smart Bookmarks' capability is limited to single text strings on single web pages. Therefore the consumer must locate and bookmark every Web page of interest. Smart Bookmarks does not provide a way for the consumer to filter the update messages, nor does it provide the consumer with any mechanism for exchanging structured information or managing a communications relationship with the provider.
A different type of Web monitoring solution is provided by Revnet Systems Inc. With its GroupMaster software, Web providers can create and insert special hyperlinks representing interest topics on the pages of their Web site. When a consumer clicks on this link a special data file is transferred to the consumer's GroupMaster client software. The client software then polls the Web server for updates to the interest topic input by the provider. Unlike Smart Bookmarks, all interest topics at the site can be checked in one update polling action. Update messages can be delivered to the consumer via the client software. However, these messages only contain links back to pages with follow-up information at the Web site. They do not store or index information from the provider, nor do they provide a mechanism for the consumer and provider to automate other types of structured data exchanges or manage a communications relationship.
Online navigation or "auto pilot" software, available from various commercial online services or software companies, can help the user automate access to online services, the Internet, and other public networks. The software provided by these services or companies can include capabilities such as automatic logons, automatic navigation of the online system according to consumer preferences, file searches, uploading and downloading data, and storage of data. Some systems can also automatically download the data necessary to update their own operation. However, the navigation software available from the online services typically requires that the consumer first establish an account with the online service, and may also involve establishing accounts with specific providers on the service. In addition, these navigator programs are specifically designed to work with the architecture and communications protocols of the online service, and cannot be easily adapted to other data communications networks, thus preventing other providers from using the functionality of the online service to create and distribute data in the same manner. Finally, they require that the consumer set up and maintain a communications relationship with each information provider on the service. If the provider changes its information offerings, the consumer must reprogram the autopilot or navigation software. This last disadvantage also applies to online navigation programs designed to work with the Internet and other non-proprietary public data networks.
Electronic mail (e-mail) systems are another electronic communications system that provides some communications contact persistence. E-mail addresses and messages can be stored and indexed within e-mail programs, or externally in other locations. E-mail rules engines allow for some degree of automated storage or response to certain message contents. However, these rules engines are typically constrained to acting on certain known information about the messages, such as the address of the message provider, or on semantic rules such as keywords which must be guessed by the provider and consumer. There is no common communications frame of reference, i.e., a structured data format and operations methodology, against which both the provider and consumer can operate to filter, classify, and organize messages. The lack of a common frame of reference also severely limits the capability of either the provider or consumer to automatically process the contents of an e-mail message, or to automatically respond to the message besides the capability to automatically address a reply message.
E-mail systems which support electronic forms overcome some of these limitations. Electronic forms allow the provider to control the content of a forms submission and to automatically or semi-automatically route that data around a network. Electronic forms also allow message consumers to automate a response to the forms provider which can be automatically processed by the provider. However, these forms must be received and processed by the consumer in the same manner as conventional e-mail messages. In other words, they do not provide a means for the consumer to control or filter messages from different providers. Forms also do not provide the consumer with a mechanism for automatically storing, indexing, or processing information from the provider. In addition, while they may automate the provider's ability to process the data returned from the forms, the consumer must still manually enter information in the form.
Specialized e-mail systems have been developed that combine the use of electronic forms with a system-wide data processing model. Examples are The Coordinator from Action Technologies, Inc., or OVAL from the MIT Center for Coordination Science. These systems allow providers and consumers to share a frame of reference for messaging such that messages can be classified into specific categories and actions. This allows message providers and consumers to automate the routing, storage, and processing of messages based on these category and actions. However, these systems require that all providers and consumers share the same frame of reference. They do not provide a generalized means for each provider on the system to establish and update their own frames of reference with one or more consumers, nor a generalized means for each consumer to coordinate the frames of reference they have with different providers.
A different approach to the problem of automating communications is the category of software that is commonly referred to as "software agents" or "mobile agents". An example is a platform for communications applications developed by General Magic, Inc. called Telescript. The Telescript language is an object-oriented, remote programming language with three core concepts: agents, places and "go". Agents "go" to places, where they interact with other agents to get work done on a user's behalf. Agents are mobile programs capable of transporting themselves from place to place in a Telescript network. The language is implemented by the Telescript engine. The Telescript engine is a multitasking interpreter that integrates onto an operating system through a programming interface called the Telescript API. The Telescript engine operates on server computers connected over a communications network. Telescript agents can operate independently anywhere within these server computers to control the transfer of message data and perform programmable actions upon that message data. For example, if a message recipient is not available, the message could be rerouted to a different location, rather than being returned to the sender undelivered. Telescript is similar to other agent technologies in that the architecture is based on agents interacting with other agents on server computers running agent "engines" or interpreters. In this architecture, the establishment of a communications relationship requires two agents: one to represent the provider and one the consumer. Although agent programming systems like Telescript provide the necessary tools for creating these agents, it is still necessary for both the provider and consumer to create and administer the necessary agents. Furthermore, Telescript does not provide a specific model for the filtering, storage, and indexing of communications between a provider and consumer via agents. Lastly, agent architectures require the addition of servers running agent interpreters to the communications network in order to operate, increasing the expense and complexity of the network.
A more specialized type of agent technology is delivery agents. Examples include Digital Delivery from Digital Delivery, Inc. and PointCast from PointCast Inc. Delivery agents do not require a network of specialized servers, but instead operate directly on a consumer's computer to retreive information of specific relevance to the user over a network. They are created by a particular provider to supply information from a server or servers under that providers control, or from a more generalized news source such as a wire service. Delivery agents allow a consumer to specify his/her topics of interest, which the delivery agent then uses to filter the available news stream and show the user only the information of interest. Delivery agents are also capable of storing and indexing the received data for the consumer. Other than communicating the consumer's topic preferences back to the provider, however, delivery agents do not provide a way to control or process other communications between the consumer and provider. In addition, since each delivery agent is typically designed as a separate executable program which must be installed and run separately, the consumer is limited as to the number of delivery agents the consumer can manage and run.
Another approach to automating communications and data transfers is shared replicated database systems such as Lotus Notes and Collabra Share. With these systems, information to be communicated is entered via a client program into one or more databases which may reside locally on client computers or on network server computers. These databases are then replicated to other server computers or local client computers throughout the system so that the data can be easily accessed by any other user of the system who needs the information and has the proper access privileges. Access privileges are controlled by one or more system administrators via the system servers. Some of these systems, notably Collabra Share, also allow users to "subscribe" to specific databases. These users can receive an e-mail notification from a database agent monitoring the database when a new entry or a certain condition has been made in that database. These systems may also employ electronic forms and forms processing languages to structure the data being entered into a database, and to take programmable actions based on the data entered. The architecture of these systems is designed for groups of users to share information related to specific topics, and to automate the transfer of data between different computer applications used by an organization. For this reason the core data structure of the architecture is a subject database or "forum". Each subject database covers a number of related interest topics under which all entries in the database are categorized. All copies of any subject database are synchronized throughout the system when data in any one copy has been changed.
While suitable for information sharing amongst the members of a group, this architecture is not well suited for automating communications relationships among a large number of information providers and consumers. First, all the providers and consumers need to be interconnected through the system in order to communicate. This could be done by having all providers and consumers enroll in one large system in which they all had access privileges. In such a system each provider would need to have at least one subject database for communicating with his/her consumers. This enormous number of subject databases would then need to be replicated among the large number of servers required to service the complete population of the system, which would quickly overwhelm the capacity of the servers or network to handle replication. A more realistic alternative would be to have each provider or group of providers operate and administer their own system, making their internal subject databases available to consumers via public data networks such as the Internet. Consumers would use the system client software to "subscribe" to the subject databases of each provider with which they desire to communicate. Only the subject databases a consumer subscribed to would be replicated on
his/her desktop. This solution would spread the replication load to a large number of servers, each handling a smaller amount of traffic. However, each server would now have to manage replication for a large number of external consumers as well as internal group members. There is no easy way to distribute this replication load to the consumer's computer. Second, subject databases do not allow the consumer to control and filter the incoming communications from providers. Consumers must still scan the databases for items of interest. Providers could overcome this by creating a subject database for each interest topic, but the additional administrative and server replication overhead would strongly discourage this. Third, because notification of new information is handled via a separate application, e-mail, the consumer is forced to coordinate notification and data storage/response among two communications systems. Fourth, since subject databases are replicated from the servers, they do not give consumers an easy way to copy or transfer them to other consumers. Finally, because the entire system depends on server-based replication, administrative changes or reconfigurations of these servers such as system name or address changes require administrative updates to all subscribing consumers, a job which consumers must handle manually.
Consequently, a need exists for a communications control system which allows providers and consumers to quickly and easily establish an automated communications relationship; which automatically updates both parties with changes in communications control data from the other; which works with all communications networks shared by the provider and consumer; which allows both parties to automatically control, filter, store, index, and process communications from the other; which allows both providers and consumers to share many common communications services; and which allows both parties to easily manage, copy, transfer, and terminate the communications relationship.
SUMMARY OF THE INVENTION
The disadvantages of existing communications control systems are significantly overcome by the present invention in which software programs being executed by a provider computer and consumer computer communicate directly in order to maintain a communications control structure. This structure originates at the provider computer and is transferred to the consumer computer. Changes to the structure on the provider computer result in an updated version being transferred to the consumer computer. The communications control structure contains a combination of data, metadata, and instructions which are used by the respective programs to control the origination of outgoing communications and the processing of incoming communications between the provider and consumer.
In one aspect of the present invention, a communications system is used to coordinate communications between providers and consumers. Provider computers transfer information stored in the provider computer through a communications network to a consumer computer. The information includes processes for updating the transferred information in the consumer computer when the information in provider computer has changed. For "push" processes, the provider computer maintains address data necessary to transfer updated information to various consumers. For "pull" processes, the consumer computer uses information transferred from the provider to access a location where the provider information is stored to determine whether it has been updated and to retrieve it if necessary.
According to another aspect of the present invention, existing communications networks and network accessing programs are used to increase the functionality of the communications system. The Internet and World Wide Web, or similar type networks, are used to access and transfer the information. According to this aspect, information is created and maintained according to a recognized protocol, such as HTTP, MIME and HTML, which can be used to access other information. An appropriate display program, such as a web browser, is used to retrieve and display the information.
According to another aspect of the present invention, programs operating on the provider computer and consumer computer operate as state machines in connection with an appropriate display program. The programs operate to receive information requests from a display program and to generate a next display containing the requested information.
According to another aspect of the present invention, information is organized in a form which simplifies transfer of data, metadata, and instructions. Object oriented programming is used for combining data, metadata, and methods for storage and transfer. Specialized object classes and type definitions are used to provide intelligence in processing of transferred information. Elements in an transferred object can be used by the consumer computer to filter information and provide selective notification to a user of changed information. The combination of methods and data permits joint control by the provider and consumer over the information transferred, together with how updates, responses, and acknowledgments are processed.
According to another aspect of the invention, a provider program is used to create, edit, and maintain data, metadata and instructions in a provider database. The provider program also controls distribution of the information to various consumers. Different information contained in the provider database can be transferred and used in communications relationships with different consumers. The provider database includes information associating the information with each potential recipient. The association information is used to selectively distribute information and information updates. The provider program also receives and uses information from the consumer computer to control encoding and transfer of information to the consumer computer. According to another aspect, the provider program uses a markup language to format the information for transfer.
According to another aspect of the invention, a consumer program is used to receive and process the transferred information. The consumer program receives information from the provider or polls a location identified by the transferred information to determine when information has been updated by the provider. The consumer program then retrieves the information from the proper source and compares it to the existing information to determine what has been updated. The consumer program maintains a database of information from different providers. When updated information is received, the consumer program executes instructions associated with the information to store the updated information, notify a user of updated information, and generate responses for the consumer. The consumer program also can transfer the information to second consumer computer. The second consumer computer can obtain updated information from the provider computer or have it forwarded by the first consumer computer.
According to another aspect of the invention, methods in the communcations objects are used to automate control of underlying communication operations. When certain actions are taken by a user, or when certain types of messages or objects are received, the respective consumer and provider programs can operate automatically based upon selected methods and operations in order to act with or without input from the users. For example, acknowledgements can be automatically formatted and sent. Also, objects can be automatically transferred to others. The consumer program can transfer the information to a second consumer computer, with or without notification or approval of the user of the consumer program. The second consumer computer can then obtain updated information from the provider computer or have it forwarded by the first consumer computer. Exchange of significant data, metadata, and methods, and archiving or retrieval of changed objects can be automatically carried out by the programs. Methods can also be used to coordinate suspension or termination of communications relationships.
According to another aspect of the invention, service objects and partner servers are used to provide data, metadata, and instructions which can be used by providers and consumers to automate various communications services desired by both. The data, metadata, and instructions are received by the provider and consumer computers in the same manner as information is received by the consumer computer. The provider can include data, metadata, and instructions in the service object in the information transferred to the consumer computer. The information transferred from the service partners also controls communications with the service partner for both providers and consumers. Both providers and consumers can use service objects to communicate with a partner server in order to obtain communication services provided by the partner server.
According to another aspect of the invention, the provider and consumer programs and databases are combined to obtain additional functionality. The communication system can allow multiple users for a single program and database. The data, metadata, and instructions coordinate the operation of the programs for each user and allow for communications between users of the single database.
With these and other objects, advantages and features of the invention that may become apparent, the nature of the invention may be more clearly understood by reference to the following detailed description, the appended claims, and the several drawings attached hereto.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a communications system according to an embodiment of the present invention.
FIG. 2 illustrates an embodiment of the provider program and consumer program of FIG. 1 as state machines.
FIG. 3 illustrates object oriented data structures for storing communications data.
FIG. 4 illustrates the lower branches of FIG. 3, and instances of various elements.
FIG. 5 illustrates the use of a system ID server.
FIGS. 6A and 6B illustrate object oriented data structures for storing system ID data within the system ID database and for user objects.
FIG. 7 illustrates a pull method of transmission of a communications object.
FIG. 8 illustrates a push method of transmission of a communications object.
FIG. 9 illustrates operation of a provider program of FIG. 1 according to an embodiment of the present invention.
FIGS. 10A and 10B are block flow diagrams of operations of the processes for form submissions and update associations.
FIG. 11 is a block flow diagram for a process for distributing a communications object.
FIG. 12 is a block flow diagram for a communications object generation and transmission routine.
FIG. 13 illustrates operation of a consumer program of FIG. 1 according to an embodiment of the present invention.
FIG. 14 represents a user interface display for a form for inputting information in conjunction with an embodiment of a consumer program.
FIG. 15 is a block flow diagram for a process for receiving a communications object.
FIG. 16A is a block flow diagram for the main event loop of the consumer or provider program.
FIG. 16B is a block flow diagram for the scheduled event loop of the consumer or provider program.
FIG. 17 Illustrates the object oriented database structures for different communications object types.
FIG. 18 illustrates object oriented data structures used for distribution control.
FIG. 19 is a block flow diagram for a process for generating an object when page distribution control is used.
FIG. 20 illustrates operation of the communications system for distribution control using a pull method of transmission.
FIG. 21 illustrates operation of the communications system for encoding control.
FIG. 22 illustrates a user interface display of a form for creating notification elements in the provider program.
FIG. 23 illustrates a user interface display of notification elements on a edit object form in the consumer program.
FIG. 24 illustrates a user interface display of a notification report.
FIG. 25 illustrates operation of the communications system for data exchange involving technical support of a software product.
FIG. 26 illustrates a user interface display of technical support options for users of a software product.
FIG. 27 illustrates a user interface display of an input form for gathering technical support information.
FIG. 28 illustrates operation of the communications system for service objects.
FIGS. 29A and 29B illustrate object oriented data structures for a directory system and a message or discussion thread.
FIG. 30 is a block flow diagram for a process for creating directory listings using service objects and partner servers.
FIGS. 31A and 31B are block flow diagrams of processes for updating directory listings and monitoring category objects using service objects and partner servers.
FIGS. 32A, 32B, and 32C are block flow diagrams of processes for use of authentication service objects.
FIGS. 33A and 33B are block flow diagrams of processes for use of public key certificates.
FIGS. 34A and 34B are block flow diagrams of processes for use of classified ad service objects and partner servers.
FIG. 35 is a block flow diagram for a process for monitoring classified ad listings.
FIG. 36 is a block flow diagram for a process for structuring and optimizing automated data exchange using a communications object system.
FIG. 37 is a block flow diagram for a process for creating payment accounts using service objects and partner servers.
FIG. 38 is a block flow diagram for a process for executing payment transactions using service objects and partner servers.
FIG. 39 is a block flow diagram for a process for returning a transaction receipt using service objects and partner servers.
FIG. 40 is a block flow diagram for a process for anonymous reporting using service objects and partner servers.
FIGS. 41A and 41B are block flow diagrams for processes for submitting feedback using service objects and partner servers.
FIG. 42 is a block flow diagram for a process for multuser editing using single-user versions of the combined provider/consumer program.
FIG. 43 is a block flow diagram for a process for coordinating fax document delivery using a communications object system.
FIG. 44 is a block flow diagram for a process for coordinating physical package delivery using a communications object system.
FIG. 45 is a block flow diagram for a process for coordinating telephone calls using a communications object system.
FIG. 46 is a block flow diagram for a process for scheduling telephone calls using a communications object system
FIG. 47 illustrates an object-oriented user interface of a provider program of FIG. 1 according to an embodiment of the present invention.
DETAILED DESCRIPTION
SYSTEM OVERVIEW
There is illustrated in FIG. 1 a first embodiment of a system of the present invention which automatically updates a database in a consumer computer with information from a provider computer. Numerous providers and consumers exist in the system of the present invention. However, since all communications can be separated into transfers between a single provider and consumer, the design and operation of the system is illustrated with only one provider and one consumer, except as otherwise noted. As illustrated in FIG. 1, a provider computer 1 includes a provider database 11 of communications control information which it desires to disseminate
or make accessible to one or more consumers. A consumer computer 2 includes a consumer database 21 of communications control information received from providers and stored by the consumer. The organization, structure, and content of the provider database 11 and consumer database 21 are discussed below. The provider computer 1 is connected through a communications network 3 to the consumer computer 2. Any communications network 3 may be used to connect the provider computer 1 and the consumer computer 2, including direct network connections, server-based environments, telephone networks, the Internet, intranets, local area networks (LANS), wide area networks (WANS), the World Wide Web, other webs, and even transfers of data on physical media such as disks or computer-readable paper outputs via postal communications networks. The particulars of the communications network illustrated as preferred embodiments are not limiting features of the invention. However, the Internet and World Wide Web provide existing capabilities between computers sufficient to provide the necessary connections. For this reason, the description of the present invention is based on this communications medium, which should be understood to be used for purpose of illustration only. Organization and operation of the Internet and communications over the Internet are discussed generally in Kris Jamsa and Ken Cope, Internet Programming (1995) and Marshall T. Rose, The Internet Message: Closing the Book with Electronic Mail (1993), which are incorporated herein by reference. Communications over the World Wide Web are discussed generally in John December and Neil Randall, The World Wide Web Unleashed (1996), which is incorporated herein by reference. Additionally, the illustrated embodiment is not limited to the specific networks known as the "Internet" and "World Wide Web", but relate to internet, intranet and web networks generally. A specific feature of this invention is that it is easily adaptable to control and automate communications via any type of communications network. In addition, it can select a preferred communications network and message encoding format to be used for a specific communications transaction, as further described below.
As illustrated in FIG. 1, there are two principal methods for information transfer in a data communications system, both of which can operate through the Internet. First, a "pushing" method transfers information from the provider computer 1
directly to a known consumer computer 2. An example of such a system is e-mail. So long as the consumer's address is known, the information can be routed through the communications network directly to that recipient. For the pushing method, the provider must know the consumers who want to receive the information. The provider must also know how to address those recipients in the communications network.
The second method, referred to as "pulling", occurs when the consumer computer 2 requests and initiates a transfer of information directly from a provider computer 1 or from another server computer 32 located on communications network 3 on which a copy of the information has been placed for distribution. An example of such a distribution server 32 is when a copy of the information is placed on a web server and accessed by the consumer computer 2. In the pulling method, the provider and the provider computer 1 or distribution server 32 do not need to know ab initio, the identity or location of consumer computers 2. Rather, the consumer computer needs to know the location of the provider computer 1 or distribution server 32 and the location of the desired information to be accessed on such computers.
Basic Operation of Programs for Communications
Appropriate programs executing on the provider computer 1 and the consumer computer 2 perform the functions necessary to transfer, maintain, and update the information at both locations. A program represents a set of stored instructions which are executed in a processor of the computer to process data, transmit and receive data, and produce displays. The provider program 12 operates to transmit changes in information stored in the provider database 11 at the provider computer 1. When changes are made to the information and the database, the provider program 12 operates to disseminate the changed information through the communications network 3. In the pushing method, the provider program 12 transmits the changed information, for example through e-mail, to the consumer computers 2 of all intended recipients. In the pulling method, the changed information is stored on a distribution server 32, such as a web server, which then can be accessed by the consumer computer 2. Any type of distribution server may be used, including network file servers, FTP servers, gopher servers, and so on. The type of distribution server used is not a limiting feature of the invention. The consumer program 22 will typically poll the distribution server 32 to determine whether the information has changed. This polling operation can be as simple as issuing a Web server HTTP file date request and comparing this with the file date of the last update. Polling is controlled by the information transferred from the provider program to the consumer program as further described below. Upon receipt of changed information, the consumer program 22 operates to perform certain functions with regard to that changed information. Principally, the information is stored in consumer database 21 on the consumer computer 2 for future reference and usage in controlling and automating communications between the consumer and provider. Furthermore, the information may be presented to a user at the consumer location, so that the user will be notified of the changed information. The information can be presented in a number of manners, including display or printing by the consumer program, sending an e-mail or voice-mail message to the user, paging the user, and other notification methods.
Since the provider knows what the changed information is and how consumers would likely prefer to be notified of the changed information, the transmitted information can include instructions on how the consumer program 22 should process the information for purposes of notification. For example, information from a provider may include the provider's telephone number. If the telephone number changes, the provider needs to supply everyone with whom it does business with the new number. The present invention provides a simple mechanism for carrying out such a data transfer, and of controlling which consumers receive overt notification. When the telephone number is changed in the distribution database at the provider computer 1, the information is transferred to the consumer computer 2, through either the push or pull method. Upon receipt, the consumer program 22 will process the changed information and store the new telephone number in the consumer database 21 for later access by the user or by other programs operating on the consumer's computer 2. At the consumer computer 2, the consumer may or may not be interested in overt notification of the new phone number; this depends on the consumer's relationship with the provider and how often and in what manner the consumer makes use of the phone number. This invention provides a way for notification to be cooperatively controlled by both the provider and consumer through the use of notification elements, which are described below.
Additionally, receipt and storage of the new or updated information can trigger other actions, such as automatically forwarding the information to another consumer, exchanging data with the consumer database 21, sending an automated response to the provider, or sending a message to another software program on the consumer's desktop. Again, this invention provides a means for such actions to be cooperatively controlled by both the provider and the consumer through the use of receipt methods, which are discussed below.
The information stored in the consumer database 21 can also include data, metadata, and instructions to be used by the consumer program 22 for controlling and automating communications between the provider and consumer. Again, because the provider of the information knows what communications response options are available to the consumers of the information, the provider can include the necessary data, metadata, and instructions to simplify and automate specific responses from the consumer to the provider. For example, the provider can include Web URL (Uniform Resource Locator) links to Web pages or forms on the provider's Web server. Or, the provider can also include special forms to be processed by the consumer program 22 that allow the consumer to automatically or semi-automatically transfer data from the consumer database 21 back to the provider. Examples include product order forms, survey forms, customer service request forms, scheduling forms, etc.
In the most general case, the provider knows what communications networks, network addresses, languages, encoding formats, data structures, and other communications processing data and methods are supported by the provider. Thus, the provider can include in the transferred information the data, metadata, and instructions necessary to control and coordinate general communications from the consumer to the provider or to parties related to the provider. For example, data, metadata and instructions in the transferred information can be used by the consumer program 22 or other computer programs running on the consumer computer 2 to automatically format, compress, encrypt, address, and transmit copies of a word processing document, spreadsheet, database or database query, or other computer file format. Corresponding data, metadata, and instructions in the provider program 12 can control and automate the reception of the received message, including decryption, decompression, notification of the provider, and acknowledgment of receipt to the consumer. The same control technique can be applied to the execution of real-time communications, such as telephone calls, videoconferencing, or whiteboard applications.
HTML and HTTP Server Program Format
Although any kind of data communications network and any kind of user interface can be used, the system can be constructed to work with existing Internet or World Wide Web protocols for data communications and display. In particular, the provider program and the consumer program can be designed to use HyperText Mark-up Language (HTML) for display and editing. HTML is discussed in Internet Request for Comment No. 1866, which is incorporated herein by reference. The use of HTML allows links to be made to other transmitted information or to other information accessible anywhere on the World Wide Web. Also, HTML forms can be used as an input mechanism. Standard Internet protocols for accessing the Web can also be used for accessing the information in the provider or consumer databases. To do this, the provider program and consumer program are designed to emulate a Web HyperText Transfer Protocol (HTTP) server. Then, any Web browser program conforming to the HTML/HTTP standard can generate Uniform Resource Locator (URL) requests to retrieve information from the provider and consumer programs and databases. A Web browser program is a set of instructions which causes the computer to execute information requests to various kinds of servers. The servers responded by transferring HTML files or other data files back to the browser program for display, processing, and storage. Protocols or formats other than HTML/HTTP can be used in the same manner, with an appropriate interface program for requesting, receiving, processing, and displaying data in accordance with the selected protocol or format. The operation of the provider and consumer programs in connection with the Web browser program is illustrated in FIG. 2. Since the provider and consumer programs operate identically in this regard, only the operation of the consumer program will be discussed.
As illustrated in FIG. 2, the consumer program 22 can be constructed to operate as a state machine in connection with a Web browser program 50. The consumer program 22 generates and outputs a first HTML screen (step 53) to the Web browser. If necessary it also issues an operating system call such as a Windows DDE request or Macintosh AppleEvent to the browser to accept this HTML file. It then waits for an HTTP request from the Web browser program 50. The HTML screen can include information having one or more different types of displayed information, namely, text, graphics, hyperlinks, and forms. Text and graphics refers to information which is only viewed by the user. Hyperlinks associate specific text characters or graphics display locations with specific URL requests. Forms provide locations for inputting data such as text, numbers, checkboxes, and "radio buttons" to be acted upon. Hyperlinks and forms allow HTML documents to be used for all program operations including menus, editing, reports, and error messages. The Web browser program 50 displays the HTML page received from the consumer program 22 (step 54). The user operates on the displayed page in the same manner as for any information accessed through the Web browser program 50. The user can review the text or graphics, manually input a new URL request into the Web browser's URL input field, chose a hypertext link to automatically generate a URL request, or complete and submit a form. The Web browser program, typically, can also be used to move forward and backward through previously received screens. Each of the user's actions, except reviewing text and graphics, results in a URL request being generated. The URL request is sent to the consumer program 22, acting as a Web server (step 55). The consumer program processes the URL request to determine whether it refers to a document or a method (step 56). If the URL request is for a document, the consumer program generates the new HTML page and sends it to the Web browser program (step 53). If the request is for a method, then the method is executed using any additional data supplied in the URL (step 57). After the method has been executed, the consumer program generates a new HTML page based upon the results of the method.
The user enters information to be operated upon or stored by the consumer program through the use of HTML forms. If the HTML page generated by the consumer program (step 53) includes a form, then the user can enter information in designated locations in the form. When the information has been entered, the form is submitted by selecting a button on the page, and a set of program instructions (method) designated by this button is executed to process the inputted information. Many browser programs can cache HTML documents, so that a user could have several forms open at one time. Since the consumer program works as a state machine, it expects the last form generated to be the next one returned. If the user switches the order of the forms, a state error could occur. To prevent errors, each form produced by the consumer program can be provided with a state version value. If the version value of the returned form does not match the current state of the consumer program, then an error message can be returned rather than processing the forms out of order.
Alternatively, the provider and consumer programs 12, 22 could include separate native interfaces which include the display and processing functions found in a browser program, as well as the ability to provide additional functionality, such as that available in advance graphical user interfaces like those of Microsoft Windows, Windows 95, and Apple Macintosh operating systems. The use of an object-oriented graphical user interface will be specifically discussed below. The provider and consumer programs 12, 22 may a