US20070240166A1 - System and method of providing inter-application communications - Google Patents

System and method of providing inter-application communications Download PDF

Info

Publication number
US20070240166A1
US20070240166A1 US11/278,732 US27873206A US2007240166A1 US 20070240166 A1 US20070240166 A1 US 20070240166A1 US 27873206 A US27873206 A US 27873206A US 2007240166 A1 US2007240166 A1 US 2007240166A1
Authority
US
United States
Prior art keywords
operating system
application
event
publisher
subscriber
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/278,732
Inventor
Kumar Marappan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyndryl Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/278,732 priority Critical patent/US20070240166A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MARAPPAN, KUMAR
Publication of US20070240166A1 publication Critical patent/US20070240166A1/en
Priority to US14/063,321 priority patent/US9304833B2/en
Priority to US15/005,241 priority patent/US9389930B2/en
Priority to US15/137,169 priority patent/US9612888B2/en
Assigned to KYNDRYL, INC. reassignment KYNDRYL, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Definitions

  • the present invention relates generally to computer systems and in particular to the communications between applications.
  • One form of the present invention is a method of operating an operating system for providing inter-application communications between a publisher application and a server application.
  • the method includes receiving a publication request from the publisher application at the operating system, receiving a subscription request from the subscriber application at the operating system, performing an operating system based event brokering procedure based on the publication request and the subscription request, and publishing an event based on the procedure.
  • a second form of the present invention is an operating system for providing inter-application communications between a publisher application and a subscriber application.
  • the operating system comprises computer readable code for receiving a publication request from the publisher application at the operating system, computer readable code for receiving a subscription request from the subscriber application at the operating system, computer readable code for performing an operating system based event brokering procedure based on the publication request and the subscription request, and computer readable code for publishing an event based on the procedure.
  • a third form of the present invention is an operating system for providing inter-application communications between a publisher application and a subscriber application.
  • the operating system comprises means for receiving a publication request from the publisher application at the operating system, means for receiving a subscription request from the subscriber application at the operating system, and means for performing an operating system based event brokering procedure based on the publication request and the subscription request, and means for publishing an event based on the procedure.
  • FIG. 1 illustrates a system for controlling copying of documents, in accordance with one embodiment of the present invention
  • FIG. 2 illustrates a flow chart of providing inter-application communications in accordance with one embodiment of the present invention
  • FIG. 3 illustrates communications between two applications through an operating system, in accordance with one embodiment of the present invention.
  • FIG. 4 illustrates a registry of an operating system, in accordance with one embodiment of the present invention.
  • FIG. 1 illustrates one embodiment of a computer client 150 for use in accordance with one aspect of the invention.
  • Computer system 150 employs a peripheral component interconnect (PCI) local bus architecture.
  • PCI peripheral component interconnect
  • PCI bridge 158 connects processor 152 and main memory 154 to PCI local bus 156 .
  • PCI bridge 158 also can include an integrated memory controller and cache memory for processor 152 . Additional connections to PCI local bus 156 can be made through direct component interconnection or through add-in boards.
  • local area network (LAN) adapter 160 , SCSI host bus adapter 162 , and expansion bus interface 164 are connected to PCI local bus 156 by direct component connection.
  • LAN local area network
  • audio adapter 166 graphics adapter 168 , and audio/video adapter (A/V) 869 are connected to PCI local bus 156 by add-in boards inserted into expansion slots.
  • Expansion bus interface 164 connects a keyboard and mouse adapter 170 , modem 172 , and additional memory 174 to bus 156 .
  • SCSI host bus adapter 162 provides a connection for hard disk drive 176 , tape drive 178 , and CD-ROM 180 in the depicted example.
  • the PCI local bus implementation support three or four PCI expansion slots or add-in connectors, although any number of PCI expansion slots or add-in connectors can be used to practice the invention.
  • An operating system runs on processor 152 to coordinate and provide control of various components within computer system 150 . Further, the operating system coordinates inter-application communications as described in further detail below.
  • the operating system can be any appropriate available operating system such as Windows, Macintosh, UNIX, AIX, HP-UX, LINUX, or OS/2, or the like. “Windows” is a trademark of Microsoft Corporation. “Macintosh” is a trademark of Apple Computer, Inc. “UNIX” is a trademark of The Open Group. HP-UX is a trademark of Hewlett-Packard Company. “Linux” is a trademark of the Linux Mark Institute. “A/X” and “OS/2” are trademarks of International Business Machines Corporation. Instructions for the operating system, an object-oriented operating system, and applications or programs are located on storage devices, such as hard disk drive 176 and can be loaded into main memory 154 for execution by processor 152 .
  • FIG. 1 may vary depending on the implementation.
  • other peripheral devices such as optical disk drives and the like may be used in addition to or in place of the hardware depicted in FIG. 1 .
  • FIG. 1 does not illustrate any architectural limitations with respect to the present invention, and rather merely discloses an exemplary system that could be used to practice the invention.
  • the processes of the present invention may be applied to two or more client computers connected by a local area network (LAN) or a wide area network (WAN), such as the Internet.
  • LAN local area network
  • WAN wide area network
  • the invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements.
  • the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with one or more computers or any instruction execution system.
  • a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device), or a propagation medium such as a carrier wave.
  • Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
  • FIG. 2 illustrates one embodiment of a method 200 of providing inter-application communications in accordance with one aspect of the invention.
  • Method 200 begins at step 210 .
  • Any of the inventive method steps disclosed herein may be performed in any order, and the order in which the method steps are described does not limit the order in which the steps can be performed.
  • the method steps and decision therein can be implemented automatically through program coding or through a human user of the computer client.
  • Method 200 continues at step 220 by receiving a publication request from a publisher application at an operating system (OS).
  • OS organizes and controls operations of hardware and provides an environment to execute applications on top of and under control of the OS.
  • the operating system 300 is in communication with a registry repository 310 , shown in FIG. 3 , for mediating inter-application communications of events 320 between the publisher application 330 and a subscriber application 340 .
  • a filter 350 filters events 320 prior to an interaction between the event listener interface 360 and the events 320 . Certain event(s) 322 do not pass through filter 350 .
  • An event is defined herein as a representation of an occurrence within an application.
  • An event may be data, such as, for example XML.
  • An event may alternatively be, or include, an executable portion, for example a compiled program or executable code.
  • a registry 400 contains metadata describing events produced by various applications that file a publication request with the operating system. Metadata stored in the registry 400 is structured as a collection of application names 410 .
  • An application identifier such as an individual application name 412 , is associated with a schema of event types 420 that it may publish, or is subscribed to.
  • An exemplary schema is illustrated in FIG. 4 and includes four event types 420 .
  • event 420 may include properties for describing the event 420 to a subscribed application. The properties may include information for controlling events on an application subscribed to that particular event, for example mouse position or movement data associated with the control mouse movement event.
  • Event 420 can be, for example, formatted as an XML message.
  • the publisher application is registered with the operating system.
  • the registration takes place during an installation process.
  • the publisher application registers during an independent registration process. For example, if the publisher application is already installed, the publisher application can register at any point by running the independent registration process. At either of these points, a process is run to register the application, and the events it may publish, with the registry of the operating system. In one embodiment, this registration process may be run independently of installation. For example, another application or a system user can request that the publisher application register if it is not already done so. Post-installation registration or update of registration can be applied in instances of a software update, user request, or other process.
  • a subscription request is received from a subscriber application at the operating system.
  • the subscription request is recorded at the registry.
  • a subscription request may include an application identifier, such as an application name.
  • the application identifier may indicate which application from which the subscriber application wishes to receive events.
  • the application identifier may be compared to a collection of application identifiers that are currently registered as publisher applications.
  • an event filter is created.
  • the subscription request may also include a list of event types or other subscription criteria.
  • Subscription criteria may be used to filter what events are passed to the subscriber application.
  • the subscriber application creates an event filter with the operating system during the filing of a subscription request.
  • An event filter may specify the number and type of published events that are communicated from the registry to the subscriber application. For example, the event filter may only allow published events of an event type specified in subscription criteria to pass through to the subscriber application.
  • the subscription request may include an object that implements an event listener interface with the operating system. The event listener interface of the operating system waits for detection of published events that pass through the filter.
  • the listener interface communicates the event to the subscriber application. If the event does not match the subscription request, or does not pass at least one of the event filters, the listener interface does not communicate the event to the subscriber application.
  • the event filter and an event listener interface facilitate an operating system based event brokering by the operations system that encompasses steps 260 , 270 and 280 .
  • an event is published upon receiving the publication request at the operating system.
  • a published event is an event that has occurred in an application and has been received by the operating system for brokering.
  • a published event awaits communication to the subscriber application.
  • the publisher application publishes and stores events in the registry repository at step 270 .
  • Information may be alternatively stored in a standard file or database.
  • the registry repository is a system-defined database used by the operating system to store configuration information.
  • Applications may register, write data and publish events, all of which may be stored and retrieved through the registry repository.
  • the data and format of the registration and published events in the registry and registry repository can vary according to the version and brand of the operating system, or according to the implementation of the operating system event brokering.
  • the operating system may provide publication of the events stored in the registry repository for times the subscriber application is unavailable (e.g., not running).
  • the published events may be communicated to the subscriber application when it becomes active, as the events have been stored in the registry repository.
  • published events may be discarded if the subscriber application is not available to provide real-time publication and subsequent communication of the event.
  • the publisher and subscriber applications can vary in number.
  • a single publisher application can communicate with a plurality of subscriber applications.
  • a single subscriber application can communicate with a plurality of publisher applications.
  • the invention is not limited to a single publisher application and a single subscriber application.
  • a plurality of computers running the subscriber application can subscribe for another computer running the publisher application through a connection.
  • published publisher application events are broadcast to numerous computers running the subscriber application through the Internet.
  • a single subscriber application subscribes to events published by numerous publisher applications running on the same computer. As such, the subscriber application utilizes the information of the events of the numerous publisher applications for various purposes.
  • the published event is communicated from the operating system to the subscriber application based on the subscription request.
  • the published event is communicated from the operating system registry repository to a subscriber application running on the same client computer as the publisher application.
  • the published event is communicated from the registry repository to one or more instances of the subscriber application running on separate client computer(s) and linked through a LAN or WAN, such as the Internet.
  • Communication involves sending the published event from the registry repository of the OS of the publisher application to the subscriber application via a network connection.
  • the published event may cause the subscriber application to perform some action.
  • the event may include a compiled program or application code, either of which may cause the subscriber application to perform some action.
  • a published event can control certain characteristics of the subscriber applications (e.g., mouse movements and/or clicks, open and closing the subscriber application, publication/display of data in real-time, and the like).
  • an operating system as an event broker can reduce incompatibility issues as the strategy for communicating between applications is standardized.
  • the operating system can provide event logging, guaranteed event delivery, event correlation, protocol translation, and other functions.
  • the publisher and subscriber applications can exchange published events through the operating system in a bilateral manner.
  • the subscriber program optionally includes capabilities of the publisher program whereby the program publishes events to the registry repository.
  • the publisher program which optionally includes capabilities of the subscriber program, subscribes to the events.
  • the publisher and subscriber programs can exchange information in a synchronous or asynchronous manner on the same computer or over different client computers over a LAN or WAN. In this manner, applications may be run over multiple computers in a distributed manner via a publish/subscribe mechanism over the Internet.
  • information can be shared during a network meeting, which illustrates various steps implemented by the present invention.
  • a publisher application running on a host computer, publishers screen shot images as well as various actions being performed on the application. These events may be published over a network (e.g., Internet) to numerous participants (e.g., client computers) in the meeting.
  • the participants each run the subscriber application, which receives published events (i.e., as screen shot images and the actions) from the OS of the publisher computer based on subscription requests from the subscriber application as step 250 .
  • the participants can see not only the screen shot images being communicated across the network, but also the actions being performed on the publisher application as step 280 .
  • the published events (e.g., which are subscribed to during step 250 ) are communicated from the publisher application to the subscriber application via the OS of the host computer, which were stored in the registry repository during step 240 .
  • the published events (which are published during step 270 ) include the screen shot images as well as the actual actions being performed on the publisher application.
  • the network meeting allows communication between the publisher application and OS run on the host computer and the subscriber application run on the client computer(s).
  • the publisher/subscriber model may be applied to hand writing recognition.
  • some hand writing recognition software applications have two modes, one for recognizing alphabetical characters and the other for recognizing numeric characters.
  • the handwriting and numeric applications can subscribe to another application for providing, for instance, contacts, calendars, appointments, and the like.
  • the tab information can be communicated as published events to the handwriting recognition application (e.g., the subscriber application).
  • the handwriting recognition application can then automatically switch its mode to the numeric recognition application.
  • communication is provided between a publisher application, OS, and subscriber application running on the same computer.

