INTERPROGRAM COMMUNICATION USING MESSAGE

Distributed framework for intertask communication between workstation applications

6647432

Abstract

A Distributed Framework Intertask Communication Method and Apparatus providing a method for communicating between applications using an extensible communication protocol with an intuitive user interface allowing the user to easily visualize and control the connectivity between applications. The user transmits an interest object associated with an event from a first application to a server. The server then retransmits that interest object to a second application. When the second application practices that event, information concerning the practice of that event is transmitted directly from the second application to the first application without routing that event information through the server. Each client application includes a human interface code, for controlling the window display of the particular client application on the workstation, and a framework code for directing and controlling the communication and transmission of the interest objects and events between the first client application and a plurality of other client applications.


Claims

We claim:

1. A system adapted for intertask communication between workstation client applications, comprising:

a first client non-server application adapted to transmit a first interest object corresponding to a first event, said first client non-server application storing therein a first set of stored data, said first set of stored data including a plurality of events, a plurality of interest objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to the plurality of events and to the plurality of interest objects, said first client non-server application further including a first open state status icon and a first closed state status icon;

a second client non-server application adapted to transmit a second interest object corresponding to a second event, said second client non-server application storing therein a second set of stored data, said second set of stored data including a plurality of events, a plurality of interest, objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to the plurality of events and to the plurality of interest objects, said second client non-server application further including a second open state status icon and a second closed state status icon;

a third client non-server application adapted to transmit a third interest object corresponding to a third event, said third client non-server application storing therein a third set of stored data, said third set of stored data including a plurality of events, a plurality of interest objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to the plurality of events and to the plurality of interest objects, said third client non-server application further including a third open state status icon and a third closed state status icon; and

a server operatively interposed between said first client non-server application and said second client non-server application and said third client non-server application, said first client non-server application expressing an interest in said first event by transmitting said first interest object to said server, said server re-transmitting said first interest object to said second client non-server application and to said third client non-server application,

said second client non-server application comparing said first interest object received from said server with the plurality of interest objects in said second set of stored data stored in said second client non-server application,

said third client non-sever application comparing said first interest object received from said server with the plurality of interest objects in said third set of stored data stored in said third client non-server application,

said second client non-server application locating a match between said first interest object received from said server and one of the interest objects in said second set of stored data stored in said second client non-server application,

said second client non-server application identifying one of the plurality of events representing said first event in said second set of stored data corresponding to said one of the interest objects in said second set of stored data,

said second client non-server application determining a state of said second open state status icon and said second closed state status icon,

said second client non-server application transmitting second event information corresponding to said one of the plurality of events representing said first event in said second set of stored data directly to said first client non-server application without routing said second event information through said server when said second client non-server application practices said one of the plurality of events and when said second open state status icon of said second client non-server application is actuated, said second client non-server application not transmitting said second event information directly to said first client non-server application even though said second client non-server application practices said one of the plurality of events when said second closed state status icon of said second client non-server application is actuated,

said first client non-server application receiving said second event information associated with said one of the plurality of events from said second client non-server application when said second client non-server application practices said one of the plurality of events and when said second open state status icon of said second client non-server application is actuated and when said first open state status icon is actuated,

said first client non-server application not receiving said second event information from said second client non-server application even though said second client non-server application practices said one of the plurality of events and even though said second open state status icon of said second client non-server application is actuated when said first closed state status icon of said first client non-server application is actuated,

when said first client non-server application receives said second event information associated with said one of the plurality of events from said second client non-server application, said first client non-server application comparing said second event information received from said second client non-server application with the plurality of events in said first set of stored data and locating a match between said second event information and one of the plurality of events in said first set of stored data,

said first client non-server application identifying one of the plurality of functions in said first set of stored data which corresponds to said one of the plurality of events in said first set of stored data,

said first client non-server application executing said one of the plurality of functions.

2. The system of claim 1, wherein:

said first client non-server application includes a first event filter icon, said second client non-server application includes a second event filter icon, and said third client non-server application includes a third event filter icon, each said event filter icon including a plurality of send boxes each of which is adapted to be actuated, a corresponding plurality of receive boxes each of which is adapted to be actuated, and a corresponding plurality of events which pertain, respectively, to the plurality of send boxes and to the plurality of receive boxes, and wherein:

when said second client non-server application identifies said one of the plurality of events in said second set of stored data, said second client non-server application determines a state of said second event filter icon,

said second client non-server application transmitting second event information associated with said one of the plurality of events directly to said first client non-server application without routing said second event information through said server when said second client non-server application practices said one of the plurality of events in said second set of stored data and when one of the send boxes in the second event filter icon corresponding to said one of the plurality of events in said second set of stored data is actuated, and

said second client non-server application not transmitting said second event information directly to said first client non-server application even though said second client non-server application practices said one of the plurality of events in said second set of stored data and even though said second open state status icon of said second client non-server application is actuated when one of the send boxes in the second event filter icon corresponding to said one of the plurality of events in said second set of stored data is not actuated.

3. The system of claim 2, wherein:

said first client non-server application receives said second event information associated with said one of the plurality of events from said second client non-server application when said second client non-server application practices said one of the plurality of events and when one of the receive boxes in the first event filter icon of said first client non-server application corresponding to said one of the plurality of events in said first set of stored data is actuated, and

said first client non-server application not receiving said second event information from said second client non-server application even though said second client non-server application practices said one of the plurality of events in said second set of stored data and even though said second open state status icon of said second client non-server application is actuated and even though said first open state status icon of said first client non-server application is actuated when said one of the receive boxes in the first event filter icon of said first client non-server application, corresponding to said one of the plurality of events in said second set of stored data, is not actuated.

4. The system of claim 3, wherein said first client non-server application revokes its interest in said first event by transmitting a revocation object to said server, said server unregistering therein said interest by said first client non-server application in said first event, said server distributing said revocation object to said second client non-server application and said third client non-server application, said second client non-server application and said third client non-server application unregistering therein said interest by said first client non-server application in said first event, said second client non-server application not transmitting said second event information to said first client non-server application in response thereto.

5. The system of claim 3, wherein said first client non-server application terminates after said first client non-server application expresses said interest in said first event by transmitting said first interest object to said server, said server notices the termination of said first client non-server application and unregisters therein said interest by said first client non-server application in said first event, said server distributes a revocation object to said second client non-server application and said third client non-server application, said second client non-server application and said third client non-server application unregistering therein said interest by said first client non-server application in said first event, said second client non-server application not transmitting said second event information to said first client non-server application in response thereto.

6. The system of claim 1, wherein said server remains operatively interconnected between said first client non-server application and said second client non-server application and said third client non-server application when said first client non-server application executes said one of the plurality of functions, and wherein:

said third client non-server application expresses an interest in said third event by transmitting said third interest object corresponding to said third event to said server, said server re-transmitting said third interest object to said first client non-server application and to said second client non-server application,

said first client non-server application comparing said third interest object received from said server with the plurality of interest objects in said first set of stored data stored in said first client non-server application,

said second client non-server application comparing said third interest object received from said server with the plurality of interest objects in said second set of stored data stored in said second client non-server application,

said first client non-server application locating a match between said third interest object received from said server and one of the interest objects in said first set of stored data stored in said first client non-server application,

said first client non-server application identifying one of the plurality of events representing said third event in said first set of stored data corresponding to said one of the interest objects in said first set of stored data,

said first client non-server application determining a state of said first open state status icon and said first closed state status icon,

said first client non-server application transmitting first event information corresponding to said one of the plurality of events representing said third event in said first set of stored data directly to said third client non-server application without routing said first event information through said server when said first client non-server application practices said one of the plurality of events in said first set of stored data and when said first open state status icon is actuated,

said first client non-server application not transmitting said first event information to said third client non-server application even though said first client non-server application practices said one of the plurality of events in said first set of stored data when said first closed state status icon is actuated,

said third client non-server application receiving said first event information from said first client non-server application when said third open state status icon is actuated,

said third client non-server application not receiving said first event information from said first client non-server application when said third closed state status icon is actuated,

when said third client non-server application receives said first event information from said first client non-server application, said third client non-server application comparing said first event information received from said first client non-server application with the plurality of events in said third set of stored data and locating a match between said first event information and one of the plurality of events in said third set of stored data,

said third client non-server application identifying another one of the plurality of functions in said third set of stored data which corresponds to said one of the plurality of events in said third set of stored data,

said third client non-server application executing said another one of the plurality of functions.

7. The system of claim 6, wherein said first client non-server application includes a first event filter icon, said second client non-server application includes a second event filter icon, and said third client non-server application includes a third event filter icon, each said event filter icon including a plurality of send boxes each of which is adapted to be actuated, a corresponding plurality of receive boxes each of which is adapted to be actuated, and a corresponding plurality of events which pertain, respectively, to the plurality of send boxes and to the plurality of receive boxes, and wherein:

when said first client non-server application identifies said one of the plurality of events in said first set of stored data, said first client non-server application determines a state of said first event filter icon,

said first client non-server application transmitting first event information associated with said one of the plurality of events directly to said third client non-server application without routing said first event information through said server when said first client non-server application practices said one of the plurality of events in said first set of stored data and when one of the send boxes in the first event filter icon corresponding to said one of the plurality of events in said first set of stored data is actuated, and

