Dynamically configurable filtered dispatch notification system
First Claim
1. A method for filtering data, the method comprising the steps of:
- reading configuration data that specifies publisher-subscriber relationships between source modules in a set of source modules, filter modules in a set of filter modules, and action modules in a set of action modules;
wherein source modules in said set of source modules are software modules configured to obtain data from a source and transmit the data in messages to a set of subscribers;
wherein the set of subscribers to which each source module transmits messages is determined by information received by said source module while said source module is loaded into dynamic memory and not determined by code in said source module;
wherein filter modules in said set of filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein the set of subscribers to which each filter module dispatches messages is determined by information received by said filter module while said filter module is loaded in dynamic memory and not determined by code in said filter module;
wherein action modules in said set of action modules are software modules configured to respond to messages by performing actions;
creating a set of loaded modules by loading, into dynamic memory, modules that belong to said set of source modules, said set of filter modules and said set of action modules;
initializing said set of loaded modules;
establishing said publisher-subscriber relationships between said set of loaded modules based on said configuration data;
wherein the step of establishing publisher-subscriber relationships includes sending information, based on said configuration data, to each source module in said set of loaded modules to indicate to said source module the set of subscribers to which said source module is to transmit messages; and
sending information, based on said configuration data, to each filter module in said set of loaded modules to indicate to said filter module the set of substribers to which said filter module is to dispatch messages.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for filtering and acting upon data are provided. The specific identity, behavior and relationship between the various components that make up the system are not fixed at compile time. Rather, flexibility is maintained by establishing the identity, behavior and relationships based on configuration data at run time. At run time, various source, filter and action modules that are specified in configuration data are loaded into dynamic memory and initialized. The publisher-subscriber relationships are then established between the loaded modules based on said configuration data. A user interface is provided which allows a user to specify changes to the publisher-subscriber relationships between the components, or to the initialization arguments of the components. The various components of the system may be implemented as objects that are instances of JAVA classes.
-
Citations
36 Claims
-
1. A method for filtering data, the method comprising the steps of:
-
reading configuration data that specifies publisher-subscriber relationships between source modules in a set of source modules, filter modules in a set of filter modules, and action modules in a set of action modules;
wherein source modules in said set of source modules are software modules configured to obtain data from a source and transmit the data in messages to a set of subscribers;
wherein the set of subscribers to which each source module transmits messages is determined by information received by said source module while said source module is loaded into dynamic memory and not determined by code in said source module;
wherein filter modules in said set of filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein the set of subscribers to which each filter module dispatches messages is determined by information received by said filter module while said filter module is loaded in dynamic memory and not determined by code in said filter module;
wherein action modules in said set of action modules are software modules configured to respond to messages by performing actions;
creating a set of loaded modules by loading, into dynamic memory, modules that belong to said set of source modules, said set of filter modules and said set of action modules;
initializing said set of loaded modules;
establishing said publisher-subscriber relationships between said set of loaded modules based on said configuration data;
wherein the step of establishing publisher-subscriber relationships includes sending information, based on said configuration data, to each source module in said set of loaded modules to indicate to said source module the set of subscribers to which said source module is to transmit messages; and
sending information, based on said configuration data, to each filter module in said set of loaded modules to indicate to said filter module the set of substribers to which said filter module is to dispatch messages. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
said set of loaded modules includes a first source module and a first filter module;
said step of establishing said publisher-subscriber relationships includes causing said first source module to include said first filter module in a subscriber list maintained for said first source module;
when executing, said first source module receives data from one or more sources; and
upon receiving data from said one or more sources, said first source module sends a message to all modules listed in said subscriber list maintained for said first source module.
-
-
3. The method of claim 2 wherein:
-
said step of establishing said publisher-subscriber relationships includes causing said first filter module to maintain a subscriber list;
upon receiving said message from said first source module, said first filter module determines whether said message satisfies a particular set of criteria; and
if said message satisfies said particular set of criteria, then said first filter module sends a message to all modules listed in said subscriber list maintained for said filter module.
-
-
4. The method of claim 3 wherein:
-
said subscriber list maintained for said first filter module includes a first action module; and
upon receiving said message from said first filter module, said first action module performs a particular action.
-
-
5. The method of claim 3 wherein:
-
said configuration data includes a particular set of arguments that specify said particular set of criteria; and
said step of initializing said loaded modules includes initializing said first filter module with said particular set of arguments to cause said first filter module to filter based on said particular set of criteria.
-
-
6. The method of claim 5 further comprising the steps of:
-
after said step of initializing said set of loaded modules, receiving user input that specifies a second set of criteria that is different from said particular set of criteria;
generating a second set of arguments that reflect said second set of criteria; and
re-initializing said first filter module with said second set of arguments to cause said first filter module to filter based on said second set of criteria.
-
-
7. The method of claim 1 wherein:
-
said set of loaded modules includes a first filter module and a first action module;
said step of establishing said publisher-subscriber relationships includes causing said first filter module to include said first action module in a subscriber list maintained for said first filter module;
upon receiving a message from another loaded module, said first filter module determines whether said message satisfies a particular set of criteria; and
if said message satisfies said particular set of criteria, then said first filter module sends a message to all modules listed in said subscriber list maintained for said filter module.
-
-
8. The method of claim 7 wherein:
-
said configuration data includes a particular set of arguments that specify a particular action to be performed by said action module; and
said step of initializing said loaded modules includes initializing said first action module with said particular set of arguments to cause said first action module to perform said particular action upon receipt of a message from said first filter module.
-
-
9. The method of claim 8 wherein:
-
after said step of initializing said set of loaded modules, receiving user input that specifies a second action that is different from said particular action;
generating a second set of arguments that reflect said second action; and
re-initializing said first action module with said second set of arguments to cause said first action module to perform said second action in response to messages from said first filter module.
-
-
10. The method of claim 1 further comprising the steps of:
-
after said set of source modules are executing, receiving input that specifies changes to said publisher-subscriber relationships between said loaded modules; and
changing said publisher-subscriber relationships in response to said input.
-
-
11. The method of claim 1 wherein:
-
said loaded modules are objects that are instances of JAVA classes;
the step of loading includes the step of searching a search path to locate code associated with said JAVA classes;
and the step of causing said source modules to begin execution is performed by causing each of one or more source objects that belong to said loaded modules to begin execution in a separate thread.
-
-
12. The method of claim 1 further comprising the step of executing a dispatcher system coordinator object in a thread to perform the steps of:
-
reading said configuration data;
loading and initializing said set of loaded modules;
establishing said publisher-subscriber relationships; and
causing said source modules to begin execution.
-
-
13. A computer-readable medium carrying one or more sequences of instructions for filtering data, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
-
reading configuration data that specifies publisher-subscriber relationships between source modules in a set of source modules, filter modules in a set of filter modules, and action modules in a set of action modules;
wherein source modules in said set of source modules are software modules configured to obtain data from a source and transmit the data in messages to a set of subscribers;
wherein the set of subscribers to which each source module transmits messages is determined by information received by said source module while said source module is loaded into dynamic memory and not determined by code in said source module;
wherein filter modules in said set of filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein the set of subscribers to which each filter module dispatches messages is determined by information received by said filter module while said filter module is loaded in dynamic memory and not determined by code in said filter module;
wherein action modules in said set of action modules are software modules configured to respond to messages by performing actions;
creating a set of loaded modules by loading, into dynamic memory, modules that belong to said set of source modules, said set of filter modules and said set of action modules;
initializing said set of loaded modules;
establishing said publisher-subscriber relationships between said set of loaded modules based on said configuration data;
wherein the step of establishing publisher-subscriber relationships includes sending information, based on said configuration data, to each source module in said set of loaded modules to indicate to said source module the set of subscribers to which said source module is to transmit messages; and
sending information, based on said configuration data, to each filter module in said set of loaded modules to indicate to said filter module the set of subscribers to which said filter module is to dispatch messages. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
said set of loaded modules includes a first source module and a first filter module;
said step of establishing said publisher-subscriber relationships includes causing said first source module to include said first filter module in a subscriber list maintained for said first source module;
when executing, said first source module receives data from one or more sources; and
upon receiving data from said one or more sources, said first source module sends a message to all modules listed in said subscriber list maintained for said first source module.
-
-
15. The computer-readable medium of claim 14 wherein:
-
said step of establishing said publisher-subscriber relationships includes causing said first filter module to maintain a subscriber list;
upon receiving said message from said first source module, said first filter module determines whether said message satisfies a particular set of criteria; and
if said message satisfies said particular set of criteria, then said first filter module sends a message to all modules listed in said subscriber list maintained for said filter module.
-
-
16. The computer-readable medium of claim 15 wherein:
-
said configuration data includes a particular set of arguments that specify said particular set of criteria; and
said step of initializing said loaded objects includes initializing said first filter module with said particular set of arguments to cause said first filter module to filter based on said particular set of criteria.
-
-
17. The computer-readable medium of claim 16 further comprising instructions for performing the steps of:
-
after said step of initializing said set of loaded modules, receiving user input that specifies a second set of criteria that is different from said particular set of criteria;
generating a second set of arguments that reflect said second set of criteria; and
re-initializing said first filter module with said second set of arguments to cause said first filter module to filter based on said second set of criteria.
-
-
18. The computer-readable medium of claim 13 wherein:
-
said set of loaded modules includes a first filter module and a first action module;
said step of establishing said publisher-subscriber relationships includes causing said first filter module to include said first action module in a subscriber list maintained for said first filter module;
upon receiving a message from another loaded module, said first filter module determines whether said message satisfies a particular set of criteria; and
if said message satisfies said particular set of criteria, then said first filter module sends a message to all modules listed in said subscriber list maintained for said filter module.
-
-
19. The computer-readable medium of claim 18 wherein:
-
said configuration data includes a particular set of arguments that specify a particular action to be performed by said action module; and
said step of initializing said loaded objects includes initializing said first action module with said particular set of arguments to cause said first action module to perform said particular action upon receipt of a message from said first filter module;
after said step of initializing said set of loaded modules, receiving user input that specifies a second action that is different from said particular action;
generating a second set of arguments that reflect said second action; and
re-initializing said first action module with said second set of arguments to cause said first action module to perform said second action in response to messages from said first filter module.
-
-
20. The computer-readable medium of claim 13 further comprising instructions for performing the steps of:
-
after said set of source modules are executing, receiving input that specifies changes to said publisher-subscriber relationships between said loaded modules; and
changing said publisher-subscriber relationships in response to said input.
-
-
21. The computer-readable medium of claim 13 wherein:
-
said loaded modules are objects that are instances of JAVA classes;
the step of loading includes the step of searching a search path to locate code associated with said JAVA classes;
and the step of causing said source modules to begin execution is performed by causing each of one or more source objects that belong to said loaded modules to begin execution in a separate thread.
-
-
22. A system for filtering data comprising:
-
a set of one or more source modules loaded and executing in memory;
wherein source modules in said set of source modules are software modules configured to obtain data from a source and transmit the data in messages to a set of subscribers;
wherein the set of subscribers to which each source module transmits messages is determined by information received by said source module while said source module is loaded into dynamic memory and not determined by code in said source module;
a set of one or more filter modules loaded in memory;
wherein filter modules in said set of filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein the set of subscribers to which each filter moduled dispatches messages is determined by information received by said filter module when said filter module is executing and not determined by code in said filter module;
a set of one or more action modules loaded in memory;
wherein action modules in said set of action modules are software modules configured to respond to messages by performing actions;
said set of source modules including a first source module that receives data from a source and responds to receipt of said data by transmitting messages to each subscriber in a first list of subscribers;
said set of filter modules including a filter module that receives messages from a source module in said set of source modules and responds to receipt of said messages by determining whether said messages satisfy a set of criteria; and
transmitting messages to a second list of subscribers if said messages from said source module satisfy said set of criteria;
said set of action modules including a first action module that receives messages from a filter module in said set of filter modules and responds to receipt of said messages by performing a particular action;
wherein members of said first list of subscribers are established when said first source module is loaded into said memory; and
wherein members of said second list of subscribers are established when said first filter module is loaded into said memory. - View Dependent Claims (23, 24, 25, 26, 27)
said set of source modules, said set of filter modules, and said set of action modules; said system coordinator being further configured to load said set of source modules, said set of filter modules, and said set of action modules into said memory in response to said configuration data.
-
-
24. The system of claim 23 wherein:
-
the configuration data further specifies publisher-subscriber relationships between source modules in said set of source modules, filter modules in said set of filter modules, and action modules in said set of action modules; and
the system coordinator is configured to establish members of said first list of subscribers and said second list of subscribers in response to said configuration data.
-
-
25. The system of claim 24 wherein said system coordinator changes members of at least one of said first subscription list and said second subscription list in response to input received after said set of source objects have begun executing.
-
26. The system of claim 22 further comprising a system coordinator configured to respond to particular user input by causing said first action module to change said particular action.
-
27. The system of claim 22 further comprising a system coordinator configured to respond to particular user input by changing said set of criteria used by said first filter module.
-
28. A system for filtering data comprising:
-
a set of one or more source modules loaded and executing in memory;
wherein said source modules are software modules configured to obtain data and transmit the data in messages to a set of subscribers;
a set of one or more filter modules loaded in memory;
wherein said filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein one or more of the filtering criteria used by said filter modules is determined by information received by said filter modules when said filter modules are loaded into dynamic memory, and not determined by code in said filter modules;
a set of one or more action modules loaded in memory;
wherein said action modules are software modules configured to respond to messages by performing actions;
wherein one or more of said actions performed by said action modules in response to messages are determined by information received by said action modules when said action modules are loaded into dynamic memory, and not by determined code in said filter modules;
said set of source modules including a first source module that receives data from a source and responds to receipt of said data by transmitting messages to each subscriber in a first list of subscribers;
said set of filter modules including a filter module that receives messages from a source module in said set of source modules and responds to receipt of said messages by determining whether said messages satisfy a set of criteria; and
transmitting messages to a second list of subscribers if said messages from said source module satisfy said set of criteria;
said set of action modules including a first action module that receives messages from a filter module in said set of filter modules and responds to receipt of said messages by performing a particular action;
wherein said set of criteria is established when said first filter module is loaded into said memory; and
wherein said particular action is established when said first action module loaded into said memory.
-
-
29. A method for filtering data, the method comprising the steps of:
-
receiving user input from a user that specifies relationships between source modules, filter modules and action modules; and
criteria to be used by said filter modules;
wherein said source modules are software modules configured to obtain data and transmit the data in messages to a set of subscribers;
wherein said filter modules are software modules configured to receive messages and provide filtering criteria that decides whether the messages should be dispatched to a set of subscribers;
wherein one or more of the filtering criteria used by said filter modules is determined by information received by said filter modules when said filter modules are loaded into dynamic memory, and not determined by code in said filter modules;
wherein said action modules are software modules configured to respond to messages by performing actions;
based on said user input, loading and initializing a filtering system that includes filter modules that filter information from said source modules based on said criteria, and action modules that perform said actions in response to messages from said filter modules; and
wherein the step of initializing includes sending information to said filter modules after said filter modules are loaded, said information causing said filter modules to filter based on said criteria indicated in said user input. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36)
after said step of initializing, receiving user input that specifies a second set of criteria that is different from said particular set of criteria;
generating a second set of arguments that reflect said second set of criteria; and
re-initializing said first filter module with said second set of arguments to cause said first filter module to filter based on said second set of criteria.
-
-
32. The method of claim 29 further comprising the steps of:
-
after initializing said filtering system, receiving user input that makes a modification to said relationships between said source modules, action modules and filter modules; and
while said filtering system is in operation, modifying said relationship between said source modules, action modules and filter modules based on said user input.
-
-
33. The method of claim 32 further comprising the step of generating a user interface through which a user can specify changes to said relationships.
-
34. The method of claim 29 wherein one of said action modules causes a notification to be displayed to a user in response to receipt of a message from a filter.
-
35. The method of claim 29 further comprising the step of displaying a user interface for communicating to a user a set of parameter values that are currently in effect within said filtering system.
-
36. The method of claim 35 wherein said user interface includes controls that allow a user to change said set of parameter values that are currently in effect within said filtering system.
Specification