Abstract

A method of operating an operating system for providing inter-application communications between a publisher application and a subscriber application. The method includes receiving a publication request from the publisher application at an operating system, receiving a subscriber application from the subscriber application at the operating system, performing an operating system based event brokering procedure based on the publication request and the subscription request, and publishing an event based on the procedure.

Description

    TECHNICAL FIELD OF THE INVENTION
  • The present invention relates generally to computer systems and in particular to the communications between applications.
  • BACKGROUND OF THE INVENTION
  • There are situations when it is desirable to allow communication between two or more applications. Such communication allows the programs to provide a flow of information for achieving numerous tasks and can be implemented in numerous circumstances. However, to provide such operability currently requires the applications to be known to, for example, a programmer in order to provide coding for each application. The programmer can thus facilitate communications functionality to each individual program through the coding. Such a process can be tedious and time consuming as the number of programs to which it is desirable to provide inter-application communications can be large.
  • Another problem with having to provide code to numerous programs can arise from incompatibility issues. In some situations, it is possible that the provided code to the large number of different applications can result in miscommunication or worse, total incompatibility (possibly resulting in a crash in one or more of the applications). As such, it would be desirable to provide a strategy for ensuring that different applications can reliably communicate with one another.
  • Therefore, it would be desirable to provide a strategy for providing inter-application communications that would overcome the aforementioned and other disadvantages.
  • SUMMARY OF THE INVENTION
  • One form of the present invention is a method of operating an operating system for providing inter-application communications between a publisher application and a server application. The method includes receiving a publication request from the publisher application at the operating system, receiving a subscription request from the subscriber application at the operating system, performing an operating system based event brokering procedure based on the publication request and the subscription request, and publishing an event based on the procedure.
  • A second form of the present invention is an operating system for providing inter-application communications between a publisher application and a subscriber application. The operating system comprises computer readable code for receiving a publication request from the publisher application at the operating system, computer readable code for receiving a subscription request from the subscriber application at the operating system, computer readable code for performing an operating system based event brokering procedure based on the publication request and the subscription request, and computer readable code for publishing an event based on the procedure.
  • A third form of the present invention is an operating system for providing inter-application communications between a publisher application and a subscriber application. The operating system comprises means for receiving a publication request from the publisher application at the operating system, means for receiving a subscription request from the subscriber application at the operating system, and means for performing an operating system based event brokering procedure based on the publication request and the subscription request, and means for publishing an event based on the procedure.
  • The foregoing and other features and advantages of the invention will become further apparent from the following detailed description of the presently preferred embodiments, read in conjunction with the accompanying drawings. The detailed description and drawings are merely illustrative of the invention, rather than limiting the scope of the invention being defined by the appended claims and equivalents thereof.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates a system for controlling copying of documents, in accordance with one embodiment of the present invention;
  • FIG. 2 illustrates a flow chart of providing inter-application communications in accordance with one embodiment of the present invention;
  • FIG. 3 illustrates communications between two applications through an operating system, in accordance with one embodiment of the present invention; and
  • FIG. 4 illustrates a registry of an operating system, in accordance with one embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS
  • FIG. 1 illustrates one embodiment of a computer client 150 for use in accordance with one aspect of the invention. Computer system 150 employs a peripheral component interconnect (PCI) local bus architecture. Although the depicted example employs a PCI bus, other bus architectures such as Micro Channel and ISA can be used. PCI bridge 158 connects processor 152 and main memory 154 to PCI local bus 156. PCI bridge 158 also can include an integrated memory controller and cache memory for processor 152. Additional connections to PCI local bus 156 can be made through direct component interconnection or through add-in boards. In the depicted example, local area network (LAN) adapter 160, SCSI host bus adapter 162, and expansion bus interface 164 are connected to PCI local bus 156 by direct component connection. In contrast, audio adapter 166, graphics adapter 168, and audio/video adapter (A/V) 869 are connected to PCI local bus 156 by add-in boards inserted into expansion slots. Expansion bus interface 164 connects a keyboard and mouse adapter 170, modem 172, and additional memory 174 to bus 156. SCSI host bus adapter 162 provides a connection for hard disk drive 176, tape drive 178, and CD-ROM 180 in the depicted example. In one embodiment, the PCI local bus implementation support three or four PCI expansion slots or add-in connectors, although any number of PCI expansion slots or add-in connectors can be used to practice the invention.
  • An operating system runs on processor 152 to coordinate and provide control of various components within computer system 150. Further, the operating system coordinates inter-application communications as described in further detail below. The operating system can be any appropriate available operating system such as Windows, Macintosh, UNIX, AIX, HP-UX, LINUX, or OS/2, or the like. “Windows” is a trademark of Microsoft Corporation. “Macintosh” is a trademark of Apple Computer, Inc. “UNIX” is a trademark of The Open Group. HP-UX is a trademark of Hewlett-Packard Company. “Linux” is a trademark of the Linux Mark Institute. “A/X” and “OS/2” are trademarks of International Business Machines Corporation. Instructions for the operating system, an object-oriented operating system, and applications or programs are located on storage devices, such as hard disk drive 176 and can be loaded into main memory 154 for execution by processor 152.
  • Those of ordinary skill in the art will appreciate that the hardware in FIG. 1 may vary depending on the implementation. For example, other peripheral devices, such as optical disk drives and the like may be used in addition to or in place of the hardware depicted in FIG. 1. FIG. 1 does not illustrate any architectural limitations with respect to the present invention, and rather merely discloses an exemplary system that could be used to practice the invention. For example, the processes of the present invention may be applied to two or more client computers connected by a local area network (LAN) or a wide area network (WAN), such as the Internet.
  • The invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with one or more computers or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device), or a propagation medium such as a carrier wave. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
  • FIG. 2 illustrates one embodiment of a method 200 of providing inter-application communications in accordance with one aspect of the invention. Method 200 begins at step 210. Any of the inventive method steps disclosed herein may be performed in any order, and the order in which the method steps are described does not limit the order in which the steps can be performed. In addition, the method steps and decision therein can be implemented automatically through program coding or through a human user of the computer client.
  • Method 200 continues at step 220 by receiving a publication request from a publisher application at an operating system (OS). An OS organizes and controls operations of hardware and provides an environment to execute applications on top of and under control of the OS. In one embodiment, the operating system 300 is in communication with a registry repository 310, shown in FIG. 3, for mediating inter-application communications of events 320 between the publisher application 330 and a subscriber application 340. In one embodiment, a filter 350 filters events 320 prior to an interaction between the event listener interface 360 and the events 320. Certain event(s) 322 do not pass through filter 350. An event is defined herein as a representation of an occurrence within an application. An event may be data, such as, for example XML. An event may alternatively be, or include, an executable portion, for example a compiled program or executable code.
  • As shown in FIG. 4, a registry 400 contains metadata describing events produced by various applications that file a publication request with the operating system. Metadata stored in the registry 400 is structured as a collection of application names 410. An application identifier, such as an individual application name 412, is associated with a schema of event types 420 that it may publish, or is subscribed to. An exemplary schema is illustrated in FIG. 4 and includes four event types 420. In one embodiment, event 420 may include properties for describing the event 420 to a subscribed application. The properties may include information for controlling events on an application subscribed to that particular event, for example mouse position or movement data associated with the control mouse movement event. Event 420 can be, for example, formatted as an XML message.
  • At step 230, the publisher application is registered with the operating system. In one embodiment, the registration takes place during an installation process. Alternatively, the publisher application registers during an independent registration process. For example, if the publisher application is already installed, the publisher application can register at any point by running the independent registration process. At either of these points, a process is run to register the application, and the events it may publish, with the registry of the operating system. In one embodiment, this registration process may be run independently of installation. For example, another application or a system user can request that the publisher application register if it is not already done so. Post-installation registration or update of registration can be applied in instances of a software update, user request, or other process.
  • At step 240, a subscription request is received from a subscriber application at the operating system. In one embodiment, the subscription request is recorded at the registry. A subscription request may include an application identifier, such as an application name. The application identifier may indicate which application from which the subscriber application wishes to receive events. When a subscription request is received at the operating system, the application identifier may be compared to a collection of application identifiers that are currently registered as publisher applications.
  • At step 250, an event filter is created. The subscription request may also include a list of event types or other subscription criteria. Subscription criteria may be used to filter what events are passed to the subscriber application. In one embodiment, the subscriber application creates an event filter with the operating system during the filing of a subscription request. An event filter may specify the number and type of published events that are communicated from the registry to the subscriber application. For example, the event filter may only allow published events of an event type specified in subscription criteria to pass through to the subscriber application. The subscription request may include an object that implements an event listener interface with the operating system. The event listener interface of the operating system waits for detection of published events that pass through the filter. If the event matches the subscription request, and passes one or more event filters if they exist, the listener interface communicates the event to the subscriber application. If the event does not match the subscription request, or does not pass at least one of the event filters, the listener interface does not communicate the event to the subscriber application.
  • The event filter and an event listener interface facilitate an operating system based event brokering by the operations system that encompasses steps 260, 270 and 280.
  • At step 260, an event is published upon receiving the publication request at the operating system. A published event is an event that has occurred in an application and has been received by the operating system for brokering. In one embodiment, a published event awaits communication to the subscriber application.
  • In one embodiment, the publisher application publishes and stores events in the registry repository at step 270. Information may be alternatively stored in a standard file or database. The registry repository is a system-defined database used by the operating system to store configuration information. Applications may register, write data and publish events, all of which may be stored and retrieved through the registry repository. The data and format of the registration and published events in the registry and registry repository can vary according to the version and brand of the operating system, or according to the implementation of the operating system event brokering. The operating system may provide publication of the events stored in the registry repository for times the subscriber application is unavailable (e.g., not running). For example, if the subscriber application is closed when an event is published, the published events may be communicated to the subscriber application when it becomes active, as the events have been stored in the registry repository. Alternatively, published events may be discarded if the subscriber application is not available to provide real-time publication and subsequent communication of the event.
  • Those skilled in the art will recognize that the publisher and subscriber applications can vary in number. For example, a single publisher application can communicate with a plurality of subscriber applications. Likewise, a single subscriber application can communicate with a plurality of publisher applications. The invention is not limited to a single publisher application and a single subscriber application. For example, a plurality of computers running the subscriber application can subscribe for another computer running the publisher application through a connection. As such, published publisher application events are broadcast to numerous computers running the subscriber application through the Internet. As another example, a single subscriber application subscribes to events published by numerous publisher applications running on the same computer. As such, the subscriber application utilizes the information of the events of the numerous publisher applications for various purposes.
  • At step 280, the published event is communicated from the operating system to the subscriber application based on the subscription request. In one embodiment, the published event is communicated from the operating system registry repository to a subscriber application running on the same client computer as the publisher application. In another embodiment, the published event is communicated from the registry repository to one or more instances of the subscriber application running on separate client computer(s) and linked through a LAN or WAN, such as the Internet. Communication involves sending the published event from the registry repository of the OS of the publisher application to the subscriber application via a network connection. The published event may cause the subscriber application to perform some action. In one embodiment, the event may include a compiled program or application code, either of which may cause the subscriber application to perform some action. For example, a published event can control certain characteristics of the subscriber applications (e.g., mouse movements and/or clicks, open and closing the subscriber application, publication/display of data in real-time, and the like).
  • As the events are published through the operating system, programming code for providing direct inter-application communication capabilities is not required for each individual application. In addition, the use of an operating system as an event broker can reduce incompatibility issues as the strategy for communicating between applications is standardized. Besides providing an event filter and event listener, the operating system can provide event logging, guaranteed event delivery, event correlation, protocol translation, and other functions.
  • Those skilled in the art will appreciate that the publisher and subscriber applications can exchange published events through the operating system in a bilateral manner. For example, the subscriber program optionally includes capabilities of the publisher program whereby the program publishes events to the registry repository. The publisher program, which optionally includes capabilities of the subscriber program, subscribes to the events. The publisher and subscriber programs can exchange information in a synchronous or asynchronous manner on the same computer or over different client computers over a LAN or WAN. In this manner, applications may be run over multiple computers in a distributed manner via a publish/subscribe mechanism over the Internet.
  • In one embodiment, information can be shared during a network meeting, which illustrates various steps implemented by the present invention. A publisher application, running on a host computer, publishers screen shot images as well as various actions being performed on the application. These events may be published over a network (e.g., Internet) to numerous participants (e.g., client computers) in the meeting. The participants each run the subscriber application, which receives published events (i.e., as screen shot images and the actions) from the OS of the publisher computer based on subscription requests from the subscriber application as step 250. The participants can see not only the screen shot images being communicated across the network, but also the actions being performed on the publisher application as step 280.
  • In the present example, the published events (e.g., which are subscribed to during step 250) are communicated from the publisher application to the subscriber application via the OS of the host computer, which were stored in the registry repository during step 240. The published events (which are published during step 270) include the screen shot images as well as the actual actions being performed on the publisher application. As such, the network meeting allows communication between the publisher application and OS run on the host computer and the subscriber application run on the client computer(s).
  • In one embodiment, the publisher/subscriber model may be applied to hand writing recognition. For example, some hand writing recognition software applications have two modes, one for recognizing alphabetical characters and the other for recognizing numeric characters. The handwriting and numeric applications can subscribe to another application for providing, for instance, contacts, calendars, appointments, and the like. When a user tabs to a numeric field in an appointment application (e.g., the publisher application) the tab information can be communicated as published events to the handwriting recognition application (e.g., the subscriber application). The handwriting recognition application can then automatically switch its mode to the numeric recognition application. As such, communication is provided between a publisher application, OS, and subscriber application running on the same computer.
  • While the embodiments of the present invention disclosed herein are presently considered to be preferred embodiments, various changes and modifications can be made without departing from the spirit and scope of the present invention. The scope of the invention is indicated in the appended claims, and all changes that come within the meaning and range of equivalents are intended to be embraced therein.