said first client non-server application not transmitting said first event information directly to said third client non-server application even though said first client non-server application practices said one of the plurality of events in said first set of stored data and even though said first open state status icon of said first client non-server application is actuated when one of the send boxes in the first event filter icon corresponding to said one of the plurality of events in said first set of stored data is not actuated.

8. The system of claim 7, wherein:

said third client non-server application receives said first event information associated with said one of the plurality of events from said first client non-server application when said first client non-server application practices said one of the plurality of events and when said one of the send boxes in the first event filter icon is actuated and when one of the receive boxes in the third event filter icon of said third client non-server application, corresponding to said one of the plurality of events in said first set of stored data, is actuated, and

said third client non-server application not receiving said first event information from said first client non-server application when said first client non-server application practices said one of the plurality of events in said first set of stored data even though said first open state status icon of said first client non-server application is actuated and even though one of the send boxes in the first event filter icon is actuated and even though said third open state status icon of said third client non-server application is actuated when said one of the receive boxes in the third event filter icon of said third client non-server application, corresponding to said one of the plurality of events in said first set of stored data, is not actuated.

9. The system of claim 8, wherein said third client non-server application revokes its interest in said third event by transmitting a revocation object to said server, said server unregistering therein said interest by said third client non-server application in said third event, said server distributing said revocation object to said first client non-server application and said second client non-server application, said first client non-server application and said second client non-server application unregistering therein said interest by said third client non-server application in said third event, said first client non-server application not transmitting said first event information to said third client non-server application in response thereto.

10. The system of claim 8, wherein said third client non-server application terminates after said third client non-server application expresses said interest in said third event by transmitting said third interest object to said server, said server notices the termination of said third client non-server application and unregisters therein said interest by said third client non-server application in said third event, said server distributes a revocation object to said first client non-server application and said second client non-server application, said first client non-server application and said second client non-server application unregistering therein said interest by said third client non-server application in said third event, said first client non-server application not transmitting said first event information to said third client non-server application in response thereto.

11. A method of communicating between workstation client applications, comprising the steps of:

(a) expressing, by a first client non-server application, an interest in a first event by transmitting a first interest object from said first client non-server application to a server,

said server being operatively interposed between said first client non-server application and a second client non-server application and a third client non-server application,

said first client non-server application storing therein a first set of stored data, said first set of stored data including a plurality of events, a plurality of interest objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to said plurality of events and to said plurality of interest objects, said first client non-server application further including an open state status icon and a closed state status icon,

said second client non-server application storing therein a second set of stored data, said second set of stored data including a plurality of events, a plurality of interest objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to said plurality of events and to said plurality of interest objects, said second client non-server application further including an open state status icon and a closed state status icon,

said third client non-server application storing therein a third set of stored data, said third set of stored data including a plurality of events, a plurality of interest objects corresponding, respectively, to said plurality of events, and a plurality of functions corresponding, respectively, to said plurality of events and to said plurality of interest objects, said third client non-server application further including an open state status icon and a closed state status icon;

(b) receiving said first interest object in said server and retransmitting by said server, said first interest object to said second client non-server application and to said third client non-server application;

(c) comparing, by said second client non-server application, said first interest object received from said server with the plurality of interest objects in said second set of stored data stored in said second client non-server application;

(d) comparing, by said third client non-server application, said first interest object received from said server with the plurality of interest objects in said third set of stored data stored in said third client non-server application;

(e) locating, by said second client non-server application, a match between said first interest object received from said server and one of the interest objects in said second set of stored data stored in said second client non-server application;

(f) identifying, by said second client non-server application, one of the plurality of events representing said first event in said second set of stored data corresponding to said one of the interest objects in said second set of stored data;

(g) determining, by said second client non-server application, a state of said second open state status icon and said second closed state status icon;

(h) transmitting, by said second client non-server application, second event information corresponding to said one of the plurality of events representing said first event in said second set of stored data directly to said first client non-server application without routing said second event information through said server when said second client non-server application practices said one of the plurality of events and when said second open state status icon of said second client non-server application is actuated;

(i) not transmitting, by said second client non-server application, said second event information directly to said first client non-server application even though said second client non-server application practices said one of the plurality of events when said second closed state status icon of said second client non-server application is actuated;

(j) receiving, by said first client non-server application, said second event information associated with said one of the plurality of events from said second client non-server application when said second client non-server application practices said one of the plurality of events and when said second open state status icon of said second client non-server application is actuated and when said first open state status icon of said first client non-server application is actuated;

(k) not receiving, by said first client non-server application, said second event information from said second client non-server application even though said second client non-server application practices said one of the plurality of events and even though said second open state status icon of said second client non-server application is actuated when said first closed state status icon of said first client non-server application is actuated,

(l) when said first client non-server application receives said second event information associated with said one of the plurality of events from said second client non-server application, comparing, by said first client non-server application, said second event information received from said second client non-server application with the plurality of events in said first set of stored data and locating a match between said second event information and one of the plurality of events in said first set of stored data,

(m) identifying, by said first client non-server application, one of the plurality of functions in said first set of stored data which corresponds to said one of the plurality of events in said first set of stored data, and

(n) executing, by said first client non-server application, said one of the plurality of functions.

12. The method of claim 11, wherein said first client non-server application further includes a first event filter icon, said second client non-server application further includes a second event filter icon, and said third client non-server application further includes a third event filter icon, each said event filter icon including a plurality of send boxes each of which is adapted to be actuated, a corresponding plurality of receive boxes each of which is adapted to be actuated, and a corresponding plurality of events which pertain, respectively, to the plurality of send boxes and to the plurality of receive boxes, further comprising the steps of:

(o) when said second client non-server application identifies said one of the plurality of events in said second set of stored data, determining, by said second client non-server application, a state of said second event filter icon;

(p) transmitting, by said second client non-server application, second event information associated with said one of the plurality of events directly to said fast client non-server application without routing said second event information through said server when said second client non-server application practices said one of the plurality of events in said second set of stored data and when one of the send boxes in the second event filter icon corresponding to said one of the plurality of events in said second set of stored data is actuated, and

(q) not transmitting, by said second client non-server application, said second event information directly to said first client non-server application even though said second client non-server application practices said one of the plurality of events in said second set of stored data and even though said second open state status icon of said second client non-server application is actuated when one of the send boxes in the second event filter icon corresponding to said one of the plurality of events in said second set of stored data is not actuated.

13. The method of claim 12, further comprising the steps of:

(r) receiving, by said first client non-server application, said second event information associated with said one of the plurality of events from said second client non-server application when said second client non-server application practices said one of the plurality of events and when one of the receive boxes in the first event filter icon of said first client non-server application corresponding to said one of the plurality of events in said first set of stored data is actuated, and

(s) not receiving, by said first client non-server application, said second event information from said second client non-server application even though said second client non-server application practices said one of the plurality of events in said second set of stored data and even though said second open state status icon of said second client non-server application is actuated and even though said first open state status icon of said first client non-server application is actuated when said one of the receive boxes in the first event filter icon of said first client non-server application, corresponding to said one of the plurality of events in said second set of stored data, is not actuated.

14. The method of claim 13, further comprising the steps of:

(t) revoking, by said first client non-server application, said interest in said first event by transmitting a revocation object to said server,

(u) unregistering, by said server, said interest by said first client non-server application in said first event, and distributing, by said server, said revocation object to said second client non-server application and said third client non-server application;

(v) unregistering, by said second client non-server application and said third client non-server application, said interest by said first client non-server application in said first event, and not transmitting; by said second client non-server application, said second event information to said first client non-server application in response thereto.

15. The method of claim 13, further comprising the steps of:

(t) terminating, by said first client non-server application, after said first client non-server application expresses said interest in said first event by transmitting said first interest object to said server,

(u) noticing, by said server, the termination of said first client non-server application and unregistering therein said interest by said first client non-server application in said first event,

(v) distributing, by said server, a revocation object to said second client non-server application and said third client non-server application, and unregistering, by said second client non-server application and said third client non-server application, said interest by said first client non-server application in said first event, and

(w) not transmitting, by said second client non-server application, said second event information to said first client non-server application in response thereto.

16. The method of claim 11, wherein said server remains operatively interconnected between said first client non-server application and said second client non-server application and said third client non-server application when said first client non-server application executes said one of the plurality of functions, further comprising the steps of:

(o) expressing, by said third client non-server application, an interest in said third event by transmitting said third interest object corresponding to said third event to said server, and re-transmitting, by said server, said third interest object to said first client non-server application and to said second client non-server application;

(p) comparing, by-said first client non-server application, said third interest object received from said server with the plurality of interest objects in said first set of stored data stored in said first client non-server application;

(q) comparing, by said second client non-server application, said third interest object received from said server with the plurality of interest objects in said second set of stored data stored in said second client non-server application;

(r) locating, by said first client non-server application, a match between said third interest object received from said server and one of the interest objects in said first set of stored data stored in said first client non-server application;

(s) identifying, by said first client non-server application, one of the plurality of events representing said third event in said first set of stored data corresponding to said one of the interest objects in said first set of stored data;

(t) determining, by said first client non-server application, a state of said first open state status icon and said first closed state status icon;

