Source: http://www.google.com/patents/US7814198?dq=6,339,780
Timestamp: 2014-08-21 16:36:06
Document Index: 261268966

Matched Legal Cases: ['arts 108', 'arts 108', 'arts 108', 'arts 108', 'arts 108', 'arts 108', 'art 108']

Patent US7814198 - Model-driven, repository-based application monitoring system - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign in<nobr>Advanced Patent Search</nobr>PatentsEnabling and processing events. To enable events, an application model correlated to an application is declaratively defined. The application model describes operations of the application. One or more event models correlated to the application model are declaratively defined. The event models describe...http://www.google.com/patents/US7814198?utm_source=gb-gplus-sharePatent US7814198 - Model-driven, repository-based application monitoring systemAdvanced Patent SearchPublication numberUS7814198 B2Publication typeGrantApplication numberUS 11/925,326Publication dateOct 12, 2010Filing dateOct 26, 2007Priority dateOct 26, 2007Fee statusPaidAlso published asUS20090112559, WO2009055752A2, WO2009055752A3Publication number11925326, 925326, US 7814198 B2, US 7814198B2, US-B2-7814198, US7814198 B2, US7814198B2InventorsErik B. Christensen, Igor Sedukhin, Amol Sudhakar Kulkarni, Mariusz G. Borsa, Haoran Andy Wu, Mandyam N. Kishore, Leo S. Vannelli, III, Anubhav DhootOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (105), Non-Patent Citations (57), Referenced by (6), Classifications (14), Legal Events (2) External Links: USPTO, USPTO Assignment, EspacenetModel-driven, repository-based application monitoring systemUS 7814198 B2Abstract Enabling and processing events. To enable events, an application model correlated to an application is declaratively defined. The application model describes operations of the application. One or more event models correlated to the application model are declaratively defined. The event models describe application execution locations where events are desired to be emitted in the execution of the application. Based on the correlation of the event models to the application models, the applications are instrumented with instrumentation code to cause the application to emit events at the execution locations. To process events an application model is defined. The application model includes one or more observation models. The observation models include a correlation of events to the observation model by defining instrumentation models in the application model. An event is received. The event is applied to the observation model based on the correlation. The event is processed according to the observation model.
1. In a distributed computing environment, a method of enabling events from applications, the method performed upon one or more computer processors, the method comprising;
declaratively defining an application model correlated to an application, the application model describing operations of the application;
declaratively defining one or more event models correlated to the application model, the event models describing application execution locations where events are desired to be emitted in the execution of the application;
based on the correlation of the event models to the application models, instrumenting the applications with instrumentation code to cause the application to emit events at the execution locations; and
defining an aggregation point for aggregating events wherein aggregating events comprises combining events through logical operations.
2. The method of claim 1, further comprising emitting events by driving the applications and causing the execution of the instrumentation code.
3. The method of claim 2, further comprising using emitted events to adaptively control the application.
4. The method of claim 1, wherein the instrumentation code causes events emitted to include a reference to an application model corresponding to the event.
routing the generated events to the aggregation point defined for the event.
6. The method of claim 5, wherein defining an aggregation point for events comprises defining a hierarchical event aggregation system where events aggregated at a plurality of aggregation point are aggregated at a higher level aggregation point.
7. The method of claim 5, wherein defining an aggregation point for events comprises defining an aggregation point that is distributed across a plurality of nodes.
8. The method of claim 5, wherein at the aggregation point, the events are manipulated.
9. The method of claim 8, wherein manipulating events comprises storing the events.
10. The method of claim 8, wherein manipulating events comprises generating key performance indicators from aggregated events.
11. A method of processing events, the method performed upon one or more computer processors, the method comprising;
defining an application model, wherein the application model includes one or more observation models, wherein the observation models comprise a correlation of events to the observation model by defining instrumentation models in the application model;
applying the event to the correlated observation model based on the correlation; and
processing the event according to the observation model, wherein processing the event comprises aggregating events and wherein aggregating events comprises combining events through logical operations.
12. The method of claim 11, wherein processing the event according to the observation model comprises storing the event.
13. The method of claim 11, wherein processing the event according to the observation model comprises processing the event in aggregators arranged hierarchically.
14. The method of claim 11, wherein processing the event according to the observation model comprises sending events to an aggregator based on the event type.
15. The method of claim 11, wherein processing the event according to the observation model comprises monitoring events using a generic monitoring module wherein the generic monitoring module references an input event definition to correlate output from an event source with input to an event listener.
a repository, wherein the repository comprises models of applications, wherein the models of applications include instrumentation models correlated to application execution locations where events are desired to be emitted;
one or more event processors configured to receive events from an instrumented application, wherein at least one of the one or more event processors is configured to aggregate events; and
drivers coupled to repository, wherein the drivers are configured to instrument application code based on the correlation of instrumentation models to application execution locations.
17. The system of claim 16, wherein at least one of the one or more event processors belongs to a hierarchical event aggregation structure.
18. The system of claim 16, further comprising one or more event stores configured to store events.
Computing system functionality can be enhanced by a computing systems ability to be interconnected to other computing systems via network connections. Network connections may include, but are not limited to, connections via wired or wireless Ethernet, cellular connections, or even computer to computer connections through serial, parallel, USB, or other connections. Additionally, connections may include connections between entities on a common host, or connections of distributed applications to other distributed applications. The connections allow a computing system to access services at other computing systems and to quickly and efficiently receive application data from other computing system.
Often interconnected computer systems include large, complex and diverse implementations. Some applications in systems are multi-tiered and have many distributed components and subsystems some of which are long-running workflows and legacy or external systems. The distributed nature of applications and variety of implementations creates a challenge to enable and maintain distributed application monitoring. Points of interest in applications which should be monitored are implemented in varying technologies. Producing and consuming the monitoring events may take significant amount of custom coding today.
BRIEF SUMMARY One embodiment disclosed herein is directed to a method performed in a distributed computing environment. The method includes acts for enabling events from applications. The method includes declaratively defining an application model correlated to an application. The application model describes operations of the application. One or more event models correlated to the application model are declaratively defined. The event models describe application execution locations where events are desired to be emitted in the execution of the application. Based on the correlation of the event models to the application models, the applications are instrumented with instrumentation code to cause the application to emit events at the execution locations.
In another embodiment, a method of processing events is disclosed. The method includes defining an application model. The application model includes one or more observation models. The observation models include a correlation of events to the observation model by defining instrumentation models in the application model. The method further includes receiving an event. The event is applied to the correlated observation model based on the correlation. The event is processed according to the observation model.
Yet another embodiment includes a monitoring system. The monitoring system includes a repository. The repository includes models of applications. The models of applications include instrumentation models correlated to application execution locations where events are desired to be emitted. The system further includes drivers coupled to repository. The drivers are configured to instrument application code based on the correlation of instrumentation models to application execution locations.
FIG. 1A illustrates a modeling and event generation architecture;
FIG. 1B illustrates event production and monitoring;
FIG. 1C illustrates application and observation models;
FIG. 1D illustrates event processing on application nodes;
FIG. 1E illustrates an example of monitoring services;
FIG. 1F illustrates a multilevel event processing system;
FIG. 2 illustrates a method of enabling events; and
FIG. 3 illustrates a method of processing events.
DETAILED DESCRIPTION Embodiments herein may comprise a special purpose or general-purpose computer including various computer hardware, as discussed in greater detail below. Some embodiments described herein provide services and frameworks to securely distribute, run, manage and operate on heterogeneous business process applications. Distributed applications are modeled declaratively and the models are stored in a repository. The framework executes commands to drive the applications through their software lifecycles.
Monitoring points, or event sources, are defined and attached to the applications. This can be accomplished by declaratively defining event models and correlating the event models with application models. This correlation is then used to instrument application code, which enables collecting events from individual application modules and aggregating them to better understand the overall health and/or the aggregated relevant variables of an application. These events are recorded in one or more data stores and used to adaptively control application behavior and its runtime environment. Some embodiments may include a decentralized runtime that is designed to support large number of connected hosts that are geographically distributed.
Referring now to FIG. 1A, an example embodiment is illustrated. FIG. 1A illustrates that tools 102 may be used to write declarative models 104 of composite applications to a repository 106. Declarative models 104 describe applications in terms of composition of application parts 108 and connections between application parts 108 as well as configuration and mapping of application parts 108 to hosts 110 that will run them. Note that applications may be distributed such that in some embodiments, only parts 108 of the application are implemented on any given host 110.
Tools 102 send commands 114 to executive services 112. Commands 114 are used to drive applications described by models 104 through their software lifecycles. Commands 114 carry references to the models 104 to which they apply. For example �start application �app1� is a kind of a command with a reference to the application �app1.�
Executive services 112 facilitate carrying out a submitted command 114 by executing a model-described workflow that provides variable part values, such as machine name on which the application is to be run or network port numbers where the applications will be accepting requests, to the identified model 104. Executive services 112 may send more specific commands 116 to driver services 118. Driver services 118 translates the models 104 into ready to execute application's parts 108, deploys them to the hosts 110 in response to proper executive services commands, and starts the applications.
The application's parts 108 include interceptors 103 which once the application is started will start emitting streams of events 111 and send them to monitoring services 120 with help of an event collector service 122. The interceptors 103 emit events 111 with a destination identifier stored in a local interceptor configuration. In one embodiment, the destination identifier can be was produced by executive services 112 based on repository 106 stored connections between application event sources and monitoring applications. As will be discussed later herein, the destination identifier can identify a location where events 111 will be later processed.
In one embodiment, each machine includes driver services 118 which has the event collector service 122. The event collector service 122 serves as a sink for the events 111 emitted. The event collector service 122 sorts the events by their destination, and sends them in batches to monitoring services 120 for processing. Monitoring services 120 may perform any of a number of functions, such as in-memory aggregation on received event streams and storing resulting processed event streams to an event store 124. Alternatively, events streams may be passed on to another event destination. In some embodiments, processing may include functionality for using aggregated events to adaptively control the applications modeled by the application models 104.
Events emitted by interceptors 103 can be processed, including aggregation or other processing, on the same application node. In one embodiment, a node may be a particular computer system. In one embodiment, processing may be performed inside the event collector service 122 of a computer system, before sending the events to the monitoring services 120. While a single monitoring services 120 and single event store 124 have been illustrated in FIG. 1A, multiple monitoring services and event stores may be used, as will be illustrated in more detail below. Additionally, aggregators and other system components may be distributed across multiple nodes.
FIG. 1B illustrates how existing application code may be instrumented to enable and activate event production and observation. For an application to produce events, it should be properly instrumented. FIG. 1B illustrates that an application model 104 is declaratively defined. The application model 104 includes declarative module descriptions 105, declarative instrumentation descriptions 107, and declarative observation descriptions 109.
For application modules 129 at the hosts 110, instrumentation is accomplished by stopping the application, modifying the application model 104 by adding instrumentation models 107 including event sources or interceptors, and redeploying the application so that instrumentation 130 corresponding to the instrumentation models 107 is installed and configured at the application modules 129. The application is then restarted. Once this is done, the events start flowing from the application to the event collector services 122.
A user can create a set of observation models 109 in the repository 106. The observation models 109 can be connected to event sources defined on application models 104 as needed. Additionally, the observation models can be assigned to desired event processors such as the event aggregators 128 a and 128 b. Further, the observation models can be used to initiate deployment of new monitoring configurations. This can be done dynamically during runtime of applications, with no need to stop the applications to activate new observations. After a monitoring configuration is deployed and started according to an observation model 109, the events start being aggregated and stored into the event store 124. Observations may include functionality for evaluation of metrics, such as key performance indicators. In the example illustrated, the observations performed at event aggregator 128 a are directed to average latency, while the observations performed at event aggregator 128 b are directed to quantifying messages per second. Other indicators, though not included here, may also be evaluated.
Referring now to FIG. 1C, an example of how monitoring of user applications by monitoring modules can be modeled in the repository 106 is illustrated. An application described by an application model 130 can emit events. In particular, an instrumented application has an event source modeled by the event source model 132. In the example illustrated in FIG. 1C, the types of events which the application can emit are represented by a collection of application event definitions 134, or event models, associated with an event source 132. These application event definitions 134 define the application specific events. Examples of events that might be modeled for an e-commerce enterprise may include: �order processed�, �user error�, �invoice received�, etc. Events can be categorized as specific subtypes of events. For example, an event may be of a subtype category �Occurrence�, �Rate�, �Count�, �Duration�, etc. Statistics may be maintained with values corresponding to event categories for an event.
An event connection 136 specifies which event listener, represented by event listener 138 defined on a monitoring module 140, will be listening for events from an application's event source 132. Notably, event sources 132 can be connected to multiple event listeners 138.
The monitoring module 140 may not be aware upfront of all possible event types it will be processing. As such, the monitoring module 140 may include a predefined abstract input event definition set 142 and a set of event mappings 144 which associate the application event definitions 134 with the input event definitions 142.
Event mappings 144 allow for assigning monitoring module specific meanings to the application events. For instance, the monitoring module 140 calculating the duration of some operation can define two input event definitions for the events it will be accepting. For example, the monitoring module 140 may define input event definitions: �Operation Start� and �Operation Stop.� In the present example, a monitored application emits two kinds of events��Request Received� event and �Response Sent� events. By configuring event mappings of �Request Received� to �Operation Start� and �Response Sent� to �Operation Stop� events, the generic monitoring module 140, including a duration calculator, can now compute the durations of operations in application emitting arbitrary kinds of events. This allows for reusability of generic monitoring modules, and further allows for processing events from diverse sources.
A monitoring module configuration 146 may specify a type of event writer which will be used by the monitoring module 140 and the configuration of it. Such information may include, for example, event store location and connection options (including timeouts), size of event buffers, and buffering characteristics (including buffer flush intervals).
Referring now to FIG. 1D, an example of processing events on an application node is illustrated. Application events are created on one or more computers where the monitored application runs, and gathered by an event collector 158. This is illustrated in FIG. 1D. Additionally, further details are included in U.S. patent application Ser. No. 11/844,177 titled �Monitoring Distributed Applications� filed on Aug. 23, 2007, and incorporated herein by reference in its entirety.
When the application gets configured through drivers 150, the event-generating instrumentation 152 is configured for execution within the host 154 the application runs under. This instrumentation 152 is created using interceptors which emit events 156 in response to some actions taken by the application, such as workflow activity execution or messaging endpoint receiving/sending a message, and monitors which can help with polling of current system values like performance counters. The instrumentation is configured based on event source models attached to application models.
An application computer or node under control of the framework has an event collector 158 service. The event collector 158 is tasked with collecting events emitted by applications and other event sources running on a node. The event collector 158 forwards the events to the right event processor where the actual event processing will take place.
The event collector 158 may be configured based on models 104 in the repository 106 (See FIG. 1A). The event connections 136 (FIG. 1C) between application parts models 130 and the monitoring module 140 models allow event collector 158 to determine the location of the event processor where the events should be sent. Notably, each event type may be processed, in some embodiments, at different event processor nodes.
In one embodiment, the event collector 158 performs event buffering and sends the events to event processors in batches for improving throughput. The event collector 158 can also perform some initial preprocessing of events, like simple filtering, aggregation, logical composition, etc. The event collector 158 may also reduce the number of connections from application nodes to event processor instances.
Referring now to FIG. 1E, an example of monitoring services is illustrated. A model driven event processor 160 is a host controlling execution of monitoring applications. When the event processor 160 starts, it uses a configurator 162 to initialize the monitoring configuration. Further, the configurator 162 is invoked by a deployment/undeployment workflow running under the framework command processor to deploy/undeploy monitoring modules when the monitoring application gets deployed/undeployed.
The configurator 162 reads the monitoring applications models 164 from repository 106. A monitoring application model 164 contains a set of monitoring modules models. The monitoring applications are deployed the same way other user applications are deployed. In particular, applications may be deployed through lifecycle transitions workflows executed under control of the framework command processor.
The configurator 162 deploys each monitoring module assigned to an event processor 160 producing a runtime event handler 166 by instantiating the event handler object based on the monitoring module model 164. Deployment of a monitoring module includes adding the event handler 166 to an event dispatcher's 168 event dispatch table, keyed by a reference to an event definition specified in monitoring modules' event mappings. This effectively creates a subscription through which events will be delivered to event handlers 166. Similarly, the monitoring module 140 (see FIG. 1C) can be undeployed by deleting its corresponding event handler 166 from the dispatch table.
The event dispatcher 168 routes the events to event handlers 166 based on an event routing dispatch table which maps the input event type to a list of event handlers 166. For every event handler 166 in the list, a new work item gets queued to a thread pool, with the event for processing by the event handler 166. As such, events may be processed by event handlers 166 in parallel, taking advantage of multiple CPUs present in a system.
Some input events can be aggregated by single event handler 166 in memory before writing the resulting event output. This may result in event stream intensity reduction and allow for improved event processing performance. Raw input events come as an input to the event handler 166, and are processed. The result of this processing is stored into a private event handler's in-memory data structure, which accumulates the data until enough events have been processed. When this occurs, an output aggregate event can be emitted. This may including passing events to an event handler's event writer.
An event writer may be an event store writer 170 which will store the processed event straight to an event store 124. In alternative embodiments, the event writer may be another kind of writer 172 which can pass the event to different components of the system, such as to another event processor, allowing for building a hierarchical event processing system.
The system can include multiple event processors 160 and multiple event stores 124. This, combined with in-memory event aggregation capability allows for configuring of scaled out event processing systems capable of handling very intensive event streams. The sample multilevel event processing system can be implemented as depicted as in FIG. 1F.
Events in event store 124 have an identifier on the event source in application model it was generated from. This way, the Analytics tools can query the event store 124 and locate the events only related to particular applications, by filtering through list of application event sources, and produce useful reports and other visualizations.
For every application's regular entry point (like Web Service endpoint) it is possible to automatically generate default event source models and their corresponding observation applications which will cause every application deployed through executive services to have basic (default) set of monitoring present (i.e. events being emitted and processed ) at no additional development cost.
Referring now to FIG. 2, a method 200 is illustrated. The method 200 illustrates acts for enabling events from applications. FIG. 2 illustrates that the method 200 includes declaratively defining an application model correlated to an application (act 202). In the example illustrated, the application model describes operations of the application. FIG. 1A illustrates example of application models 104 defined declaratively and stored in a repository 106.
The method 200 further includes declaratively defining one or more event models correlated to the application model (act 202). The event models describe application execution locations where events are desired to be emitted in the execution of the application. The event models may be included, for example, in the instrumentation models 107 illustrated in FIG. 1B.
Based on the correlation of the event models to the application models, the method 200 further includes instrumenting the applications with instrumentation code to cause the application to emit events at the execution locations (act 206). FIG. 1B illustrates instrumentation 130 associated with application modules 129.
The method 200 may further include generating events by driving the applications and causing the execution of the instrumentation code. These events are illustrated in one example at 111 in FIG. 1A. In one embodiment, the instrumentation code causes events emitted to include a reference to an application model corresponding to the event. Thus, for example, the event 111 illustrated in FIG. 1A may include a reference to the application model 104. This allows for the monitoring services 120 to apply the event to an observation model 109 stored in the repository 106 to facilitate how events are handled including aggregation, routing, and storage.
As alluded to above, the method 200 may further include defining an aggregation point for events. Generated events are then routed to the aggregation point defined for the events. Defining an aggregation point for events may include defining a hierarchical event aggregation system where events aggregated at a number of aggregation point are aggregated at one or more higher level aggregation points. At the aggregation point, the events are manipulated. For example, manipulating events may include combining a number of events through logical or other operations. Manipulating events may include storing the events.
Referring now to FIG. 3, a method of processing events is illustrated. The method 300 includes defining an application model, where the application model includes one or more observation models (act 302). The observation models include a correlation of events to the observation model by defining instrumentation models in the application model.
The method 300 further includes receiving an event (act 304). For example, as illustrated in FIG. 1A, the monitoring services 120 may receive an event 111 from an application part 108. The method 300 further includes applying the event to the correlated observation model based on the correlation (act 306).
The method 300 further includes processing the event according to the observation model (act 308). For example, in one embodiment, processing the event according to the observation model includes storing the event. In some embodiments, wherein processing the event according to the observation model includes aggregating events. Aggregating the events may include, for example, combining the events through logical or other operations.
In one embodiment, processing the event according to the observation model includes processing the event in aggregators arranged hierarchically. In another embodiment, processing the event according to the observation model includes sending events to an aggregator based on the event type. In yet another embodiment, processing the event according to the observation model comprises monitoring events using a generic monitoring module where the generic monitoring module references an input event definition to correlate output from an event source with input to an event listener.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4751635Apr 16, 1986Jun 14, 1988Bell Communications Research, Inc.Distributed management support system for software managersUS5423003Mar 3, 1994Jun 6, 1995Geonet Limited L.P.System for managing network computer applicationsUS5602991May 25, 1995Feb 11, 1997Geonet Limited, L.P.System for managing system for managing networked computer applicationsUS5655081Mar 8, 1995Aug 5, 1997Bmc Software, Inc.System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architectureUS5764241Nov 30, 1995Jun 9, 1998Microsoft CorporationMethod and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behaviorUS5809266Jan 21, 1997Sep 15, 1998Oracle CorporationMethod and apparatus for generating reports using declarative toolsUS5893083Mar 19, 1996Apr 6, 1999Hewlett-Packard CompanyMethods and apparatus for monitoring events and implementing corrective action in a computer systemUS5937388Mar 21, 1997Aug 10, 1999Hewlett-Packard CompanySystem and method for performing scalable distribution of process flow activities in a distributed workflow management systemUS5958010Mar 20, 1997Sep 28, 1999Firstsense Software, Inc.Systems and methods for monitoring distributed applications including an interface running in an operating system kernelUS6026404Oct 31, 1997Feb 15, 2000Oracle CorporationMethod and system for executing and operation in a distributed environmentUS6055363Jul 22, 1997Apr 25, 2000International Business Machines CorporationManaging multiple versions of multiple subsystems in a distributed computing environmentUS6070190May 11, 1998May 30, 2000International Business Machines CorporationClient-based application availability and response monitoring and reporting for distributed computing environmentsUS6225995Oct 31, 1997May 1, 2001Oracle CorporatonMethod and apparatus for incorporating state information into a URLUS6247056Oct 31, 1997Jun 12, 2001Oracle CorporationMethod and apparatus for handling client request with a distributed web application serverUS6279009Dec 4, 1998Aug 21, 2001Impresse CorporationDynamic creation of workflows from deterministic models of real world processesUS6330717Feb 25, 1999Dec 11, 2001Sony Corporation Of JapanProcess and system for developing an application program for a distributed adaptive run-time platformUS6334114Oct 31, 1997Dec 25, 2001Oracle CorporationMethod and apparatus for performing transactions in a stateless web environment which supports a declarative paradigmUS6336217Dec 30, 1998Jan 1, 2002International Business Machines CorporationSystems, methods and computer program products for end-to-end software development process automationUS6477665Aug 31, 1999Nov 5, 2002Accenture LlpSystem, method, and article of manufacture for environment services patterns in a netcentic environmentUS6618719May 19, 2000Sep 9, 2003Sybase, Inc.Database system with methodology for reusing cost-based optimization decisionsUS6640241 *Jul 19, 1999Oct 28, 2003Groove Networks, Inc.Method and apparatus for activity-based collaboration by a computer system equipped with a communications managerUS6654783 *Mar 30, 2000Nov 25, 2003Ethergent CorporationNetwork site content indexing method and associated systemUS6662205Oct 1, 1996Dec 9, 2003International Business Machines CorporationScaleable and extensible system management architecture with dataless endpointsUS6697877Jul 10, 1997Feb 24, 2004Sun Microsystems, Inc.Method and apparatus for determining equality of objects in a distributed object environmentUS6710786Sep 28, 2000Mar 23, 2004Oracle International CorporationMethod and apparatus for incorporating state information into a URLUS6715145Aug 31, 1999Mar 30, 2004Accenture LlpProcessing pipeline in a base services pattern environmentUS6718535Jul 30, 1999Apr 6, 2004Accenture LlpSystem, method and article of manufacture for an activity framework design in an e-commerce based environmentUS6801818Mar 14, 2001Oct 5, 2004The Procter & Gamble CompanyDistributed product developmentUS6847970Sep 11, 2002Jan 25, 2005International Business Machines CorporationMethods and apparatus for managing dependencies in distributed systemsUS6854069May 2, 2001Feb 8, 2005Sun Microsystems Inc.Method and system for achieving high availability in a networked computer systemUS6886024Oct 25, 2000Apr 26, 2005Nec CorporationDistributed application control system, control method and a programUS6907395Oct 24, 2000Jun 14, 2005Microsoft CorporationSystem and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical modelUS6931644Dec 21, 2000Aug 16, 2005International Business Machines CorporationHierarchical connected graph model for implementation of event management designUS6934702Mar 26, 2002Aug 23, 2005Sun Microsystems, Inc.Method and system of routing messages in a distributed search networkUS6941341Jan 26, 2004Sep 6, 2005Sandraic Logic, Llc.Method and apparatus for balancing distributed applicationsUS7051098May 24, 2001May 23, 2006United States Of America As Represented By The Secretary Of The NavySystem for monitoring and reporting performance of hosts and applications and selectively configuring applications in a resource managed systemUS7055143Jul 10, 2001May 30, 2006Microsoft CorporationSystem and methods for providing a declarative syntax for specifying SOAP-based web servicesUS7065579Jan 22, 2002Jun 20, 2006Sun Microsystems, Inc.System using peer discovery and peer membership protocols for accessing peer-to-peer platform resources on a networkUS7072807Feb 26, 2004Jul 4, 2006Microsoft CorporationArchitecture for distributed computing system and automated design, deployment, and management of distributed applicationsUS7072934Jan 12, 2001Jul 4, 2006Saba Software, Inc.Method and apparatus for a business applications server management system platformUS7079010Apr 7, 2004Jul 18, 2006Jerry ChamplinSystem and method for monitoring processes of an information technology systemUS7085837Dec 4, 2001Aug 1, 2006International Business Machines CorporationDynamic resource allocation using known future benefitsUS7096258May 12, 2004Aug 22, 2006Microsoft CorporationSystem and method providing automatic policy enforcement in a multi-computer service applicationUS7103874Oct 23, 2003Sep 5, 2006Microsoft CorporationModel-based management of computer systems and distributed applicationsUS7130881May 1, 2002Oct 31, 2006Sun Microsystems, Inc.Remote execution model for distributed application launch and controlUS7150015Sep 4, 2001Dec 12, 2006Pace Charles PMethod and system for deploying an asset over a multi-tiered networkUS7155380Dec 9, 2004Dec 26, 2006Microsoft CorporationSystem and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical modelUS7155466Oct 27, 2004Dec 26, 2006Archivas, Inc.Policy-based management of a redundant array of independent nodesUS7162509Dec 30, 2005Jan 9, 2007Microsoft CorporationArchitecture for distributed computing system and automated design, deployment, and management of distributed applicationsUS7168077Jan 31, 2003Jan 23, 2007Handysoft CorporationSystem and method of executing and controlling workflow processesUS7174359Nov 9, 2000Feb 6, 2007International Business Machines CorporationApparatus and methods for sequentially scheduling a plurality of commands in a processing environment which executes commands concurrentlyUS7178129Dec 6, 2002Feb 13, 2007Dbase, Inc.Drag-and drop dynamic distributed object modelUS7200530Dec 29, 2005Apr 3, 2007Microsoft CorporationArchitecture for distributed computing system and automated design, deployment, and management of distributed applicationsUS7219351May 19, 2003May 15, 2007Oracle International CorporationMulti-view conversion system and method for exchanging communications between heterogeneous applicationsUS7263689Nov 1, 2001Aug 28, 2007Microsoft CorporationApplication program interface for dynamic instrumentation of a heterogeneous program in a distributed environmentUS7512707Nov 3, 2005Mar 31, 2009Adobe Systems IncorporatedLoad balancing of server clustersUS20020038217Apr 9, 2001Mar 28, 2002Alan YoungSystem and method for integrated data analysis and managementUS20020099818Nov 14, 2001Jul 25, 2002Russell Ethan GeorgeMethod and system for monitoring the performance of a distributed applicationUS20020111841Feb 6, 2002Aug 15, 2002International Business Machines CorporationControlling commands in workflow management systemsUS20020120917Nov 26, 2001Aug 29, 2002Pedram AbrariBusiness rules user inerface for development of adaptable enterprise applicationsUS20020133504Oct 29, 2001Sep 19, 2002Harry VlahosIntegrating heterogeneous data and toolsUS20020135611Dec 29, 2000Sep 26, 2002Trevor DeosaranRemote performance management to accelerate distributed processesUS20020147515Apr 2, 2002Oct 10, 2002Daniele FavaMethod for the management of workcell systems based on an automation management systemUS20020147962Feb 12, 2001Oct 10, 2002International Business Machines CorporationMethod and system for incorporating legacy applications into a distributed data processing environmentUS20020198734Mar 29, 2002Dec 26, 2002Greene William S.Method and system for implementing a global ecosystem of interrelated servicesUS20030005411Jun 29, 2001Jan 2, 2003International Business Machines CorporationSystem and method for dynamic packaging of component objectsUS20030061342Sep 27, 2001Mar 27, 2003International Business Machines CorporationApparatus and method of representing real-time distributed command execution status across distributed systemsUS20030084156Oct 26, 2001May 1, 2003Hewlett-Packard CompanyMethod and framework for generating an optimized deployment of software applications in a distributed computing environment using layered model descriptions of services and serversUS20030135384Sep 3, 2002Jul 17, 2003Huy NguyenWorkflow process method and system for iterative and dynamic command generation and dynamic task execution sequencing including external command generator and dynamic task execution sequencerUS20030149685Feb 4, 2003Aug 7, 2003Thinkdynamics Inc.Method and system for managing resources in a data centerUS20030195763Nov 4, 2002Oct 16, 2003International Business Machines CorporationMethod and system for managing a distributed workflowUS20040034850Aug 15, 2003Feb 19, 2004Microsoft CorpaorationServicing a component-based software product throughout the software product lifecycleUS20040046785Sep 11, 2002Mar 11, 2004International Business Machines CorporationMethods and apparatus for topology discovery and representation of distributed applications and servicesUS20040078461 *Oct 18, 2002Apr 22, 2004International Business Machines CorporationMonitoring storage resources used by computer applications distributed across a networkUS20040088350 *Oct 31, 2002May 6, 2004General Electric CompanyMethod, system and program product for facilitating access to instrumentation data in a heterogeneous distributed systemUS20040102926Sep 15, 2003May 27, 2004Michael AdendorffSystem and method for monitoring business performanceUS20040148184Apr 4, 2003Jul 29, 2004Electronic Data Systems CorporationSystem and method to manage the distribution of services software in a distributed networkUS20040162901Feb 19, 2004Aug 19, 2004Krishna MangipudiMethod and apparatus for policy based class service and adaptive service level management within the context of an internet and intranetUS20050005200Mar 12, 2004Jan 6, 2005Vladimir MatenaMethod and apparatus for executing applications on a distributed computer systemUS20050044214Jul 8, 2004Feb 24, 2005Schwertfuehrer Gerit Edler VonMethod for monitoring distributed softwareUS20050055692Apr 29, 2004Mar 10, 2005International Business Machines CorporationMethod of building dynamic installation packages using a declarative authoring toolUS20050071737Sep 30, 2003Mar 31, 2005Cognos IncorporatedBusiness performance presentation user interface and method for presenting business performanceUS20050074003Oct 2, 2003Apr 7, 2005Ball David AlexanderDistributed software architecture for implementing BGPUS20050091227 *Oct 23, 2003Apr 28, 2005Mccollum Raymond W.Model-based management of computer systems and distributed applicationsUS20050120106Dec 2, 2003Jun 2, 2005Nokia, Inc.System and method for distributing software updates to a network applianceUS20050125212Dec 9, 2004Jun 9, 2005Microsoft CorporationSystem and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical modelUS20050132041Dec 10, 2003Jun 16, 2005Ashish KunduSystems, methods and computer programs for monitoring distributed resources in a data processing environmentUS20050137839Dec 20, 2004Jun 23, 2005Nikolai MansurovMethods, apparatus and programs for system developmentUS20050155042Jul 2, 2002Jul 14, 2005Michael KolbComponent-based system for distributed applicationsUS20050165906 *Dec 27, 2004Jul 28, 2005Mci, Inc.Deploying service modules among service nodes distributed in an intelligent networkUS20050188075Jan 22, 2004Aug 25, 2005International Business Machines CorporationSystem and method for supporting transaction and parallel services in a clustered system based on a service level agreementUS20050216831Mar 29, 2004Sep 29, 2005Grzegorz GuzikKey performance indicator system and methodUS20050261875May 20, 2005Nov 24, 2005Sandeep ShrivastavaWatches and notificationsUS20050268307Jun 20, 2005Dec 1, 2005Apple Computer, Inc.Distributing and synchronizing objectsUS20050278702May 25, 2004Dec 15, 2005International Business Machines CorporationModeling language and method for address translation design mechanisms in test generationUS20050283518Aug 22, 2005Dec 22, 2005Accenture LlpEnvironment service architectures for netcentric computing systemsUS20060010142Apr 28, 2005Jan 12, 2006Microsoft CorporationModeling sequence and time series data in predictive analyticsUS20060010164Feb 3, 2005Jan 12, 2006Microsoft CorporationCentralized KPI framework systems and methodsUS20060013252Jul 16, 2004Jan 19, 2006Geoff SmithPortable distributed application frameworkUS20060036743Aug 12, 2005Feb 16, 2006Galactic Computing CorporationSystem for balance distribution of requests across multiple servers using dynamic metricsUS20060064460Nov 16, 2005Mar 23, 2006Canon Kabushiki KaishaImage communication apparatus, image communication method, and memory mediumUS20060070066Sep 30, 2004Mar 30, 2006Grobman Steven LEnabling platform network stack control in a virtualization platformUS20060070086Oct 29, 2004Mar 30, 2006Microsoft CorporationApplication development with unified programming modelsUS20060074734Jan 31, 2005Apr 6, 2006Microsoft CorporationDeclarative representation for an extensible workflow modelUS20060123389Nov 17, 2005Jun 8, 2006Kolawa Adam KSystem and method for global group reporting* Cited by examinerNon-Patent CitationsReference1"A Load Balancing Module for the Apache Web Server", Author Unknown, [online] [retrieved on Apr. 20, 2007], 9 pgs. Retrived from the Internet: http://www.backhand.org/ApacheCon2000/US/mod-backhand-coursenotes.pdf.2"Architecturing and Configuring Distributed Application with Olan", by R. Balter, L. Bellissard, F. Boyer, M Riveill and J.Y. Vion-Dury, Middleware 98 Conference Report, INRIA, France, [online] [retrieved on Apr. 20, 2007], 15 pages. Retrieved from the Internet: http://www.comp.lancs.ac.uk/computing/middleware98/papers.html.3"Factal:Edge Enlists CMLgroup to Bring Visualization to Business Performance Management Clients", http://extranet.fractaledge.com/News/PressReleases/2006/060829, 2006, 2 pages.4"Managing Complexity in Middleware", by Adrian Colyer, Gordon Blair and Awais Rashid, IBM UK Limited, Hursley Park, Winchester, England and Computing Department, Lancaster University, Bailrigg, Lancaster, England, [online] [retrieved on Apr. 20, 2007], 6 pages. Retrieved from the Internet: http://222.aosd.net/2005/workshops/acp4is/past/asp4is03/papers/colyer.pdf.5"Outlier Detection for Fine-Grained Load Balancing in Database Clusters", by Jin Chen, Gokul Soundararajan, Madalin Mihailescu and Cristiana Amza, Department of Computer Science, Department of Electrical and Computer Engineering, University of Toronto, [online] [retrieved on Apr. 20, 2007], 10 pgs. Retrieved from the Internet: http://www.cs.toronto.edu/~jinchen/papers/smdb07.pdf.6"Performance Tuning and Optimization of J2ee Applications on the Jboss Platfom", by Samuel Kounev, Bjorn Weis and Alejandro Duchmann, Department of Computer Science, Darmstadt University of Technology, Germany, [online] [retrieved on Apr. 20, 2007], 10 pgs. Retrieved from the Internet: http://www.cl.cam.ac.uk/~sk507/pub/04-cmg-JBoss.pdf.7"User Interface Declarative Models and Development Environments: A Survey", by Paulo Pinheiro Da Silva, Department of Computer Science, University of Manchester, Manchester, England [online] [retrieved on Apr. 20, 2007], 20 pages. Retrieved from the Internet: http://www.cs.utep.edu/paulo/papers/PinheirodaSilva-DSVIS-2000.pdf.8"A Load Balancing Module for the Apache Web Server", Author Unknown, [online] [retrieved on Apr. 20, 2007], 9 pgs. Retrived from the Internet: http://www.backhand.org/ApacheCon2000/US/mod�backhand�coursenotes.pdf.9"Outlier Detection for Fine-Grained Load Balancing in Database Clusters", by Jin Chen, Gokul Soundararajan, Madalin Mihailescu and Cristiana Amza, Department of Computer Science, Department of Electrical and Computer Engineering, University of Toronto, [online] [retrieved on Apr. 20, 2007], 10 pgs. Retrieved from the Internet: http://www.cs.toronto.edu/�jinchen/papers/smdb07.pdf.10"Performance Tuning and Optimization of J2ee Applications on the Jboss Platfom", by Samuel Kounev, Bjorn Weis and Alejandro Duchmann, Department of Computer Science, Darmstadt University of Technology, Germany, [online] [retrieved on Apr. 20, 2007], 10 pgs. Retrieved from the Internet: http://www.cl.cam.ac.uk/�sk507/pub/04-cmg-JBoss.pdf.11"User Interface Declarative Models and Development Environments: A Survey", by Paulo Pinheiro Da Silva, Department of Computer Science, University of Manchester, Manchester, England [online] [retrieved on Apr. 20, 2007], 20 pages. Retrieved from the Internet: http://www.cs.utep.edu/paulo/papers/PinheirodaSilva�DSVIS�2000.pdf.12Albrecht, Jeannie, et al., "Remote Control: Distributed Application Configuration Management, and Visualization with Plush", Proceedings of the Twenty-first USENIX Large Installation System Administration Conference (LISA), Nov. 2007, 16 pages.13Alpern, Bowen, et al, "PDS: A Virtual Execution Environment for Software Deployment", 2005, pp. 175-185.14Baldi, Mario, et al., "Exploiting Code Mobility in Decentralized and Flexible Network Management", Lecture Notes in Computer Science, vol. 1219, Proceedings of the First International Workshop on Mobile Agents, pp. 13-26.15Bauer, Michael A., "Managing Distributed Applications and Systems: An Architectural Experiment", Jan. 31, 1997, 46 pages.16Bischoff, Urs, et al., "Programming the Ubiquitous Network: A Top-Down Approach" System Support for Ubiquitous Computing Workshop (UbiSys'06), Orange County, USA, Sep. 2006, 8 pages.17Dias, M. Bernardine, et al., "A Real-Time Rover Executive Based on Model-Based Reactive Planning" The 7th International Symposium on Artificial Intelligence, Robotics and Automation in Space, May 2003.18Eidson, Thomas M., "A Component-based Programming Model for Composite, Distributed Applications", Institute for Computer Applications in Science and Engineering Hampton, VA, May 2001, 1 page.19Frecon, Emmanuel, et al., "DIVE: a scaleable network architecture for distributed virtual environments", The British Computer Society, The Institution of Electrical Engineers and IOP Publishing Ltd, Mar. 6, 1998, pp. 91-100.20Goble, Carole, et al., "Building Large-scale, Service-Oriented Distributed Systems using Semantic Models", http://www.jisc.ac.uk/media/documents/programmes/capital/grid-standards-above-ogsa.pdf, 21 pages.21Goble, Carole, et al., "Building Large-scale, Service-Oriented Distributed Systems using Semantic Models", http://www.jisc.ac.uk/media/documents/programmes/capital/grid�standards�above�ogsa.pdf, 21 pages.22Ivan, A.-A, et al., "Partionable services: A framework for seamlessly adapting distributed applications to heterogeneous environments", High Performance Distributed Computing, 2002. HPDC-11 2002. Proceedings. 11th IEEE International Symposium, 1 page.23Korb, John T., et al., "Command Execution in a Heterogeneous Environment", 1986 ACM, pp. 68-74.24Leymann, F., et al., "Web Services and Business Process Management", IBM Systems Journal, vol. 41, No. 2, 2002, New Developments in Web Services and E-commerce, 11 pages.25Maghraoui, Kaoutar El, et al., "Model Driven Provisionings: Bridging the Gap Between Declarative Object Models and Procedural Provisioning Tools", http://wcl.cs.rpi.edu/papers/middleware06.pdf.26Milenkovic, Milan, et al., "Towards Internet Distributed Computing", Sep. 26, 2003, http://m.students.umkc.edu/mpshxf/Towards-IDC.pdf.27Milenkovic, Milan, et al., "Towards Internet Distributed Computing", Sep. 26, 2003, http://m.students.umkc.edu/mpshxf/Towards�IDC.pdf.28Nastel Technologies, Inc., "AutoPilot Business Dashboard Configuration and User's Guide Version 4.4", 2006, AP/DSB 440.001, 82 pages.29Office Action dated Apr. 5, 2010 cited in U.S. Appl. No. 11/771,827.30Office Action dated Mar. 18, 2010 cited in U.S. Appl. No. 11/740,737.31Office Action dated Mar. 2, 2010 cited in U.S. Appl. No. 11/771,816.32Office Action dated Oct. 1, 2009 cited in U.S. Appl. No. 11/771,816.33Office Action dated Oct. 14, 2009 cited in U.S. Appl. No. 11/771,827.34Office Action dated Sep. 14, 2009 cited in U.S. Appl. No. 11/740,737.35OSLO>Suite 2006, "OSLO Suite is the leading platform for designing, building and executing adaptive business solutions", http://www.oslo-software.com/en/product.php.36Poslad, Stefan, et al., "The FIPA-OS agent platform: Open Source for Open Standards", Apr. 2000, 17 pages.37Robinson, William N., "Implementing Rule-based Monitors within a Framework for continuous Requirements Monitoring" Proceedings of the 38th Hawaii International Conference on System Sciences, 2005 IEEE, 10 pages.38Software News, "Progress Software Extends Lead in Distributed SOA" 2007, 6 pages.39Talcott, Carolyn L., MTCoord 2005 Preliminary Version, "Coordination Models Based on a Formal Model of Distributed Object Reflection", 13 pages.40Tawfik, Sam, "Composite applications and the Teradata EDW", Extend the capabilities of your enterprise data warehouse with supporting applications, Teradata Magazine online, Archive: vol. 6, No. 4, Dec. 2006, 3 pages.41TIBCO The Power of Now, "TIBCO BusinessFactor", 2006, 2 pages.42TIBCO, http://www.tibco.com/software/business-activity-monitoring/businessfactor/default.jsp, Copyright 2000-2007, 2 pages.43TIBCO, http://www.tibco.com/software/business�activity�monitoring/businessfactor/default.jsp, Copyright 2000-2007, 2 pages.44U.S. Appl. No. 11/740,737, filed Apr. 26, 2007, Sedukhin.45U.S. Appl. No. 11/771,816, filed Jun. 29, 2007, Sedukhin.46U.S. Appl. No. 11/771,827, filed Jun. 29, 2007, Sedukhin.47U.S. Appl. No. 11/844,177, filed Aug. 23, 2007, Sedukhin.48U.S. Appl. No. 11/925,067, filed Oct. 26, 2007, Sedukhin.49U.S. Appl. No. 11/925,079, filed Oct. 26, 2007, Bhaskar.50U.S. Appl. No. 11/925,184, filed Oct. 26, 2007, Voss.51U.S. Appl. No. 11/925,201, filed Oct. 26, 2007, Sedukhin.52U.S. Appl. No. 11/925,591, filed Oct. 26, 2007, Sedukhin.53U.S. Appl. No. 11/925,680, filed Oct. 26, 2007, Sedukhin.54U.S. Appl. No. 12/105,083, filed Apr. 17, 2008 (Not Yet Published).55U.S. Appl. No. 60/983,117, filed Oct. 26, 2007, Skierkowski.56Urban, Susan D., et al., "Active Declarative Integration Rules for Developing Distributed Multi-Tiered Applications", 3 pages.57Von, Vorgelet, et al., "Dynamic Upgrade of Distributed Software Components", 2004, 191 pages.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS8099494Mar 31, 2011Jan 17, 2012Microsoft CorporationTuning and optimizing distributed systems with declarative modelsUS8306996May 18, 2011Nov 6, 2012Microsoft CorporationProcessing model-based commands for distributed applicationsUS8443347Oct 19, 2011May 14, 2013Microsoft CorporationTranslating declarative modelsUS8473783 *Nov 9, 2010Jun 25, 2013International Business Machines CorporationFault tolerance in distributed systemsUS20100262557 *Apr 14, 2010Oct 14, 2010Ferreira Rodrigo CSystems, methods, and apparatus for guiding users in process-driven environmentsUS20120117423 *Nov 9, 2010May 10, 2012International Business Machines CorporationFault tolerance in distributed systems* Cited by examinerClassifications U.S. Classification709/224, 709/212, 709/204, 709/203, 709/225International ClassificationG06F15/13Cooperative ClassificationG06F9/542, G06F11/3612, G06F8/10, G06F8/35European ClassificationG06F11/36A4, G06F8/10, G06F9/54B, G06F8/35Legal EventsDateCodeEventDescriptionMar 26, 2014FPAYFee paymentYear of fee payment: 4Nov 1, 2007ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHRISTENSEN, ERIK B.;SEDUKHIN, IGOR;KULKARNI, AMOL SUDHAKAR;AND OTHERS;REEL/FRAME:020057/0258;SIGNING DATES FROM 20071025 TO 20071026Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHRISTENSEN, ERIK B.;SEDUKHIN, IGOR;KULKARNI, AMOL SUDHAKAR;AND OTHERS;SIGNING DATES FROM 20071025 TO 20071026;REEL/FRAME:020057/0258RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google