Claims (20)

1. A method of operating an operating system for providing inter-application communications between a publisher application and a subscriber application, the method comprising:
receiving a publication request from the publisher application at the operating system;
receiving a subscription request from the subscriber application at the operating system;
performing an operating system based event brokering procedure based on the publication request and the subscription request; and
publishing an event based on the procedure.
2. The method of claim 1, wherein publishing the event further comprises:
communicating the event from the operating system to the subscriber application.
3. The method of claim 1, wherein publishing the event further comprises:
storing the event in a repository.
4. The method of claim 3, wherein publishing the event further comprises:
checking for subscriber application availability; and
communicating the stored event to the subscriber application when the subscriber application is available.
5. The method of claim 1, wherein publishing the event further comprises:
filtering the event based on a subscription criteria; and
communicating the published event from the operating system to the subscriber application based on the filtering.
6. The method of claim 1, further comprising:
receiving a publisher registration request at the operating system; and
wherein the publisher application is registered with the operating system based on a publisher registration request.
7. The method of claim 6, wherein the publisher registration request is received from the publisher application.
8. The method of claim 6, wherein the publisher registration request is received from the subscriber application.
9. A computer useable medium including an operating system for providing inter-application communications between a publisher application and a subscriber application, the operating system comprising:
computer readable code for receiving a publication request including an event from the publisher application at the operating system;
computer readable code for receiving a subscription request from the subscriber application at the operating system;
computer readable code for performing an operating system based event brokering procedure based on the publication request and the subscription request; and
computer readable code for publishing an event based on the procedure.
10. The operating system of claim 9, wherein the computer readable code for publishing the event further comprises:
computer readable code for communicating the event from the operating system to the subscriber application.
11. The operating system of claim 9, wherein the computer readable code for publishing the event further comprises:
computer readable code for storing the event in a repository.
12. The operating system of claim 11, wherein the computer readable code for publishing the event further comprises:
computer readable code for checking for subscriber application availability; and
computer readable code for communicating the stored event to the subscriber application when the subscriber application is available.
13. The operating system of claim 9, wherein the computer readable code for publishing the event further comprises:
computer readable code for filtering the event based on a subscription criteria; and
computer readable code for communicating the published event from the operating system to the subscriber application based on the filtering.
14. The operating system of claim 9, further comprising:
computer readable code for receiving a publisher registration request at the operating system; and
computer readable code for registering the publisher application with the operating system based on the publisher registration request.
15. The operating system of claim 14, wherein the publisher registration request is received from the publisher application.
16. The operating system of claim 14, wherein the publisher registration request is received from the subscriber application.
17. An operating system for providing inter-application communications between a publisher application and a subscriber application, the operating system comprising:
means for receiving a publication request from the publisher application at the operating system;
means for receiving a subscription request from the subscriber application at the operating system;
means for performing an operating system based event brokering procedure based on the publication request and the subscription request; and
means for publishing an event based on the procedure.
18. The operating system of claim 17, further comprising:
means for communicating the event from the operating system to the subscriber application.
19. The operating system of claim 17, further comprising:
means for storing the event in a repository;
means for checking for subscriber application availability; and
means for communicating the stored event to the subscriber application when the subscriber application is available.
20. The operating system of claim 17, further comprising:
means for filtering the event based on a subscription criteria; and
means for communicating the published event from the operating system to the subscriber application based on the filtering.
US11/278,732 2006-04-05 2006-04-05 System and method of providing inter-application communications Abandoned US20070240166A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US11/278,732 US20070240166A1 (en) 2006-04-05 2006-04-05 System and method of providing inter-application communications
US14/063,321 US9304833B2 (en) 2006-04-05 2013-10-25 System and method of providing inter-application communications
US15/005,241 US9389930B2 (en) 2006-04-05 2016-01-25 System and method of providing inter-application communications
US15/137,169 US9612888B2 (en) 2006-04-05 2016-04-25 System and method of providing inter-application communications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/278,732 US20070240166A1 (en) 2006-04-05 2006-04-05 System and method of providing inter-application communications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/063,321 Continuation US9304833B2 (en) 2006-04-05 2013-10-25 System and method of providing inter-application communications

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US14/063,321 Continuation US9304833B2 (en) 2006-04-05 2013-10-25 System and method of providing inter-application communications
US15/005,241 Continuation US9389930B2 (en) 2006-04-05 2016-01-25 System and method of providing inter-application communications