(u) transmitting, by said first client non-server application, first event information corresponding to said one of the plurality of events representing said third event in said first set of stored data directly to said third client non-server application without routing said first event information through said server when said first client non-server application practices said one of the plurality of events in said first set of stored data and when said first open state status icon is actuated;

(v) not transmitting, by said first client non-server application, said first event information to said third client non-server application even though said first client non-server application practices said one of the plurality of events in said fast set of stored data when said first closed state status icon is actuated;

(w) receiving, by said third client non-server application, said first event information from said first client non-server application when said third open state status icon is actuated;

(x) not receiving, by said third client non-server application, said first event information from said first client non-server application when said third closed state status icon is actuated;

(y) when said third client non-server application receives said first event information from said first client non-server application, comparing, by said third client non-server application, said first event information received from said first client non-server application with the plurality of events in said third set of stored data and locating a match between said first event information and one of the plurality of events in said third set of stored data;

(z) identifying, by said third client non-server application, another one of the plurality of functions in said third set of stored data which corresponds to said one of the plurality of events in said third set of stored data; and

(aa) executing, by said third client non-server application, said another one of the plurality of functions.

17. The method of claim 16, wherein said first client non-server application includes a first event filter icon, said second client non-server application includes a second event filter icon, and said third client non-server application includes a third event filter icon, each said event filter icon including a plurality of send boxes each of which is adapted to be actuated, a corresponding plurality of receive boxes each of which is adapted to be actuated, and a corresponding plurality of events which pertain, respectively, to the plurality of send boxes and to the plurality of receive boxes, further comprising the steps of:

(bb) when said first client non-server application identifies said one of the plurality of events in said first set of stored data, determining, by said first client non-server application, a state of said first event filter icon;

(cc) transmitting, by said first client non-server application, first event information associated with said one of the plurality of events directly to said third client non-server application without routing said first event information through said server when said first client non-server application practices said one of the plurality of events in said first set of stored data and when one of the send boxes in the first event filter icon corresponding to said one of the plurality of events in said first set of stored data is actuated, and

(dd) not transmitting, by said first client non-server application, said first event information directly to said third client non-server application even though said first client non-server application practices said one of the plurality of events in said first set of stored data and even though said first open state status icon of said first client non-server application is actuated when one of the send boxes in the first event filter icon corresponding to said one of the plurality of events in said first set of stored data is not actuated.

18. The method of claim 17, further comprising the steps of:

(ee) receiving, by said third client non-server application, said first event information associated with said one of the plurality of events from said first client non-server application when said first client non-server application practices said one of the plurality of events and when said one of the send boxes in the first event filter icon is actuated and when one of the receive boxes in the third event filter icon of said third client non-server application, corresponding to said one of the plurality of events in said first set of stored data, is actuated, and

(ff) not receiving, by said third client non-server application, said first event information from said first client non-server application when said first client non-server application practices said one of the plurality of events in said first set of stored data even though said first open state status icon of said first client non-server application is actuated and even though one of the send boxes in the first event filter icon is actuated and even though said third open state status icon of said third client non-server application is actuated when said one of the receive boxes in the third event filter icon of said third client non-server application, corresponding to said one of the plurality of events in said first set of stored data, is not actuated.

19. The method of claim 18, further comprising the steps of:

(gg) revoking, by said third client non-server application, said interest in said third event by transmitting a revocation object to said server,

(hh) unregistering, by said server, said interest by said third client non-server application in said third event, and distributing, by said server, said revocation object to said first client non-server application and said second client non-server application,

(ii) unregistering, by said first client non-server application and said second client non-server application, said interest by said third client non-server application in said third event; and

(jj) not transmitting, by said first client non-server application, said first event information to said third client non-server application in response thereto.

20. The method of claim 18, further comprising the steps of:

(gg) terminating, by said third client non-server application, after said third client non-server application expresses said interest in said third event by transmitting said third interest object to said server;

(hh) noticing, by said server, the termination of said third client non-server application and unregisters, by said server, said interest by said third client non-server application in said third event;

(ii) distributing, by said server, a revocation object to said first client non-server application and said second client non-server application, and unregistering, by said first client non-server application and said second client non-server application, said interest by said third client non-server application in said third event; and

(jj) not transmitting, by said first client non-server application, said first event information to said third client non-server application in response thereto.

21. A method of communicating between client applications, comprising the steps of:

(a) transmitting an interest object associated with an event from a first client non-server application to a server,

(b) receiving the interest object in the server and retransmitting the interest object from the server to a second client non-server application; and

(c) when the second client non-server application practices the event, transmitting event information associated with the practice of said event from said second client non-server application directly to said first client non-server application without routing said event information through the server.

22. The method of claim 21, further comprising:

(d) responding by said server to one or more revocation objects received from one or more client non-server applications; and

(e) responding by said server to additional interest objects received from other additional client applications,

said event information is not transmitted between said second client non-server application and said server, said event information is not transmitted between said server and said first client non-server application,

said server is not separated from said first client non-server application and said server is not separated from said second client non-server application and said server is not separated from the other client applications when said event information is transmitted from said second client non-server application directly to said first client non-server application, said server remaining operatively interconnected between said first client non-server application and said second client non-server application and the other client applications when said event information is transmitted from said second client non-server application directly to said first client non-server application for responding to said one or more revocation objects, said additional interest objects, and other requests received by the server from the client applications; and

said first client non-server application and said second client non-server application each including,

icon generating means for generating an icon, and

event determination means operatively connected to said icon generating means and responsive to user actuation of said icon for determining if all or some or none of said event information is transmitted from said second client non-server application and if all or some of none of said event information is received by said first client non-server application.

23. The method of claim 22, wherein said icon generated by said icon generating means is an open state status icon, said open state status icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that all of said event is transmitted from said second client non-server application when said open state status icon in said second client non-server application is placed in said on state, said event determination means in said first client non-server application determining that all of said event is received by said first client non-server application when said open state status icon in said first client non-server application is placed in said on state.

24. The method of claim 22, wherein said icon generated by said icon generating means is a closed state status icon, said closed state status icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that none of said event is transmitted from said second client non-server application when said closed state status icon in said second client non-server application is placed in said on state, said event determination means in said first client non-server application determining that none of said event is received by said first client non-server application when said closed state status icon in said first client non-server application is placed in said on state.

25. The method of claim 24, wherein said icon generated by said icon generating means in said second client non-server application is a broadcast icon, said broadcast icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that all of said event, which accrued in said second client non-server application following the placement of the closed state status icon in the second client non-server application in the on state, is transmitted from said second client non-server application when said broadcast icon in said second client non-server application is placed in said on state.

26. The method of claim 22, wherein said icon generated by said icon generating means is an event filter icon, said event filter icon being adapted to be placed in an on state, said event determination means in said second client non server application determining that either some or all or none of said event is transmitted from said second client non-server application when said event filter icon in said second client non-server application is placed in said on state and said user actuation of said event filter icon in said second client non-server application indicates that either some or all or none of said event will be transmitted from said second client non-server application, said event determination means in said first client non-server application determining that either some or all or none of said event is received by said first client non-server application when said event filter icon in said first client non-server application is placed in said on state and said user actuation of said event filter icon in said first client non-server application indicates that either some or all or none of said event will be received by said first client non-server application.

27. The method of claim 22, wherein the responding step (e) comprises the steps of:

transmitting said interest object associated with said event from a third client non-server application to said server;

retransmitting said interest object from said server to said second client non-server application; and

transmitting event information associated with said event from said second client non-server application to said first client non-server application and to said third client non-server application without routing said event information through said server when said second client non-server application practices said event.

28. The method of claim 22, further comprising the steps of:

transmitting a revocation object from said first client non-server application to said server;

in response thereto, transmitting said revocation object from said server to said second client non-server application; and in response to said revocation object, un-registering, within said second client non-server application, said interest object of said first client non-server application associated with said event and refraining, by said second client non-server application, from sending said event information associated with said event directly to said first client non-server application when said second client non-server application practices said event.

29. The method of claim 22, wherein said first client non-server application is adapted to terminate its execution, and wherein the responding step (d) comprises the steps of:

responding, by said server, to a revocation object received from said first client non-server application and transmitting said revocation object from said server to said second client non-server application when said first client non-server application terminates its execution; and

in response to said revocation object, un-registering, within said second client non-server application, said interest object of said first client non-server application corresponding to said event and refraining, by said second client non-server application, from transmitting said event information associated with said event directly to said first client non-server application when said second client non-server application practices said event.

30. The method of claim 22, further comprising the steps of:

registering a third client non-server application with said server after said server transmitted said interest object to said second client non-server application,

in response to the registering step, transmitting said interest object from said server to said third client non-server application, transmitting from said third client non-server application said event information associated with said event directly to said first client non-server application without routing said event information through said server when said third client non-server application practices said event.

31. The method of claim 22, wherein the first client non-server application is executing in a workstation, the workstation including a display and a mouse, the display including a window of said first client non-server application, the window including an open state status icon, the transmitting step (a) comprising the steps of:

(a1) using said mouse, clicking on said open state status icon of said first client non-server application, and

(a2) when the open state status icon of said first client non-server application is clicked on in response to the clicking step (a1), receiving into said first client non-server application said event information directly from said second client non-server application.

