Devices, hardware components, operating systems, applications, and other computer-based elements surround us and affect our lives every day. While such elements may be utilized independently, it is most often desirable to assemble a variety of such elements and their built-in capabilities into an integrated system. An integrated system may include anything from, for example, a home or office network of computers, printers, audio equipment, and other more common digital systems and devices to a complex telecommunication switching system made up of several blade servers, routers, and other devices operating cooperatively.
For several reasons, the built-in capabilities of individual elements that are to compose an integrated system are typically incapable and insufficient to collectively form the integrated system and require external systems and supporting middleware in order to realize the values of the integrated system and to allow for the system's management. First, computer-based elements each have a diverse and rich set of built-in capabilities that generally do not have standard management capabilities. Second, each element typically employs its own unique set of interfaces and protocols for realizing its built-in capabilities as well as for exposing management operations. Third, each element generally employs its own data formats, schemas, and languages to configure, manage, and control the element. Finally, the middleware developed to integrate diverse elements introduces its own set of interfaces, protocols, and data, and the elements typically have no means to absorb or interoperate with this middleware.
Several attempts have been made to standardize management of diverse elements. For example, the Simple Network Management Protocol (SNMP) was developed to facilitate the exchange of management information between network devices, such as routers. However, many elements of an integrated system may not be network devices, and using SNMP only provides an individual view into each device, rather than an integrated approach to manage a large system. Hyper-Text Markup Language (HTML) and the Hyper-Text Transfer Protocol (HTTP) provide a generic way of describing the layout and transfer of information, and while many elements may provide an HTML-based interface to view information about the element, these protocols do not provide a unified way of communicating with multiple elements or of combining the information from several elements to gain an understanding of the overall status of a system.
Therefore, it would be desirable to have a system that would allow for a standard approach to integration of diverse elements in a way that provides portability, rapid implementation, maintainability, and multiple standard interfaces for management of the system.
A method and system for creating integrated systems from diverse computer-based elements is provided. The integration system provides a service-oriented methodology based on a notion of services as operational abstractions to required middleware. Services encapsulate an element's built-in capabilities, establish a communication context with other services and client applications, and translate data to and from the native interfaces and protocols of the elements. A service is based on a well-defined representation for the service's operations or functions, referred to as a service specification (XDS), which describes the format for sending request messages to the service, referred to as service requests (XSR). The XDS also describes the way in which service operations are mapped to the built-in capabilities (or primitives) of the various elements of the system. For example, imagine a typical integrated system for hosting a web site that contains several web servers, database servers, routers, and other diverse elements. One possible service in such a system is a health monitoring service that allows an administrator to view the overall health of the website and to drill-down into the health of the individual components. Such a service may include a main health monitoring service that communicates with separate web server, database, and router monitoring services, each of which can be described in a service specification.
The integration system is based on the existence of a distributed set of individually customized run-time environments, referred to as service agents, which support the exchange of service specifications and the processing of service requests sent from other services and from client applications. The run-time environments compile service specifications and translate the operations described in the service specifications to the built-in capabilities of the elements that comprise the integrated system. For example, if a router provides an SNMP interface for retrieving management information, the service specification may describe a router health monitoring service that maps a generic request for an element's health to the appropriate SNMP commands to extract the requested information from the router. Each of the components of the integration system is described in detail below.
The integration system may be employed in a variety of scenarios and frameworks. For example, it may be employed by computer programmers, system managers, and the like to perform various network management operations such as network resource discovery, systems provisioning, application configuration, and the management and monitoring of elements as required to implement the functionality of a network management system having multiple computer-based or other digital elements. The presented system may also be employed to generate embedded management applications for fixed and wireless telecommunication systems, data communication systems, network storage systems, blade server systems, etc. Overall, the system may be implemented in any suitable data processing environment, even the simplest of electronic systems capable of supporting service agents. The system can also be used in distributed computing environments as noted below, where services are performed by remote processing devices, which are linked through a communication network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, services may be located in both local and remote memory storage devices. The system may be employed in implementing integrated systems consisting of various hardware, operating systems, middleware, and applications. Additionally, the system may also be employed to enhance the given set of the core capabilities or add missing capabilities. In general, the system may be employed wherever it is desired to form an integrated system in a flexible manner or to extend and modify such systems, without requiring extensive computer programming, compiling, debugging, testing, and redeploying of the embedded core capabilities.
In some embodiments, the integration system may be employed to rapidly and easily integrate individual elements to provide for middleware services forming the integrated system. A system may be implemented to provide a user friendly interface providing ease of use for programmers, system operators, and managers while accounting for administrative rules, policies, and processes. The system provides generalized and extensible heterogeneity of system components, interoperability between components, and changes to components and functionality in a way that simplifies reprogramming, debugging, testing, and installation, thereby reducing time and costs required to implement and modify such integrated systems.
Various embodiments of the invention will now be described. The following description provides specific details for a thorough understanding and enabling description of these embodiments. One skilled in the art will understand, however, that the invention may be practiced without many of these details. Additionally, some well-known structures or functions may not be shown or described in detail, so as to avoid unnecessarily obscuring the relevant description of the various embodiments.
The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific embodiments of the invention. Certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.
Service Specification
In some embodiments, service specifications for the integration system are based on Extensible Markup Language (XML). XML is a generalized representation that can encode most anything, such as programs or data, as well as serve as a universal encoding schema for transporting those programs or data. XML is conceptually a very simple but general representation that is both man and machine readable. It is also the industry standard for Internet data representations and transports. Many applications and libraries currently utilize XML for communication, configuration, logging, and information representation. The integration system can use XML to facilitate the marshalling of native data into and out of various services and to communicate that data between services. Although the use of XML as a general representation of data or programs is preferred, the integration system may be implemented using other encoding schemas and syntax.
In some embodiments, the XDS file contains a combination of a hierarchical interface (XDI) and an implementation of that interface using primitives described below. The interface defines the schema for the related class of service requests that can be given to the service described by the specification for execution. The hierarchical nature of the interface allows the capabilities and features of the related service to be organized into a hierarchical set of service operations which enables an intuitive implementation of those service operations as well as a natural ordering and nesting that hide low-level implementation details about paired operations or policies such as open/close, do/undo, obtain/release pairings typical in flat APIs. For example, the execution of related service requests can be partitioned into a nested set of pre/post action blocks that separate the classic pairing of programmatic operations. The service interface also contains all syntax definitions such as service operation names, arguments, and nesting relationships to parse and validate instances of the interface as defined by the related service requests. Knowing the interface for a particular service enables an external entity to formulate service requests specific to that service specification, thus establishing a common context between the sender of a request and the service itself. Unlike many platform layered approaches that mandate a common interface, the integration system allows each service to create its own interface. Conceptually, a given service specification defines a new context-specific language used to support a class of associated service requests.
In some embodiments, the implementation section of a service specification is a hierarchy of service operations and each has an associated set of action blocks that are executed as needed. These action blocks are written using actions that act as procedure calls and that depend on the functionality offered by the run-time environment described below. By specifying particular actions, each specification defines the set of primitives it will use and how the service operations offered by the specification are implemented using the specified primitives.
In some embodiments, the integration system provides two types of service operations for describing a hierarchy of service operations, a composite service operation and a simple service operation. A composite service operation may define a pre-action block (a list of actions to be performed before any child service operations are performed), a post-action block (a list of actions to be performed after any child service operations are performed), and an exception handling action block (a list of actions to be performed if a child operation generates an exception). A simple service operation defines only a “do” action block (a list of actions at a single level that does not reference lower-level service operations). For example, if a database containing customer records is to be abstracted by a service for updating the records, one composite service operation could be defined that updates a customer's phone number. The composite operation might include a pre-action block for logging into the database, a post-action block for logging out of the database, and an exception handling block for generating an error reply to the requestor. The composite operation could have child operations that perform the steps of finding the customer record, retrieving the old value, setting the new value, and returning a reply with the old and new values.
A depth-first ordered traversal of the service specification hierarchy as driven by the service request visits each internal operation twice, once going down, and once coming back up, and each leaf operation once. Thus, the first time a composite operation is visited, an activation record is pushed on a run-time stack along with the service operation variables as parameterized by the corresponding service request attributes, and the pre-action block in that operation is executed if it is present. Next, the child operations are processed recursively. Afterward, the post-action block is executed, and the activation record for that operation on the run-time stack is popped. For simple service operations this is identical, except that only the single do action block is executed and no children are processed. During the traversal, any action block may throw an exception which, if left unhandled, propagates up the run-time stack. The role of the composite operation's exception handler block is to selectively intercept the exceptions and handle the exceptions.
In some embodiments, the integration system provides only the XDI portion of an XDS file to a service requester. The use of service interfaces, XDIs, plays an important role in service creation and discovery. First, an XDI may be used to define the service operations of a standardized service which may then be implemented in more than one way. This service abstraction mechanism allows a common set of service requests to be sent to different services to handle different protocol and interface translations and mediation. Since each of the different services has the same interface, XDI, the service requestor can choose the appropriate service without changing the actual service requests. Second, a client application only needs the XDI in order to generate service requests, and exposing the entire service specification to the client application may be undesirable. For example, the system administrator may not want to share the implementation details of the service. Therefore, an XDI can be generated from each XDS by the service agent and released to appropriate service requesters.
In some embodiments, the service specification contains a reference to the schema for replies from the service. For example, an XML-based XDI may contain an optional attribute, xsr-reply-xds, that is the URL of an XML Schema (XSD) which defines the schema of the XSR reply. A client having the service specification for a service can use this reference to discover and interpret the format of replies coming from the service.
In some embodiments, the integration system allows a hierarchy of services to be used to build an integrated system. A particular integrated system may contain low-level services which marshal data to and from the native protocols and interfaces of managed elements, as well as higher-level services that abstract and extend these low-level services. A master service can be used to provide high-level operations, and the master service may arrange and control many lower-level services that perform the operations. In the web site example above, a master health monitoring service is able to collect data from diverse lower-level services which perform monitoring specific to a web server, a database, or other elements of the web site.
In some embodiments, the integration system allows a service to expose additional interfaces outside the service specification. Given the service-oriented nature of the integrated systems and the request-based communication between the services, the integrated system does not impose a layered interface paradigm typical of conventional systems that exhibit a front-end/back-end convention. A service may create as part of its operational capability a side-effect capability that originates a connection as part of a client or terminates a connection as part of a server to facilitate the necessary protocol mediation and translation, and these services may be utilized as either a front-end or a back-end as necessary, into or out of the integrated system. In general, an integrated system may utilize several different services to collectively expose a variety of different front-ends as needed, such as a web-based (HTTP) front-end, a command-line interface (CLI) over Telnet or SSH, a Telecom Management Protocol interface (TL1), an SNMP front-end, or a Common Information Model Object Manager (CIMOM) front-end.
In some embodiments, the integration system provides an editor for authoring service specifications. An editor can be used for authoring the XDS and extensions provided by adapters. The editor may provide an XML Schema editor, a set of available adapters, and optionally a repository of other services. The authoring steps are as follows:
The run-time environment or engine of the integration system acts as a service request processor which receives service requests, processes the requests, and, if specified by the service request, generates a reply. Each service request received by the run-time environment references a service specification that understands how the service request is to be processed. The run-time environment retrieves the compiled specified service specification based on the reference and uses it to both parse and execute the service request.
In some embodiments, the run-time environment has minimal functionality in and of itself, and is extensible by providing adapters. Adapters define the actions, or primitives, available in the run-time environment. For example, adapters may provide actions such as programmatic flow-control, exception handling, system commands, and input/output. Conceptually, these actions are environment extensions which are made available for use in service specifications to implement services. Any service operation may reference an adapter and thus extend the set of actions available to the service specification. These actions are available to all descendent service operations of the service operation where they are defined. Service specifications and their use of adapters thus dynamically reconfigure the run-time environment to define how the individual elements interoperate within the integrated system. Most programming languages are based on a well-defined syntax with a built-in set of language primitives, and programs are written against those primitives and compiled. However, the integration system is not limited to a set of a-priori defined actions, but rather provides a generalized, extensible run-time environment that allows for new primitives to be implemented through adapters. The adapters then dynamically define the language available for implementing service operations in a service specification, and enable the compilation and execution of the service specifications.
As discussed above, adapters may contain any related set of actions to support a given functionality. Typically, adapters fall into one of the following five categories, though many other categories are possible:
1. Protocol adapters, such as TCP/UDP network sockets, SNMP, or Telnet
Exemplary adapters may include an SNMP stack with Management Information Base (MIB) support, a CLI server, a JDBC client, a Service Availability Forums Hardware Platform Interface (SAF/HPI), a TL1 interface, an operating system shell interface, a Common Object Request Broker Architecture Internet Inter-Orb Protocol interface (CORBA IIOP), and/or any defined application APIs or protocols, either standard or proprietary. Here is a short list of common adapters that may form a base set of useful adapters; of course, it should be understood that other and/or different adapters may be employed, depending on the particular functions to be performed:
In some embodiments, adapters are implemented in the Java programming language. Adapters are written against the run-time environment's internal APIs and can be developed using any target language. Using the Java language, adapters can be provided as JAR files (Java Archives). An adapter file is partitioned into five sections consisting of:
In some embodiments, adapter actions are written so that they support their own execution, parsing from the service specification (XDS) file, and printing out to a new service specification file. The total capability of the run-time environment is provided by this cooperative support from the adapter actions. For example, a Simple API for XML (SAX) based service specification compiler combines the built-in XDS parser with the incremental parsing support in each action. When a service request is received that references a particular service specification, the built-in XDS parser is used to parse common elements of the service specification, and the adapter actions are used to parse language extensions provided by the adapters that are used in the service specification. Since the adapters are dynamically loaded during the specification's compile phase, the compiler itself is extended by the self-parsing abilities of each action. The built-in XDS parser hands control to a given adapter to parse and compile its set of actions and any nested actions for structured actions from the input stream and then the adapter returns control to the XDS parser when parsing of the adapter is complete. This cooperative parsing mechanism is also used to execute the action blocks. The service request processor incrementally hands control to the right adapters which return control to the run-time environment when complete, only to be repeated until all desired action blocks have been executed.
Consider an example adapter for providing flow-control actions used by a service specification. The XDS file contains a reference to the adapter, for example, xmlns:fc=“http://localhost:6964/adapters/flowControl.jar.” The adapter provides a set of actions including an if-statement, a while-statement, an assignment-statement and a for-loop defined as follows:
Service specifications can then use each of these flow control actions to implement service operations.
An adapter may be referenced (i.e., declared) in any service operation of a service specification as a name-space declaration attribute, for example,
In this XML designation, “an” is a locally assigned name for the adapter and the adapter location is referred to by the attribute value as a URL (e.g., of a JAR file). Example references are:
With such definitions, any action block in this or any descendent service operation can use the actions provided by the referenced adapters. The use of an adapter's action may appear in the action blocks of a service operation as:
In some embodiments, the run-time environment supports static scope rules for executing service requests in relation to arguments, variables, and procedure declarations. These are utilized by the argument declarations of the service operations and the declaration and use of variables in terms of the structured actions in order to save state information between actions.
In some embodiments, the run-time environment creates zero or more objects called channels, which the actions of an adapter use to share and exchange state information in a given XSR session. A channel is any adapter-specific object that maintains an appropriate state for the proper use of adapter actions. Action blocks may create one or more channels needed and pass them around through the session in run-time (automatic) variables. These channels are properly shut down and cleaned up when the session that created them completes. Channels may persist between sessions by being named and stored in a global channel repository persisted for the duration of an instance of the run-time environment. Other XSR sessions originating from service specifications that know about those channels may share their use, thus facilitating inter-session (i.e., inter-service request) channel sharing.
In some embodiments, the run-time environment of the integration system is multi-threaded and is able to process multiple service requests simultaneously.
In some embodiments, the run-time environment dynamically retrieves service specifications and adapters when a service request is received. When a service request arrives, the request contains a reference to the service specification on which the service request is based. The run-time environment uses this reference to dynamically retrieve the service specification, which the run-time environment then compiles. If the service specification refers to an adapter that is not available on the service agent on which the run-time environment is executing, the run-time environment can use the reference to the adapter within the service specification to dynamically retrieve the missing adapter. Once the service specification is compiled and any needed adapters have been retrieved, the run-time environment can perform the requested service operation.
In some embodiments, the run-time environment caches service specifications for use by future service requests. After processing a service request, the run-time environment does not need the service specification that the request is based on unless another service request arrives that references the same service specification. If a particular service agent repeatedly receives the same type of service requests, it is more efficient for the run-time environment to cache the compiled service specification rather than retrieve and compile the specification on each request. However, for service agents that receive many types of requests, space on the service agent may be a more important consideration, and service specifications may not be cached. Therefore, the integration system allows the caching behavior of a service agent to be configured to best suit the purpose of the service agent.
In some embodiments, the integration system enables service specifications to run on any operating system or hardware platform. The service specification is only tied to a particular platform through the choice of adapters that the service specification refers to. The run-time environment is designed to provide an abstraction layer over the underlying operating system and hardware, and may be implemented on any operating system and any hardware platform. One way the integration system may allow service specifications to run on any platform is to base the run-time and adapters on a cross-platform language, such as Java. Another way is for the run-time environment to specify the platform on which it is running when retrieving adapters referred to by the service specifications. In this way, the adapter author can provide implementations of the adapter on each platform, and provide the implementation for the particular platform requested. This allows the service specification to run without knowledge of the platform on which it is running.
In some embodiments, the integration system enables elements of the integrated system to be remotely controlled. The integration system enables client applications to use a set of logically organized services without necessarily needing to be aware of how those services are implemented or the elements that make up the integrated system. In this service-oriented methodology, integrated systems are built out of a given set of services each abstracting a required core capability or capabilities of a given element with complete freedom of whether these services are deployed as embedded services on the elements themselves or deployed remotely on cycle-servers that mediate to specific protocols remotely. Built-in capabilities on network accessible elements can be accessed by remote services through the elements' built-in protocols. Therefore, the integration system can choose how and where services are deployed. As desired by the administrator, the run-time environment may be installed either on the network element as an embedded service agent or on a proxy server to serve the role of a remote service agent.
In some embodiments, the integration system provides an HTTP interface to the run-time environment. This interface provides network access to the run-time environment from various HTTP-based applications such as a web browser or an XML-based application using an HTTP client. The HTTP service can be implemented, for example, with the use of an HTTP server adapter. The HTTP server includes a POST request handling component that extracts an encapsulated service request from an HTTP POST message and passes the request to the run-time environment. The run-time environment then executes the request. If the requested service operation generates a reply, the reply may undergo a server-side DHTML-support-using-XSL translation which accepts the resulting XML reply and generates HTML responses for the client. The HTTP service may provide other functions, such as user access authentication and secure connections using the Secure Socket Layer (SSL) protocol. The HTTP service also may form the interface for development tools to the run-time environment using protocols such as the Simple Object Access Protocol (SOAP).
In some embodiments, the integration system provides a Telnet interface to the run-time environment. A Telnet command-line interpreter (CLI) service is used to allow interactive and iterative access to service specifications from Telnet clients. The CLI allows operations driven by the service operations described in associated service specifications.
In some embodiments, the integration system provides an SNMP interface to the run-time environment. An SNMP agent service provides for control and monitoring of functions and information encoded in associated MIBs (Management Information Base) as configured and started by an appropriate SNMP service specification. An SNMP-based service specification may be designed to configure various SNMP versions (v1, v2c, or v3) for the SNMP agent and associate specialized MIBs that mediate the underlying system and component information. For example, an SNMP agent adapter may be provided with a structured action designed to register an SNMP request call-back which is invoked by the agent whenever a PDU GET request is received by the agent. The service can utilize this call-back to mediate data between the SNMP manager sending the request and the service agent on which the SNMP service is running.
Service Requests
A service request, referred to as an XSR, as received by the run-time environment, is a self-contained hierarchical message consisting of fully parameterized calls to the service operations as defined by the referenced service specification. Each service request is written with the aid of the service interface and contains a reference to the related service specification. The service interface, or XDI, is the schema that defines the syntax for the class of service requests that can be based on the referenced service specification. The reference to the service specification in the XSR can be a URL, electronic address, or other resource locator for accessing a resource on a network, or the service specification could be embedded in the service request. To execute the service request, the run-time environment provides a run-time stack and execution mechanism that holds the service request arguments, and consists of a stack of activation records for each visited entry operation in the specification. These records track the descent into the service specification as driven by the associated service request.
Service Agent
A computer-based device or element on which a run-time environment is running is called a service agent. The service agent is based on the service paradigm described here and interacts with the device's core capabilities to expose a self-describing, reconfigurable, and reactive set of services to client applications and other service agents. The service agent is typically but not necessarily configured to offer an HTTP interface over which service requests are received, service specifications and adapters are downloaded, and service interaction data is exchanged. A service agent may also be configured to expose a command-line interface over Telnet or other protocol-based interfaces as needed.
In some embodiments, the integration system provides for the discovery of service agents in an integrated system by clients that are not otherwise aware of the services available. If an address for reaching a service agent is known, an external entity can inquire and obtain the supporting set of service interfaces or just the default service interface from a given service agent by making a service request to the service to list the available services. This enables the automatic discovery of available services. Another way of discovering services is through repositories of service specifications accessible by individual service agents or manually by humans intending to understand a particular element's services.
In some embodiments, a run-time environment by itself does not provide any front-end services but needs to be bootstrapped to serve the role of a service agent. Typically this is accomplished by starting the environment with an initial service request created against an HTTP service that starts an HTTP front-end daemon. This HTTP service then accepts service requests over HTTP, executes each as described, and returns responses. The configuration of a service agent may use other front-ends besides HTTP such as a command-line interface over Telnet configured to accept service requests using CLI commands or an SNMP agent. For example, a user could send commands line-by-line over Telnet to form a service request. Many other protocols can be used alone or in combination to allow the run-time environment to be configured as a service agent.
Figures
The computing device on which the system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may contain instructions that implement the system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communication link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cell phone network, and so on.
Embodiments of the system may be implemented in various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on. The computer systems may be cell phones, personal digital assistants, smart phones, personal computers, programmable consumer electronics, digital cameras, and so on.
The system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
In decision block 550, which is performed when there are no more actions at the current depth, if the current depth is zero, then the component completes, else the component continues at block 555. In block 555, the component decrements the current execution depth. In block 560, the component pops an action from the action stack. In block 565, the component executes any post-action block defined in the service specification for the retrieved action. The component then loops to block 515 to retrieve the next action at the current execution depth.
One example of an integrated system that
XDL is designed to be as simple and general as possible for the purpose of allowing a service to be described by a service specification as a combination of the service interface and its implementation. XDL provides the syntax for the service interface portion of a service specification, but not its implementation. The syntax for the implementation, lines 33 through 38, that is, the associated actions, is provided by adapters. The parsing support built into adapter actions extends the environment's XDL parser with the parsing support in the adapters in order to allow the adapters to serve as environment extensions. To the run-time environment, an adapter is a set of one or more actions (commands) used individually as environment extensions in terms of each action providing three extension capabilities: to extend the XDL parser by parsing and compiling its actions from the external XDS representation, to print itself out to the external representation's XDS, and to execute the compiled action for a given service request.
A service interface, or XDI, is defined as an XDS without an implementation, that is, with no adapter references and no actions. Specifically, an XDI is defined in the BNF grammar for an XDL without the lines 08, 13, 15, 16, 20, 23, and 33-38. From a complete XDS, an XDI is easily generated by not including adapter and implementation details. Likewise, given an XDI, a full XDS is created by associating the required set of adapters, lines 08 and 20, and implementing the do-before (line 13), the do-after (line 16), and the exception handler (line 15) sections of composite service operations, and the do sections (line 23) of simple service operations.
Conclusion
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof mean any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number, respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
The above detailed description of embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific embodiments of, and examples for, the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative combinations or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.
The teachings of the invention provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.
Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the invention can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further embodiments of the invention.
These and other changes can be made to the invention in light of the above Detailed Description. While the above description describes certain embodiments of the invention, and describes the best mode contemplated, no matter how detailed the above appears in text, the invention can be practiced in many ways. Details of the integration system may vary considerably in its implementation details, while still being encompassed by the invention disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the invention under the claims.
While certain aspects of the invention are presented below in certain claim forms, the inventors contemplate the various aspects of the invention in any number of claim forms. For example, while only one aspect of the invention is recited as embodied in a computer-readable medium, other aspects may likewise be embodied in a computer-readable medium. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the invention.
This application claims the benefit of U.S. Provisional Patent Application No. 60/603,025 filed Aug. 20, 2004 (Attorney Docket No. 56804-8001.US00), U.S. Provisional Patent Application No. 60/628,978 filed Nov. 17, 2004 (Attorney Docket No. 56804-8001.US01), and U.S. Nonprovisional patent application Ser. No. 11/207,577 filed Aug. 19, 2005 (Attorney Docket No. 56804-8001.US02).
Number | Date | Country | |
---|---|---|---|
60603025 | Aug 2004 | US | |
60628978 | Nov 2004 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11207577 | Aug 2005 | US |
Child | 11282307 | Nov 2005 | US |