Publications (1)

Publication Number Publication Date
US20070240166A1 true US20070240166A1 (en) 2007-10-11

Family

ID=38577085

Family Applications (4)

Application Number Title Priority Date Filing Date
US11/278,732 Abandoned US20070240166A1 (en) 2006-04-05 2006-04-05 System and method of providing inter-application communications
US14/063,321 Expired - Fee Related US9304833B2 (en) 2006-04-05 2013-10-25 System and method of providing inter-application communications
US15/005,241 Expired - Fee Related US9389930B2 (en) 2006-04-05 2016-01-25 System and method of providing inter-application communications
US15/137,169 Active US9612888B2 (en) 2006-04-05 2016-04-25 System and method of providing inter-application communications

Family Applications After (3)

Application Number Title Priority Date Filing Date
US14/063,321 Expired - Fee Related US9304833B2 (en) 2006-04-05 2013-10-25 System and method of providing inter-application communications
US15/005,241 Expired - Fee Related US9389930B2 (en) 2006-04-05 2016-01-25 System and method of providing inter-application communications
US15/137,169 Active US9612888B2 (en) 2006-04-05 2016-04-25 System and method of providing inter-application communications

Country Status (1)

Country Link
US (4) US20070240166A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070168510A1 (en) * 2006-01-13 2007-07-19 Cisco Technology, Inc. Applying a filter set to information provided to a subscribing client
US20120173614A1 (en) * 2010-12-29 2012-07-05 Oracle International Corporation Event broker for an improved application server platform for telecom-based applications
US20160119394A1 (en) * 2014-10-28 2016-04-28 Lexmark International Technology, S.A. System and Methods of Broadcasting Events Between Multiple Applications
US20170286614A1 (en) * 2016-03-31 2017-10-05 Dexcom, Inc. Systems and methods for inter-app communications
US10673749B1 (en) * 2018-12-28 2020-06-02 Paypal, Inc. Peer-to-peer application layer distributed mesh routing
US11389090B2 (en) 2018-12-19 2022-07-19 Dexcom, Inc. Intermittent monitoring
US20220350680A1 (en) * 2021-04-30 2022-11-03 Sap Se Central Event Catalog
US11790027B2 (en) * 2017-06-13 2023-10-17 Open Text Corporation Systems and methods for communication across multiple browser pages for an application

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2532490B (en) 2014-11-21 2017-02-22 Ibm Publish/subscribe messaging using message structure
WO2018044334A1 (en) * 2016-09-02 2018-03-08 Iex Group. Inc. System and method for creating time-accurate event streams
CN107368377B (en) * 2017-06-30 2020-03-17 武汉斗鱼网络科技有限公司 Network request processing method and device in Android application program
CN109254709A (en) * 2017-07-13 2019-01-22 阿里巴巴集团控股有限公司 Screenshotss processing method, device, equipment and machine readable media
US11537455B2 (en) 2021-01-11 2022-12-27 Iex Group, Inc. Schema management using an event stream

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
US20050044554A1 (en) * 1999-02-23 2005-02-24 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US20060209868A1 (en) * 2005-02-25 2006-09-21 Rockwell Automation Technologies, Inc. Reliable messaging instruction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0500262B1 (en) 1991-02-15 2000-03-29 Sun Microsystems, Inc. Method and apparatus for extensible inter-application link management
US6202099B1 (en) 1998-03-30 2001-03-13 Oracle Corporation Method and apparatus for providing inter-application program communication using a common view and metadata
JP2001216226A (en) 1999-11-26 2001-08-10 Mitsubishi Electric Corp Inter-application data transmission/reception system and method threfor, and computer-readable recording medium having program for making computer operate inter-application data transmission/reception method recording thereon
US6567974B1 (en) 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US20020144010A1 (en) 2000-05-09 2002-10-03 Honeywell International Inc. Communication handling in integrated modular avionics
US20040205458A1 (en) * 2001-11-23 2004-10-14 Jenq-Neng Hwang Efficient real-time networked documents conversion for distance meeting environments
US6834296B2 (en) 2002-03-01 2004-12-21 International Business Machines Corporation Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions
US20060010392A1 (en) * 2004-06-08 2006-01-12 Noel Vicki E Desktop sharing method and system
US20070282793A1 (en) * 2006-06-01 2007-12-06 Majors Kenneth D Computer desktop sharing
TW201232280A (en) * 2011-01-20 2012-08-01 Hon Hai Prec Ind Co Ltd System and method for sharing desktop information

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044554A1 (en) * 1999-02-23 2005-02-24 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
US20060209868A1 (en) * 2005-02-25 2006-09-21 Rockwell Automation Technologies, Inc. Reliable messaging instruction

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070168510A1 (en) * 2006-01-13 2007-07-19 Cisco Technology, Inc. Applying a filter set to information provided to a subscribing client
US7941515B2 (en) * 2006-01-13 2011-05-10 Cisco Technology, Inc. Applying a filter set to information provided to a subscribing client
US9553944B2 (en) 2010-12-29 2017-01-24 Oracle International Corporation Application server platform for telecom-based applications using an actor container
US8788580B2 (en) * 2010-12-29 2014-07-22 Oracle International Corporation Event broker for an improved application server platform for telecom-based applications
US9258379B2 (en) 2010-12-29 2016-02-09 Oracle International Corporation Session initiation protocol adapter system and method providing stateless node mapping to a stateful server node hosting a communication session for an actor
US20120173614A1 (en) * 2010-12-29 2012-07-05 Oracle International Corporation Event broker for an improved application server platform for telecom-based applications
US20160119394A1 (en) * 2014-10-28 2016-04-28 Lexmark International Technology, S.A. System and Methods of Broadcasting Events Between Multiple Applications
US20170286614A1 (en) * 2016-03-31 2017-10-05 Dexcom, Inc. Systems and methods for inter-app communications
US10980941B2 (en) * 2016-03-31 2021-04-20 Dexcom, Inc. Methods for providing an alert or an alarm to a user of a mobile communications device
US20210316070A1 (en) * 2016-03-31 2021-10-14 Dexcom, Inc. Methods for providing an alert or an alarm to a user of a mobile communications device
US11826549B2 (en) 2016-03-31 2023-11-28 Dexcom, Inc. Methods for providing an alert or an alarm to a user of a mobile communications device
US11790027B2 (en) * 2017-06-13 2023-10-17 Open Text Corporation Systems and methods for communication across multiple browser pages for an application
US11389090B2 (en) 2018-12-19 2022-07-19 Dexcom, Inc. Intermittent monitoring
US10673749B1 (en) * 2018-12-28 2020-06-02 Paypal, Inc. Peer-to-peer application layer distributed mesh routing
US11539617B2 (en) 2018-12-28 2022-12-27 Paypal, Inc. Peer-to-peer application layer distributed mesh routing
US11809919B2 (en) * 2021-04-30 2023-11-07 Sap Se Central event catalog
US20220350680A1 (en) * 2021-04-30 2022-11-03 Sap Se Central Event Catalog