32. The method of claim 22, wherein said other additional client applications include a particular client application, said first client non-server application storing a plurality of events and a plurality of interest objects associated, respectively, with the plurality of events, and wherein the responding step (e) further comprises the steps of:

(e1) transmitting a second interest object associated with a second event from said particular client application to said server and retransmitting said second interest object from said server to said first client non-server application;

(e2) receiving said second interest object from said server into said first client non-server application;

(e3) comparing by said first client non-server application said second interest object received from said server with said plurality of interest objects stored in said first client non-server application; and

(e4) transmitting event information associated with a practice of said second event from said first client non-server application directly to said particular client application without routing said second event through said server when, responsive to the comparing step (e3), said second interest object corresponds to one of said plurality of interest objects stored in said first client non-server application.

33. The method of claim 32, wherein the first client non-server application is executing in a workstation, the workstation including a display and a mouse, the display including a window of said first client non-server application, the window including an open state status icon, the transmitting step (a) comprising the steps of;

(a1) using said mouse, clicking on said open state status icon of said first client non-server application, and

(a2) when the open state status icon of said first client non-server application is clicked on in response to the clicking step (a1), transmitting said event information associated with the practice of said second event from said first client non-server application directly to said particular client application.

34. The method of claim 32, wherein the first client non-server application is executing in a workstation, the workstation including a display and a mouse, the display including a window of said first client non-server application, said window including an event filter icon of said first client non-server application, the display including a subwindow of said event filter icon of said first client non-server application when the event filter icon of said first client non-server application is clicked on by the mouse, the subwindow including said event, a send box being associated with said event, and a receive box being associated with said event, the receiving step (c) including the steps of:

(c1) using said mouse, clicking on said receive box associated with said event in said subwindow of said event filter icon of said first client non-server application, and

(c2) when the receive box in said subwindow of said event filter icon of said first client non-server application is clicked on in response to the clicking step (c1), receiving said event information originating from the second client non-server application into said first client non-server application without routing the event information through said server.

35. The method of claim 34, wherein said subwindow of said event filter icon of said first client non-server application includes said second event, a send box associated with said second event, and a receive box associated with said second event, the transmitting step (e4) further including the steps of:

(e41) using said mouse, clicking on said send box associated with said second event in said subwindow of said event filter icon of said first client non-server application, and

(e42) when the send box in said subwindow is clicked on in response to the clicking step (e41), transmitting said event information associated with the practice of said second event from said first client non-server application directly to said particular client application without routing said second event through said server.

36. A system adapted for intercommunicating between client applications, comprising:

a first client non-server application adapted to transmit an interest object corresponding to an event;

a second client non-server application; and

a server operatively interposed between said first client non-server application and said second client non-server application,

said first client non-server application transmitting said interest object to said server,

said server transmitting said interest object to said second client non-server application,

said second client non-server application transmitting said event directly to said first client non-server application without routing said event through said server in response to said interest object received by said second client non-server application from said server when said second client non-server application practices said event.

37. The system of claim 36, wherein:

said server responds to a revocation object from said first client non-server application and transmits said revocation object to said second client non-server application when said first client non-server application terminates its execution, said second client non-server application not transmitting said event to said first client non-server application in response to said revocation object when said second client non-server application practices said event,

said event is not transmitted between said second client non-server application and said server, said event is not transmitted between said server and said first client non-server application, and

said server is not separated from said first client non-server application and said server is not separated from said second client non-server application when said event is transmitted from said second client non-server application directly to said first client non-server application, said server remaining operatively interconnected between said first client non-server application and said second client non-server application, when said event is transmitted from said second client non-server application directly to said first client non-server application, for responding to said revocation object and other requests received by the server from the client applications.

38. The system of claim 37, wherein said first client non-server application and said second client non-server application each comprise:

icon generating means for generating an icon; and

event determination means operatively connected to said icon generating means and responsive to user actuation of said icon for determining if all or some or none of said event is transmitted from said second client non-server application and if all or some of none of said event is received by said first client non-server application.

39. The system of claim 38, wherein said icon generated by said icon generating means is an open state status icon, said open state status icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that all of said event is transmitted from said second client non-server application when said open state status icon in said second client non-server application is placed in said on state, said event determination means in said first client non-server application determining that all of said event is received by said first client non-server application when said open state status icon in said first client non-server application is placed in said on state.

40. The system of claim 38, wherein said icon generated by said icon generating means is a closed state status icon, said closed state status icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that none of said event is transmitted from said second client non-server application when said closed state status icon in said second client non-server application is placed in said on state, said event determination means in said first client non-server application determining that none of said event is received by said first client non-server application when said closed state status icon in said first client non-server application is placed in said on state.

41. The system of claim 40, wherein said icon generated by said icon generating means in said second client non-server application is a broadcast icon, said broadcast icon being adapted to be placed in an on state, said event determination means in said second client non-server application determining that all of said event, which accrued in said second client non-server application following the placement of the closed state status icon in the second client non-server application in the on state, is transmitted from said second client non-server application when said broadcast icon in said second client non-server application is placed in said on state.

42. The system of claim 38, wherein said icon generated by said icon generating means is an event filter icon, said event filter icon being adapted to be placed in an on state, said event determination means in said second client non server application determining that either some or all or none of said event is transmitted from said second client non-server application when said event filter icon in said second client non-server application is placed in said on state and said user actuation of said event filter icon in said second client non-server application indicates that either some or all or none of said event will be transmitted from said second client non-server application, said event determination means in said first client non-server application determining that either some or all or none of said event is received by said first client non-server application when said event filter icon in said first client non-server application is placed in said on state and said user actuation of said event filter icon in said first client non-server application indicates that either some or all or none of said event will be received by said first client non-server application.

43. The system of claim 37, wherein said second client non-server application includes a second means for storing a plurality of events and a plurality of interest objects corresponding, respectively, to said plurality of events,

said second client non-server application comparing said interest object received from said server with said plurality of interest objects stored in said second means and transmitting said event directly to said first client non-server application without routing said event through said server when said interest object from said server corresponds to one of said plurality of interest objects stored in said second means.

44. The system of claim 43, wherein said second client non-server application transmits a second interest object corresponding to a second event to said server, said server transmitting said second interest object to said first client non-server application,

said first client non-server application transmitting said second event directly to said second client non-server application without routing said second event through said server in response to said second interest object received by said first client non-server application from said server when said first client non-server application practices said second event.

45. The system of claim 44, wherein said first client non-server application includes a first means for storing a plurality of events and a plurality of interest objects corresponding, respectively, to said plurality of events,

said first client non-server application comparing said second interest object from said server with said plurality of interest objects stored in said first means and transmitting said second event directly to said second client non-server application without routing said second event through said server when said second interest object from said server corresponds to one of said plurality of interest objects stored in said first means.

46. The system of claim 45, wherein said first client non-server application and said second client non-server application each comprise an interaction display apparatus, a framework apparatus, and an interface setup apparatus operatively interposed between said interaction display apparatus and said framework apparatus,

said interface setup apparatus in said first client non-server application including said first means for storing,

said interface setup apparatus in said second client non-server application including said second means for storing.

47. The system of claim 46, wherein said framework apparatus of said second client non-server application transmits said event directly to the framework apparatus of said first client non-server application without routing said event through said server in response to said interest object received by said framework apparatus of said second client non-server application from said server when said second client non-server application practices said event.

48. The system of claim 47, wherein said framework apparatus of said first client non-server application transmits said second event directly to the framework apparatus of said second client non-server application without routing said second event through said server in response to said second interest object received by said framework apparatus of said first client non-server application from said server when said first client non-server application practices said event.

49. A method of intercommunicating between client applications, comprising the steps of:

(a) transmitting a first interest object associated with a first event from a first client non-server application to a server, said first interest object being transmitted from said first client non-server application to said server when said first client non-server application is interested in receiving event information associated with a practice of said first event by other client applications;

(b) routing said first interest object from said first client non-server application through said server and retransmitting said first interest object from said server to a second client non-server application;

(c) responding by said server to a revocation object received from said first client non-server application when said first client non-server application transmits said revocation object to said server;

(d) when said second client non-server application receives said first interest object from said server and when said second client non-server application practices said first event, transmitting event information associated with the practice of said first event from said second client non-server application directly to said first client non-server application, said event information being transmitted directly from said second client non-server application to said first client non-server application without routing said event information through said server; and

(e) when said server receives additional interest objects from other client applications, responding by said server to said additional interest objects received from said other client applications,

said event information is not transmitted between said second client non-server application and said server, said event information is not transmitted between said server and said first client non-server application,

said server is not separated from said first client non-server application and said server is not separated from said second client non-server application and said server is not separated from the other client applications when said event information is transmitted from said second client non-server application directly to said first client non-server application, said server remaining operatively interconnected between said first client non-server application and said second client non-server application and the other client applications, when said event information is transmitted from said second client non-server application directly to said first client non-server application, for responding to said revocation object,

said additional interest objects, and other requests received by the server from the client applications; and

said first client non-server application and said second client non-server application each including icon generating means for generating an icon, and

event determination means operatively connected to said icon generating means and responsive to user actuation of said icon for determining if all or some or none of said event information is transmitted from said second client non-server application and if all or some of none of said event information is received by said first client non-server application.

50. The method of claim 49, further comprising the steps of:

(f) transmitting said revocation object from said first client non-server application to said server, said revocation object being transmitted from said first client non-server application when said first client non-server application is no longer interested in receiving said event information associated with the practice of said first event;

(g) transmitting said revocation object from said server to said second client non-server application; and

(h) when said second client non-server application receives said revocation object and before said second client non-server application practices said event, unregistering within said second client non-server application the interest by said first client non-server application in said event information associated with the practice of said first event,

said event information not being transmitted from said second client non-server application directly to said first client non-server application in response to the unregistering step (h).

51. The method of claim 50, further comprising the steps of:

(i) when said first client non-server application terminates, transmitting said revocation object from said first client non-server application to said server;

(j) unregistering within said server the interest by said fast client non-server application in said event information associated with the practice of said first event in response to the transmitting step (i) when said first client non-server application terminates;

(k) transmitting from said server said revocation object to said second client non-server application in response to the unregistering step (j); and

(l) when said second client non-server application receives said revocation object and before said second client non-server application practices said first event, unregistering within said second client non-server application the interest by said first client non-server application in said event information associated with the practice of said first event,

said event information not being transmitted from said second client non-server application directly to said first client non-server application in response to the unregistering step (l).

52. The method of claim 51, further comprising the steps of:

(m) transmitting said first interest object, routed through said server during the routing step (b), from said server to a third client non-server application and registering said first interest object within said third client non-server application; and

(n) transmitting said event information associated with the practice of said first event from said third client non-server application directly to said first client non-server application without routing said event information through said server in response to the registering step (m) when said third client non-server application practices said first event.

53. An intercommunication system adapted for intercommunicating between client applications, comprising:

a first client non-server application adapted to transmit an interest object;

a second client non-server application;

other client applications adapted to transmit other interest objects; and

a server operatively interposed between said first client non-server application and said second client non-server application and said other client applications,

said first client non-server application adapted for sending said interest object corresponding to an event to said server,

said server adapted to receive any revocation objects transmitted from said first client non-server application, said server transmitting said interest object from said server to said second client non-server application,

said second client non-server application responsive thereto sending event information associated with said event directly to said first client non-server application without routing said event information through said server when said second client non-server application practices said event,

said server continuing to respond to said other interest objects received from said other additional client applications,

said event information is not transmitted between said second client non-server application and said server, said event information is not transmitted between said server and said first client non-server application,

said server is not separated from said fast client non-server application and said server is not separated from said second client non-server application and said server is not separated from said other client applications when said event information is sent from said second client non-server application directly to said fast client non-server application, said server remaining operatively interconnected between said first client non-server application and said second client non-server application and said other client applications when said event information is sent from said second client non-server application directly to said fast client non-server application for responding to said other interest objects, said revocation objects, and other requests from the client applications; and

said first client non-server application and said second client non-server application each including icon generating means for generating an icon, and event determination means operatively connected to said icon generating means and responsive to user actuation of said icon for determining if all or some or none of said event information is transmitted from said second client non-server application and if all or some of none of said event information is received by said first client non-server application.

54. The intercommunication system of claim 53, wherein said other client applications comprise a third client non-server application adapted for sending another said interest object corresponding to said event to said server, said server responsive thereto sending said another interest object to said second client non-server application, said second client non-server application responsive thereto sending event information associated with said event directly to said first client non-server application and to said third client non-server application without routing said event information through said server when said second client non-server application practices said event.

55. The intercommunication system of claim 53, wherein said first client non-server application is adapted for sending said revocation object to said server, said server responsive thereto sending said revocation object to said second client non-server application, said second client non-server application responsive to said revocation object un-registering therein said interest object of said first client non-server application corresponding to said event and refraining from sending said event information associated with said event directly to said first client non-server application when said second client non-server application practices said event.

56. The intercommunication system of claim 53, wherein said first client non-server application is adapted to terminate its execution, said server transmitting said revocation object to said second client non-server application when said first client non-server application terminates its execution, said second client non-server application responsive to said revocation object un-registering therein said interest object of said first client non-server application corresponding to said event and refraining from sending said event information associated with said event directly to said first client non-server application when said second client non-server application practices said event.

57. The intercommunication system of claim 53, wherein said other client applications comprise a third client non-server application adapted for registering itself with said server after said server sent said interest object to said second client non-server application, said server responsive thereto sending said interest object of said first client non-server application corresponding to said event to said third client non-server application, said third client non-server application sending said event information associated with said event directly to said first client non-server application without routing said event information through said server when said third client non-server application practices said event.


Description

BACKGROUND OF THE INVENTION

The subject matter of the present invention relates to a method and apparatus for providing direct inter-process communications between computer program applications executing in computer workstations that provide a window display interface to an operator, and, more particularly, to an intertask communication framework and associated human interface method and apparatus, disposed in association with each of a plurality of client applications executing in a plurality of workstations, for transmitting an event between two or more computer program applications executing in one or more of the workstations without requiring the transmitted event to pass through an intervening server or dispatcher program executing in one of the workstations.

Computer progams that operate with a network often have multiple programs operating concurrently. It is frequently necessary for information, such as events, to be transferred from one program to another, either within a single workstation or across a network of interconnected computer workstations. An operator at one of the workstations may process information by using different programs operating concurrently in the workstation or across the network of workstations. The operator may also retrieve information by using a multiple number of computer programs executing concurrently in the single workstation or across the network or interconnected workstations. It is therefore important that information be quickly and easily transferred between the multiple number of programs operating in the one or more interconnected workstations.

Windowing software technology is applied where it is important for an operator to display and interact with multiple programs executing concurrently in a computer system comprising one or more interconnected workstations. A "window" is defined to be a portion of a display screen, such as a cathode ray tube (CRT). The window covers less than the entirety of the screen. As a result, there may be a multiple number of windows on the screen at one time. Typically, the user moves a cursor around the screen by use of an input device known as a mouse or by use of multiple keys on a keyboard. The cursor can be moved from one window to another on the screen, and, when the cursor is present within a particular window on the screen, the user/operator is placed in communication with the application program which generated that particular window on the screen. As a result, the operator may access a multiple number of different application programs thereby accomplishing multiple tasks without having to load a new program each time a new task must be performed.

However, when concurrently accessing a multiple number of different application programs executing in a workstation or across a network of workstations, is is often necessary for a user/operator to transfer information from one windowed program executing in a first workstation to another windowed program executing in either the first workstation or in a second, different workstation connected to the first workstation across the network. Transferring information between programs operating in a windowing environment is disclosed in the preferred embodiment of the present invention; however, such a windowing environment is not necessary in order to practice the invention of this specification as claimed.

There are at least three conventional techniques for transferring information between concurrently operating programs in a computer system.

The first conventional technique is called "cut and paste". This comprises pointing to and selecting information such as text or data in one window to highlight it and thereby separate it from the remaining information in the window. The user presses a special button or key which moves the selected information to an area of memory specially designated by the operating system and known as the "paste memory" or "clipboard". The user then moves the cursor to another window which is adapted to receive the information. A "paste button" or command is invoked by the user to retrieve the stored information from the designated memory area and place it at the location of the cursor. Note that all steps of this process are carried out by the user.

The second conventional technique establishes a programmed connection between two programs, each of which may display information in a window. Both programs must be designed to respond to a predetermined input command that causes information to be shifted from one program to another. This operation may also be entirely under the control of the user and requires a user input in order to function. Each communication path between pairs of programs must be programmed into the code of both programs, which creates an inflexible system. It is also difficult to add new communication paths or to change existing communication paths.

The third conventional technique is described in U.S. Pat. No. 5,448,738 to Good et al issued Sep. 5, 1995, and in European Patent Application number 0 380 211 published on Aug. 1, 1990 and entitled "Method for Information Communication between Concurrently Operating Computer Programs" to William E. Good et al (hereinafter called "the Good et al disclosure"), the disclosures of which are incorporated by reference into the specification of this application. In the Good et al disclosure, the user interfaces with application programs through one or more window displays and an input device on a computer workstation. One or more information codes and one or more corresponding application programs are registered with a dispatcher program (otherwise known as a "server"). As a result, a list is formed in the dispatcher program, the list including a plurality of information codes and a corresponding plurality of application program identifiers. Then, when a first application program wants to send event information to another concurrently executing second application program, a template, which includes event information and a corresponding information code, is generated by the first application program and the template is transmitted by the first application program to the dispatcher program. The information code in the template from the first application program is compared with the information code in the list registered with the dispatcher program. If a match between information codes is found, the event information associated with the information code in the template is transmitted to the application program that is associated with the information code in the list registered with the dispatcher program.