Also Published As

Publication number Publication date
US9389930B2 (en) 2016-07-12
US20140082639A1 (en) 2014-03-20
US20160154685A1 (en) 2016-06-02
US9612888B2 (en) 2017-04-04
US20160239355A1 (en) 2016-08-18
US9304833B2 (en) 2016-04-05

Similar Documents

Publication Publication Date Title
US9389930B2 (en) System and method of providing inter-application communications
US5544320A (en) Remote information service access system based on a client-server-service model
US7519917B2 (en) Method and apparatus for graphically displaying compatible workflow steps
JP5787963B2 (en) Computer platform programming interface
RU2335796C2 (en) File system controlled filter model and architecture
US7506345B2 (en) Method and apparatus for adapting and hosting legacy user interface controls
EP1437656A2 (en) System and method for distributed multimodal collaboration using a tuple-space
US20080126987A1 (en) Graphical representation of compatible workflow steps
EP1638018A2 (en) Multistep master data cleansing in operative business process
US7467371B1 (en) Binding for business workflow processes
JP2010521721A (en) Web data usage platform
JPH0827769B2 (en) Communication interface generation system and method
US20070118499A1 (en) Method and system for collecting and restoring application state information
US7606833B2 (en) System and method for using an RMI activation system daemon with non-JAVA applications
US20070283354A1 (en) Tracking customer defined workload of a computing environment
US20050261923A1 (en) Method and apparatus for model based subscriptions for a publish/subscribe messaging system
US20040150669A1 (en) Graphical user interface for describing the state of a managed system
US7970814B2 (en) Method and apparatus for providing a synchronous interface for an asynchronous service
US20060117320A1 (en) Sharing dynamically changing resources in software systems
US7802228B2 (en) Systems and methods for varying software build properties using primary and supplemental build files
CN113760386A (en) Access control system, access control method and storage medium
US20110041119A1 (en) Storing z/os product tag information within z/os load module datasets
US9696887B2 (en) Integrated user interface using linked data
US7693807B2 (en) Mapping between anonymous modules in a network environment
US20030110096A1 (en) Method, system, and apparatus for executing open services

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MARAPPAN, KUMAR;REEL/FRAME:017532/0539

Effective date: 20060330

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: KYNDRYL, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:058213/0912

Effective date: 20211118