The Good et al disclosure is similar to other conventional, prior art tools for enabling inter-process communication between application programs, all of which are based on "client-server techniques". Examples of such conventional tools include the "X Window System" and Sun's "Tooltalk". In the Good et al disclosure and the other conventional tools, when using the prior art client-server techniques, all of the data to be communicated between concurrently executing computer program applications must be routed through a server program (the "server program" being similar to the "dispatcher program" in the Good et al disclosure). If many concurrently executing program applications exist in the network, the server or dispatcher may have too many event messages to transmit at any one time. This results in slower throughput as well as increased network traffic. In addition, when using the prior art client-server technique, the user operator executing a first application program can send only certain preselected event information messages to a second application program. That is, the user can send only a fixed set of predefined event information messages which are allowed by the system network; he cannot define or customize his own event information messages for transmission to the second application program. For example, if a font size was changed in one application, using the conventional client-server technique (where all event messages must be routed through the server), there was no way to communicate the changed font size, changed in one application, to any other application in the network because the "changed font size" was not among the fixed set of predefined event information messages allowed for transmission from one application to another application in the network. In addition, when using the conventional client-server technique, particular event information data must always be communicated from a first computer program application to a server program and from the server program to a second program application. Yet, that server program may not know if any other program applications are interested in receiving that particular event data. As a result, when the server receives the particular event information data from the first program application, the server must then determine if any other applications are interested in receiving that particular event data. If no other applications are interested in receiving the particular event data, the server program wasted its resources in handling the particular event data because it will never be communicated to any other application.

Furthermore, data communicated while using the conventional tools are poorly structured (forming "globs") and provide no mechanism for checking for errors in the data communicated. It is the responsibility of the application programs to interpret the data in the correct manner and handle error conditions. Therefore, when using the conventional tools, the ability of the application programmer to inter-communicate complex data structures between concurrently executing computer program applications is very limited.

As noted earlier, the conventional tools do not provide a mechanism which would allow application programmers to selectively extend or customize the type of events and/or data which could be inter-communicated between concurrently executing applications executing in one or more computer workstations. As a result, the absence of a sufficiently high level of programming abstraction in these conventional tools requires application programmers to be concerned with low level issues, such as data formats on various platforms and communication rendevous (such as, a known property name of a known window, as in the prior art "X Window System").

Finally, these conventional tools provide no easy way for end-users of applications to control the flow of data and visualize the connectivity between applications.

Therefore, there is a need for a framework that will: allow fast communication and sharing of complex data, allow strong typing of data structures, and provide a degree of extensibility when using application-defined data types and events.

In addition, there is a need for a framework that will allow end users of workstation applications to visualize the connectivity network between workstation applications and will enable the end users sitting at those workstations to control the inter-process data communication between computer program applications which are concurrently executing in one or more computer workstation environments.

SUMMARY OF THE INVENTION

Accordingly, it is a primary object of the present invention to provide an extensible intertask communication method and apparatus that is adapted for transmitting and communicating event data between a first client application and a plurality of second client applications concurrently executing in one or more workstations of a network without requiring that event data to pass through and register with an intervening server or dispatcher application, the intertask communication method and apparatus being adapted to be interconnected between the first and the second client applications during the communication of that event data between the first client application and the second client applications.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications concurrently executing in one or more workstations of a network without requiring that event data to pass through and register with an intervening server or dispatcher application, the intertask communication method and apparatus including means for predefining in each client application a selected set of events and interest objects and functions, a first client application being interested in receiving a first event and a second client application transmitting the first event to the first client application without registering the first event with the server when the second client application practices the first event.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications concurrently executing in one or more workstations of a network without requiring that event data to pass through and register with an intervening server or dispatcher application, the intertask communication method and apparatus including means for predefining in each client application a selected set of events and interest objects and functions, a first client application being interested in receiving a first event and a second client application transmitting the first event to the first client application without registering the first event with the server when the second client application practices the first event and means for advising the second client application that the first client application is interested in the selected set of event data messages.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications concurrently executing in one or more workstations of a network without requiring that event data to pass through and register with an intervening server or dispatcher application, the intertask communication method and apparatus including: means for predefining in each client application a selected set of events and functions and interest objects where a first client application is interested in receiving an event data message associated with a first event and a second client application is adapted to transmit the first event data message to the first client application without registering the first event data message with the server when the second client application practices the first event; means for advising the second client application that the first client application is interested in receiving the first event data message; means for transmitting the first event data message directly from the second client application to the first client application when the first event is practiced by the second client application; means for selectively determining which ones, if any, of the selected set of event data messages predefined in the first client application will be received in the first client application; and means for selectively determining which ones, if any, of the selected set of event data messages predefined in the second client application, where an interest object was sent from the first client application to the second client application, will be transmitted from the second client application to the first client application.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications, where the intertask communication method and apparatus further includes means for completely preventing any of the selected set of event data messages predefined in the first client application from being received into the first client application from the second client application, and means for completely preventing any of the selected set of event data messages predefined in the second client application, where an interest object was sent from the first client application to the second client application via the server, from being transmitted from the second client application.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications, where the intertask communication method and apparatus further includes means for completely allowing all of the selected set of event data messages predefined in the first client application to be received into the first client application from the second client application, and means for completely allowing all of the selected set of event data messages predefined in the second client application, where an interest object was sent from the first client application to the second client application via the server, to be transmitted from the second client application.

It is a further object of the present invention to provide an extensible intertask communication method and apparatus adapted for transmitting and communicating event data between a first client application and a plurality of second client applications, where the intertask communication method and apparatus further includes means for preventing any event data messages from being received in or transmitted from a first client application, and means for subsequently broadcasting a plurality of the event data messages from the first client application to the second client application following the practice by the first client application of the plurality of events associated with the plurality of event data messages.

It is a further object of the present invention to provide an easy to use graphical user interface for use with the intertask communication method and apparatus of the present invention in order to allow the user/operator to easily visualize and control the functional operation of the Framework portion of each client application.

In accordance with these and other objects of the present invention, one or more workstations are interconnected together by an extensible intertask communication (ITC) apparatus. A workstation has a display, and the display will present one or more windows to an operator. Each window is being generated on the workstation display in response to the execution of an application program which is stored in the workstation memory and is being executed by the workstation processor. The application program is hereinafter called a "client application". The intertask communication (ITC) apparatus actually includes at least a first and a second client application, stored in either one workstation memory or in a pair of workstation memories, and a separate server program stored in one of the workstation memories. Each client application will include a Human Interface Code and a Framework Code.

The Framework Code of each client application in conjunction with the server program, of the intertask communication (ITC) method and apparatus in accordance with the present invention, will transmit and communicate event information directly between the first client application and the second client application, of a plurality of client application programs concurrently executing in one or more workstations of a network of interconnected workstations, without requiring that event information to pass through and register with an intervening server or dispatcher application program, if and when an interest object is initially transmitted between the first client application and the second client application via the server program.

An event is defined to be a change or an action taken by one operator at a workstation. For example, that operator may drag the cursor by moving a mouse or perhaps the operator will delete data or create new data. That event information, being practiced by one operator in one program application at one workstation, may be needed by another operator in another program application at another workstation. The interprocess communication method and apparatus of the present invention can transmit that event information from the one program application to all other program applications in the network of workstations, without requiring that event information to register with an intervening server or dispatcher program, provided that an interest object(s) was initially transmitted between the one program application and all the other program applications via a server which are concurrently executing in all of the workstations in the network of workstations.

Hereinafter, one program application, executing in one workstation in the network, will be called a "first client application", and another program application, executing in the one workstation or in any other workstation in the network of workstations, will be called a "second client application". If a second client application executing in a second workstation is programmed to receive a certain plurality of events, and if an interest object associated with the plurality of events was transmitted from the second client application to a first client application (executing in either the second workstation or a first workstation) via a server program, and when a first event of the plurality of events is being practiced by an operator in a first client application, a set of information associated with that first event will be transmitted from the first client application in a first workstation directly to a second client application executing in either the first workstation or another workstation in the network. However, the set of information associated with that first event will not pass through and register with the server program. As a result, the application programmer can customize the type of and number of events which he requires to be transmitted between client applications by simply pre-programming a particular client application to receive event information associated with a preselected plurality of events.

More particularly, before event information can be transmitted directly between client applications, the following steps must be taken:

1. Each client application in a plurality of client applications are programmed to receive one or more events and to practice one or more functions associated, respectively, with the one or more events (hereinafter called, a "list of events"). When the one or more events and the one or more functions associated with the one or more events are programmed into a particular client application's list of events, that particular client application is said to be interested in receiving event information from other concurrently executing client applications when the events being practiced by the other client applications correspond to the one or more events which are programmed into the particular client application's list of events.

2. Since each event of the one or more events programmed into the particular client application's list of events includes an event identifier or "interest object", the interest objects associated, respectively, with the one or more events are transmitted from the particular client application to an intervening server or dispatcher program which may be resident in another workstation or in the workstation executing the particular client application.

3. The intervening server will re-transmit the interest objects, of the one or more events, to all other concurrently executing client applications which are executing in all the other workstations of the network of workstations. Similarly, all client applications transmit their interests through the server.

4. If a first particular client application program practices an event which corresponds to a previously received interest object which was transmitted from a second particular client application to the first client application via the server, event information associated with that event being practiced by the first particular client application (including the interest object) will be sent out along the network of workstations directly to the second particular client application. Note that the event information associated with the event being practiced by the first particular client application will not be routed through the intervening server or dispatcher program. As a result, when the event is being practiced in the first particular client application, the event information associated with that same event will be approximately simultaneously practiced in the second particular client application. By building the list of events in each client application, the client application developer can customize the type and quantity of events which the client application will send to or receive from other client applications. Since the server program is avoided when the event information is transmitted directly between client applications, valuable processing time is conserved.

However, even though the information associated with the event being practiced by the first particular client application is transmitted directly to the second particular client application, the second particular client application is not required to actually receive the information associated with the event being practiced by the first particular client application. That is, an operator monitoring the second particular client application can use a mouse to click on certain icons which appear in the bottom right hand corner of a window which is displayed in response to the execution of the second particular client application.

For example, the operator can click on a first type of icon called the "status icon". There are three types of "status icons": an "open state" status icon, a "closed state" status icon, and a "locked state" status icon. If the operator clicks on the "open state" status icon for a second particular client application, the second particular client application is open and it will receive all of the event information associated with the event being practiced by the first particular client application. If the operator clicks on the "closed state" status icon for the second particular client application, the second particular client application is closed and it will not receive any of the information associated with the event being practiced by the first particular client application. The operator can click on the "locked state" status icon of the second particular client application although the internal "icon generation" program code for the second particular client application can decide if the locked state status icon is either "on" or "off". That is, with regard to the "locked state" status icon, the application developer can decide that, in certain circumstances, the second particular client application will be closed, will not receive any of the event information associated with the event being practiced by the first particular client application, and will remain closed even if and when the operator at the workstation monitoring the second particular client application clicks on the "open state" status icon.

The operator at the workstation monitoring the first particular client application can click on a second type of icon called the "broadcast" icon. If the status icons for the first particular client application are in the "closed state" for a particular period of time, absolutely no event information associated with any of the events practiced by the first particular client application will be transmitted out to the network by the first particular client application to any other client applications, including the second particular client application, for that particular period of time. However, assume that, following the expiration of that particular period of time, the operator at the workstation monitoring the first particular client application decides to transmit all event information to the second client application associated with events which were practiced by the first particular client application during the particular period of time. In order to transmit all such event information to the second particular client application, the operator at the workstation monitoring the first particular client application clicks on the "broadcast" icon. When the operator monitoring the first particular client application clicks on the "broadcast" icon, event information associated with a plurality of events which were practiced by the first particular client application during the particular period of time when the first particular client application was "closed" will be transmitted to the second particular client application, provided that interest objects associated with those plurality of events were previously transmitted from the second particular client application to the server and from the server to the first particular client application.

The operator at the workstation monitoring the first particular client application can click on still another type of icon called the "event filter" icon. The "event filter" icon appears in the bottom right hand corner of each window on a workstation display, the event filter enabling the operator to selectively choose which events of a plurality of events (being practiced by a particular client application) will be transmitted to another client application(s) and which events of the plurality of events will be received from the other client applications.

Further scope of applicability of the present invention will become apparent from the detailed description presented hereinafter. It should be understood, however, that the detailed description and the specific examples, while representing a preferred embodiment of the present invention, are given by way of illustration only, since various changes and modifications within the spirit and scope of the invention will become obvious to one skilled in the art from a reading of the following detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

A full understanding of the present invention will be obtained from the detailed description of the preferred embodiment presented hereinbelow, and the accompanying drawings, which are given by way of illustration only and are not intended to be limitative of the present invention, and wherein:

FIG. 1 illustrates a computer workstation having a display which includes one or more window displays representing the execution of one or more client application programs;

FIG. 2 illustrates a plurality of client application programs which display a corresponding plurality of window displays on one or a plurality of workstations similar to that shown in FIG. 1, each of the plurality of client applications being interconnected together by an intertask communication (ITC) apparatus which comprises a server program application and one or more individual client applications;

FIG. 3 illustrates a first workstation executing a first client application and a second workstation executing a second client application and also storing the server application software;

FIG. 4 illustrates a more detailed construction of the first client application (client 1 software) and the second client application (client 2 software) in the first and second workstations of FIG. 3;

FIG. 5 illustrates a more detailed construction of the ITC-Human Interface Code of FIG. 4;

FIGS. 6 through 13b illustrate a detailed construction and the functional operation of the ITC Framework (ITC Core) of FIG. 4;

FIGS. 14 through 25 illustrate a detailed construction of the Operator Interaction Display Software of FIG. 5,

FIG. 14 illustrating the status icons and the broadcast icon,

FIGS. 15a through 15e illustrating the event filter icon with its subwindow display, and

FIGS. 16-25 illustrate the use of these icons on a window display being displayed on a display screen of a workstation;

FIGS. 26 and 27 illustrate a detailed construction of the ITC HI Setup software of FIG. 5;

FIG. 26A illustrates a detailed construction of the "Build List of ITC Events" 80 which is illustrated in FIG. 26;

FIGS. 28 and 29 illustrate a detailed construction of the Send An Event Software of FIG. 5;

FIGS. 30 and 31 illustrate a detailed construction of the Receive An Event Software of FIG. 5; and

FIG. 32 illustrates an Intertask Communication (ITC) Sessions Model referenced in the ITC Framework portion of the "Detailed Description of the Preferred Embodiment".

DESCRIPTION OF THE PREFERRED EMBODIMENT

This specification is divided into two parts: (1) a Description of the Preferred Embodiment, which will provide a broader overview of the structure and the functional operation of the Distributed Framework for Intertask Communication Between Workstation Applications of the present invention, and (2) a Detailed Description of the Preferred Embodiment, which will provide a detailed description of the structure and the functional operation of the Distributed Framework for Intertask Communication Between Workstation Applications of the present invention.

The following paragraphs of this "Description of the Preferred Embodiment" will present the broader overview of the structure and the functional operation of the Distributed Framework for Interprocess Communication Between Workstation Applications of the present invention.

Referring to FIG. 1, a computer workstation is illustrated which has a display that includes one or more window displays representing the execution of one or more client application programs.

In FIG. 1, a computer workstation 10 is illustrated. The workstation includes a monitor 12, a processor 14, a keyboard 16, and a mouse 18. The monitor 12 includes a cathode ray tube (CRT) that provides a display screen 12a. In FIG. 1, the display screen 12a has a plurality of windows 12b displayed thereon, each window 12b being displayed on the display screen 12a in response to the execution, within the workstation 10, of a separate client application program. As noted below in FIG. 2, each of the plurality of windows 12b provide a different display of wellbore-related data from which an operator can interpret whether or not underground deposits of hydrocarbons are present within an earth formation. An operator sitting at the workstation 10 will use the mouse 18 to select various ones of the windows 12b for viewing and/or manipulation or selection of the data in that window.

Referring to FIG. 2, a plurality of client application programs (hereinafter called "client applications") are illustrated which display a corresponding plurality of window displays on one of a plurality of workstations similar to the workstation 10 shown in FIG. 1 and which are interconnected together by an intertask communication (ITC) apparatus.

In FIG. 2, a plurality of client applications 20 are interconnected together by an intertask communication (ITC) apparatus 22. Recall that a "client application" is a computer program which is executing in the workstation 10 of FIG. 1 and which is responsible for displaying one of the windows 12b on the display screen 12a of the monitor 12 of the workstation 10 of FIG. 1. The ITC apparatus 22 of FIG. 2 allows each of the client applications 20 to communicate directly with one another. In general, as shown in FIG. 6, the ITC apparatus 22 is a generic term which includes a first client application and a second client application which are interconnected together in the manner shown in FIG. 6. The ITC apparatus 22 of FIG. 2 enables all of the client applications 20 to communicate directly and simultaneously with one another. As a result, events being practiced in one client application 20 can be viewed simultaneously in another client application 20. This functional capability will be discussed in more detail later in this specification.

Referring to FIG. 3, a system including a pair of interconnected workstations (each of which are similar to the workstation 10 of FIG. 1) is illustrated.

In FIG. 3, a first workstation 24 is interconnected to a second workstation 26. The first workstation 24 includes a processor 24a connected to a system bus 24d, a display 24b (similar to the display screen 12a of FIG. 1) connected to the system bus 24b, a memory 24c connected to the system bus 24d, and a user interface 24e (the mouse 18 and keyboard 16 of FIG. 1) connected to the system bus 24d. The second workstation 26 includes a processor 26a connected to a system bus 26d, a display 26b (similar to the display screen 12a of FIG. 1) connected to the system bus 26b, a memory 26c connected to the system bus 26d and a user interface 26e (the mouse 18 and keyboard 16 of FIG. 1) connected to the system bus 26d. The first workstation 24 is electrically or optically connected to the second workstation 26 via a communication link 28. The memory 24c of the first workstation 24 stores a first client application program called the "client 1 application software" 24c1, and the memory 26c of the second workstation 26 stores a second client application program called the "client 2 application software" 26c1. However, the memory 26c of the second workstation 26 also stores a server software 26c2. The server software 26c2 distributes interest objects between client applications. See the "dispatcher program" which is discussed in the Good et al disclosure (i.e.--in U.S. Pat. No. 5,448,738 entitled "Method for Information Communication between Concurrently Operating Computer Programs"), the disclosure of which has already been incorporated herein by reference. The client 1 application software 24c1, when executed by the processor 24a, generates a visual image on the display 24b which is similar to one of the client applications 20 shown in FIG. 2. Similarly, the client 2 application software 26c1, when executed by the processor 26a, generates a visual image on the display 26b which is similar to one of the other client applications 20 shown in FIG. 2. The function of the system shown in FIG. 3 will become apparent from a reading of the remaining parts of this specification.

Referring to FIG. 4, a more detailed construction of the client 1 application software 24c1 and the client 2 application software 26c1 of FIG. 3 is illustrated.

In FIG. 4, the client 1 application software 24c1 and the client 2 application software 26c1 each include: (1) a first set of software hereinafter known as the "ITC Human Interface Code" 32, and (2) a second set of software hereinafter known as the "ITC Framework (ITC Core) Code" 34. From a functional standpoint, an internal application code invokes the Human Interface Code 32, and the Human Interface Code 32 invokes the Framework Code 34. The ITC Human Interface code 32 and the ITC Framework Code 34 are discussed in greater detail later in this specification and the function of the Human Interface code 32 and the Framework Code 34 will become apparent from a reading of the remaining parts of this specification.

Referring to FIG. 5, a more detailed construction of the ITC Human Interface Code 32 of FIG. 4 is illustrated.

In FIG. 5, the Human Interface Code 32 of FIG. 4 is comprised of four parts: (1) an Operator Interaction Display Software 32d, (2) an ITC-HI Setup software 32a operatively connected to the Operator Interaction Display software 32d, (3) a Send An Event software 32b operatively connected to the ITC HI Setup software 32a, and (4) a Receive An Event Software 32c operatively connected to the ITC HI Setup software 32a. The ITC Framework (ITC Core) code 34 will be operatively connected to both the Send an Event software 32b and the Receive an Event software 32c. The Operator Interaction Display software 32d will generate displays of icons on the windows 12b of the display screen 12a, and it will also display, on the windows 12b, the "event information" which is requested from other client applications (this will be discussed later in this specification).

In operation, referring to FIG. 5, an operator at workstation 10 of FIG. 1, which is executing a particular client application, will view a variety of icons on a window display 12b on the display screen 12a of the FIG. 1 workstation for that particular client application. The operator will click "on" one or more of the icons thereby allowing an interest object in particular "event information" to be transmitted from the particular client application (e.g.--from the client 1 application 24c1 of FIG. 3) to other client applications (e.g.--client 2 application 26c1 of FIG. 3) via the server 26c2. The operator interaction display software 32d of FIG. 5 will display the window display 12b and the one or more icons in the window display 12b on the display screen 12a of the FIG. 1 workstation. When the operator clicks "on" the one or more icons in the window display 12b, the operator interaction display software 32d will inform the ITC-HI Setup Software 32a, and the ITC-HI Setup Software 32a will drive the Send An Event software 32b. The Send An Event Software 32b will instruct the ITC-Framework Code 34 of the particular client application (e.g.--client 1 application) to send the interest object in the particular event information to the other client applications (e.g.--client 2 application) via the server 26c2. When the other client applications generate the requested event information, the other client applications will send the requested event information directly to the ITC Framework Code 34 of the particular client application without passing through and registering with the server 26c2. When the requested event information is received by the particular client application (e.g.--client 1), the ITC Framework Code 34 of the particular client application will, in turn, inform the Receive An Event Software 32c of the particular client application. The Receive An Event Software 32c of the particular client application will inform the ITC-HI Setup Software 32a of the particular client application that the requested event information has been received from another client application. The ITC HI Setup Software 32a of the particular client application will, in turn, instruct the Operator Interation Display Software 32d of the particular client application to display the requested "event information" on the display screen 12a of the workstation 10 of FIG. 1.

Each of these four parts of the Human Interface Code 32 will be discussed later in this specification.

Referring to FIGS. 3, and 6 through 13b, a functional operation of the ITC Framework (ITC Core) Code 34 of each client application, such as the client 1 application 24c1 and the client 2 application 26c1, is illustrated.

Each client application includes the ITC Framework (ITC Core) Code 34. For example, the client 1 application software 24c1 and the client 2 application software 26c1 of FIG. 3 each include an ITC Framework Code 34. The ITC Framework code 34 associated with any particular client application interacts functionally with the server 26c2 and the ITC Framework code 34 associated with each other client application. For example, the ITC Framework code 34 of the client 1 application 24c1 in the first workstation 24 of FIG. 3 interacts functionally with the server software 26c2 and the ITC Framework code 34 of the client 2 application software 26c1 in the second workstation 26. The Framework code 34 of a first client application 24c1 will transmit interest objects to the server 26c2; it will transmit event information associated with an event "X" to the Framework code 34 of a second client application 26c1; and it will receive event information associated with an event "X" from the Framework code 34 of the second client application 26c1. This functional interaction between the Framework code 34 of one client application 24c1 and the server 26c2 and the Framework code 34 of other client applications 26c1 is discussed in further detail in the following paragraphs with reference to FIGS. 3 and 6 through 13b of the drawings.

In FIGS. 3 and 6, referring initially to FIG. 6, a high level schematic for distribution of events and interests is illustrated.

In FIG. 3, note the location of the client 1 application software 24c1 in the first workstation 24, and note the location of the client 2 application software 26c1 and the server software 26c2 in the second workstation 26.

In FIG. 6, a Client Application 124c1 (hereinafter called "Application 1") is interconnected to a Client Application 226c1 (hereinafter called "Application 2"), both Application 1 and Application 2 being connected to an ITC server 26c2. The "Client Application 1" 24c1 of FIG. 6 represents the client 1 application software 24c1 of FIG. 3, the "Client Application 2" 26c1 of FIG. 6 representing the client 2 application software 26c1 of FIG. 3, and the ITC server 26c2 of FIG. 6 representing the server software 26c2 of FIG. 3. When the Client Application 124c1 of FIG. 6 is executing in the first workstation 24 of FIG. 3, a window display (similar to one of the window displays 12b of FIG. 1) will appear on the display screen of the monitor of the first workstation 24. Similarly, when the Client Application 226c1 of FIG. 6 is executing in the second workstation 26 of FIG. 3, another window display (similar to one of the window displays 12b of FIG. 1) will appear on the display screen of the monitor of the second workstation 26. The window displays appearing on both monitors of the first and second workstations 24 and 26 could be any of those shown in FIG. 2.

In FIG. 6, assume that the Client Application 124c1 ("Application 1") is executing a first client application. In addition, assume that the Client Application 226c1 ("Application 2") is executing a second client application and, during the execution of the second client application by Application 2, certain "event information" will be generated by Application 2.

The term "event information" and/or the term "event" will be defined in the next three paragraphs by way of the following three examples.

For a first example, during the execution of the second client application by Application 2 at workstation 26, the operator sitting at the Workstation 26 may use the mouse 18 of FIG. 1 to place a cursor over one of the windows 12b of FIG. 1 and to thereby select certain information in that window 12b. The "selection" of certain information on that window 12b by Application 2 at workstation 26 may involve either dragging the cursor or deleting information or creating information. The "selection" of that certain information in that window 12b would be an "event" and that event would generate "event information". Application 1 may be interested in receiving that event information.

For a second example, Application 1 is being executed in France and it involves an examination of the geology of the earth. Application 2 is being executed in Houston and it involves a petrophysical application that is examining a pressure in a wellbore. There is nothing in common between Application 1 and Application 2 except for one one parameter: the pressure at a certain depth in the earth. The Application 1 may want to examine the pressure v. depth curve being generated in Application 2. Therefore, the pressure v. depth curve in Application 2 and any changes made thereto by an operator at the second workstation 26 would constitute "event information". Application 1 would be interested in receiving that event information.

For a third example, called "cursor tracking", Application 1, executing in the first workstation 24 of FIG. 3, is displaying a map having x, y, and z coordinates and an operator at the first workstation 24 can move a cursor across the map which would generate x, y, and z "event information". However, Application 2, executing the second workstation 26 of FIG. 3, is viewing a three-dimensional "cube" representation of an underground reservoir and Application 2 may be interested in receiving the x, y, and z "event information" from Application 1 whenever that event information is generated by Application 1. Therefore, when the operator at the first workstation 24 executing Application 1 moves the cursor across the map, the x, y, and z "event information" is generated from Application 1. If Application 2 previously expressed an interest in receiving that "event information" and when the event information is generated by Application 1, the Application 1 in the first workstation 24 would send that "event information" to Application 2 in the second workstation 26.

In FIG. 6, when Application 124c1 is executing the first client application, assume that Application 1 is interested in receiving certain "particular event information" from Application 226c1 when Application 2 generates that particular event information. In that case, Application 124c1 generates an "interest object" signal (which is propagated along line 36 in FIG. 6) from Application 124c1 to the ITC server 26c2. The server 26c2 informs Application 226c1 of the Application 1 interest in the particular event information by re-propagating the aforementioned "interest object" signal from the server 26c2 to the Application 226c1 (along line 38 in FIG. 6). The interest object signal from Application 1 contains an identifier which uniquely identifies Application 1. Therefore, when Application 2 receives the interest object signal (from line 38 in FIG. 6), Application 226c1 knows that Application 124c1 was interested in receiving the "particular event information" when the particular event information is generated by Application 2. As a result, when Application 2 generates the "particular event information" (i.e.--the operator at workstation 26 selects something by placing the mouse 18 in a window 12b and depressing a key on the mouse), since Application 2 knows that Application 1 is interested in receiving the particular event information, Application 2 will send that particular event information "directly" to Application 1 (via line 40). That is, the particular event information will not be sent from Application 226c1 to the server 26c2 (via line 38) and from the server 26c2 to Application 124c1 (via the line 36). Because the server 26c2 is not involved in the transfer of the particular event information from Application 2 to Application 1, valuable processing time is saved. As a result, the