U.S. patent application number 13/413590 was filed with the patent office on 2012-06-28 for inband data gathering with dynamic intermediary route selections.
This patent application is currently assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION. Invention is credited to Christian Lee Hunt, Roger Michael Meli, Denilson Nastacio, Balan Subramanian.
Application Number | 20120166615 13/413590 |
Document ID | / |
Family ID | 44370416 |
Filed Date | 2012-06-28 |
United States Patent
Application |
20120166615 |
Kind Code |
A1 |
Subramanian; Balan ; et
al. |
June 28, 2012 |
Inband Data Gathering with Dynamic Intermediary Route
Selections
Abstract
Included are a method to manage subscriptions over a network,
where the network may comprise intermediaries, clients, and service
providers, and the method may include, receiving a subscription at
a network intermediary, the subscription having management
application data and having application level header information.
The method may further include reviewing the application level
header information of the received subscription and redirecting the
subscription over the network using the reviewed application level
header information.
Inventors: |
Subramanian; Balan; (Cary,
NC) ; Hunt; Christian Lee; (Cary, NC) ;
Nastacio; Denilson; (Apex, NC) ; Meli; Roger
Michael; (Raleigh, NC) |
Assignee: |
INTERNATIONAL BUSINESS MACHINES
CORPORATION
Armonk
NY
|
Family ID: |
44370416 |
Appl. No.: |
13/413590 |
Filed: |
March 6, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12705954 |
Feb 15, 2010 |
|
|
|
13413590 |
|
|
|
|
Current U.S.
Class: |
709/223 |
Current CPC
Class: |
H04L 12/6418
20130101 |
Class at
Publication: |
709/223 |
International
Class: |
G06F 15/16 20060101
G06F015/16 |
Claims
1. A method to manage subscriptions over a network, the network
comprising intermediaries, clients, and service providers, the
method comprising: at a network intermediary, receiving a
subscription, the subscription having management application data,
the subscription having application level header information; at a
network intermediary, reviewing the application level header
information of the received subscription; and at the network
intermediary, redirecting the subscription over the network using
the reviewed application level header information.
2. The method of claim 1 where the subscription is redirected by
the network intermediary to a peer network intermediary.
3. The method of claim 1 where the network intermediary is a simple
object access protocol (SOAP) network intermediary and where the
subscription is received over a service oriented architecture
network.
4. The method of claim 1 further comprising: after redirecting the
subscription, registering the subscription at a registry accessible
over a network.
5. The method of claim 3 where reviewing the application level
header information includes, at the network intermediary, querying
a SOAP header.
6. The method of claim 1 further comprising: at a network
intermediary, consolidating one or more subscription rules after
comparing rules from previously received subscriptions.
7. The method of claim 1 further comprising: at a network
intermediary, waiting for a timeout period to pass and then
querying one or more peer network intermediaries to identify a peer
intermediary having access to data flows that contain subscription
management data.
8. The method of claim 1 wherein the received subscription was
generated from a client management application and the subscription
requests periodic data from a service provider accessible over a
network.
9. The method of claim 2 where the subscription is redirected to a
peer intermediary closer to the service provider than the previous
network intermediary managing the subscription.
10. The method of claim 1 further comprising reviewing previously
received subscription rules at a network intermediary and
consolidating duplicate rules for a single subscription.
11. A method of managing subscriptions over a service oriented
architecture network, the method comprising: at a service provider,
generating subscription management data and sending the generated
management data over the service oriented architecture network;
sending the generated management data to a simple object
application protocol (SOAP) intermediary; at the SOAP intermediary,
evaluating the subscription management data; and querying one or
more peer SOAP intermediaries to identify a peer intermediary
having access to data flows that contain the subscription
management data.
12. The method of claim 11 further comprising: waiting for a
timeout period before querying one or more peer SOAP
intermediaries.
13. The method of claim 12 further comprising: sending a request to
a peer intermediary to collect data for fulfilling a
subscription.
14. The method of claim 13 further comprising: registering the
subscription at a peer SOAP intermediary.
15. The method of claim 11 further comprising: at the intermediary,
identifying and comparing service level indicators for the
subscription with a service level agreement for the service level
indicators.
16. The method of claim 11 further comprising: transferring the
subscription to a second network intermediary, the second network
intermediary using SOAP and serving to collect data from data flows
for the subscription.
17. The method of claim 11 further comprising: updating
subscription rules by comparing previously received subscription
rules with subsequently received subscription rules.
18. The method of claim 17 wherein the updating includes
consolidating rules into a single subscription.
19. The method of claim 11 where a subscription is moved from a
first network intermediary to a second network intermediary, the
second network intermediary previously sending subscription data to
the first network intermediary.
20. The method of claim 11 further comprising: generating the
subscription for subscription management data at a client
management application.
Description
BACKGROUND
[0001] The field of invention involves intermediaries serving
between client applications and service providers over a network.
More specifically, network intermediaries providing dynamic
proxying between client applications and service providers are
described and provided herein.
[0002] Modern networks are regularly organized in a client
application and service provider configuration. Under this
configuration, a client application may obtain information or
services over the network from service providers when carrying out
client functionality. The service providers may be providing data,
messages, data manipulation, or the like, to the clients in these
examples. The service providers may be providing services to a
single client or multiple clients across a network. The clients may
be requesting the services from the providers because the providers
are better situated or configured than the client to obtain the
data or provide the services. These services may be requested on
subscription basis.
[0003] Modern networks have been configured using a Service
Oriented Architecture (SOA) in order to package services for use by
numerous clients or domains. SOA architecture can be configured to
use a mesh of unassociated and loosely coupled software services to
provide various functions throughout the network. These software
services have no calls to each other embedded in their code.
Rather, instead of embedding service calls to each other in their
source code, agreed upon protocols are used to pass messages and
requests between them.
[0004] SOA can serve to separate functions, offered over a network,
into distinct units and services. These distinct units and services
may be offered to allow clients to combine and reuse the discrete
units and services in various applications over the network.
Software modules in an SOA may communicate over the network to each
other and to client applications by passing data over the network
from one software module to another software module and, by
themselves, coordinating an activity between two or more
modules.
[0005] Networks employing an SOA have a need to enable applications
running on different platforms or operating systems to communicate
with each other at the application level. This need has been
addressed by the Simple Object Access Protocol (SOAP), an
application level solution. SOAP is a language and
platform-independent XML syntax for exchanging messages over a
network. SOAP defines a set of rules for structuring messages that
can be used for simple one-way messaging. SOAP also serves to
codify the use of XML and HTTP across networks and computing
platforms. As an example, if an application is running on a
LINUX.RTM. based system and wishes to communicate with the same
application running on a Windows 7.RTM. based system this
communication may be possible through the use of SOAP. SOAP
facilitates this communication across operating systems at the
application level (e.g., a word processor or spreadsheet
application) by using HTTP and XML for the exchange of
information.
[0006] SOAP requests, using XML, can contain three parts: a)
process framework to describe what is in a SOAP message and how to
process the message; b) application encoding rules for expressing
data types of a message; and c) a convention for remote procedure
calls, responses, and error handling.
BRIEF SUMMARY
[0007] As described herein, embodiments of the invention may use
application level intermediaries, such as intermediaries employing
SOAP, in a network, such as an SOA network, to dynamically manage
services being provided to client applications over the network.
This dynamic management may include intermediary intervention that
may serve to change the source of provided services, to retrieve
messages downstream of the service provider, and to position
service providers more closely to client applications. The
intermediaries may handle messages from service providers in order
to optimize the routes in which the messages are sent between
services and clients in an SOA. These intermediaries may also serve
to shorten the length the messages need to travel in the SOA, to
search for data missing for a particular application, to broker
between services, to query peer intermediaries for missing data,
and for other uses as well. The messages serviced by the
intermediaries may contain instructions or calls for services, data
for use, client subscriptions, and other information or
instructions.
[0008] Embodiments include network devices, systems, methods, and
computer readable medium. The network devices may include a
controller programmed to review application level information at a
subscription and, after reviewing this information, redirecting a
subscription over a network using the application level information
in the subscription. In certain embodiments the subscription may be
redirected to peer-network intermediaries, some of which are closer
to the service provider and some of which serve to proxy a
subscription from a client management application. In certain
embodiments, the controller may be programmed to execute
instructions that consolidate rules of the subscriptions,
consolidate rules across subscriptions, and specify new data
formats for a subscription.
[0009] Embodiments may also include a method wherein operating
instructions at a microcontroller cause one or more
microcontrollers to generate subscription management data, send the
subscription management data to a SOAP intermediary over an SOA
network, evaluate the subscription management at the SOAP
intermediary, compare service level indicators at the SOAP
intermediary and send the subscription management data to a client
management application.
[0010] Embodiments may also include computer readable storage
medium having stored thereon instructions, which, when executed by
a microprocessor, cause the microprocessor to review application
level information at a subscription and, after reviewing this
information, redirecting a subscription over a network using the
application level information in the subscription. In certain
embodiments instructions may cause the microprocessor to redirect
the subscription to peer network intermediaries, some of which are
closer to the service provider and some of which serve to proxy a
subscription from a client management application. In certain
embodiments, the controller may be programmed by the instructions
[0011] to execute instructions that consolidate rules of the
subscriptions, consolidate rules across subscriptions, and specify
new data formats for a subscription.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0012] FIG. 1 shows a network with intermediaries in accord with
embodiments of the invention.
[0013] FIG. 2 is a flowchart of a method that may be partially or
fully employed in accord with embodiments of the invention.
[0014] FIG. 3 shows header information from a subscription that may
be employed in accord with embodiments of the invention.
[0015] FIG. 4 is a flowchart of a method that may be partially or
fully employed in accord with embodiments of the invention.
DETAILED DESCRIPTION
[0016] Various embodiments of the in-band data gathering with
dynamic intermediary route selection are provided herein. The
invention may be reflected in these embodiments, portions of these
embodiments, combinations of these embodiments, and other
embodiments as well.
[0017] In one embodiment the efficiency of data transformation,
like event format conversion, aggregation etc., as may be used by
multiple consumers is provided. In this embodiment, at least two
approaches may be provided.
[0018] In one approach, SOAP intermediaries, which are
intermediaries that accept and transmit SOAP protocol messages or
information, proxy on behalf of client management applications. In
this approach, the network intermediary may be managing the
proxying while the client management application is not aware, nor
is it made aware, of any change in subscription. In so doing, the
burden associated with proxying the subscription may be
reduced.
[0019] SOAP intermediaries can be used to broker between services
and management systems. This can involve client-based management
systems registering for particular management information with
intermediaries which become known through a registry or by a
broadcast trial and error mechanism. In one approach, subscriptions
from a client management application may be transparently
redirected by one or more intermediaries to other
intermediaries.
[0020] Still further, SOAP intermediaries in an SOA network may be
used to broker the management data subscriptions between client
management applications and service providers that may be producers
of management data. SOAP intermediaries may review and consider
application level headers or information to proxy or broker rather
than transport level headers or information. By considering
application level header information, a network intermediary may
have the ability to continually collect data as produced even in
the light of different patterns in routing of SOAP messages in an
SOA based solution. This may be beneficial in at least an
embodiment where there is at least some isolation of the client
management application from rapid changes in an SOA network.
[0021] Embodiments may include proxying subscriptions from
management applications. On timeout of a SOAP intermediary
realizing that it hasn't seen the data required to satisfy a
particular subscription, which can be desired by a Service Level
Agreement ("SLA") between the intermediary and the client
management application, the SOAP intermediary may reroute a
subscription request to multiple peers. Peers that have seen the
data flows recently may accept the request and take up the
responsibility of collecting the data.
[0022] In certain embodiments, the SOAP intermediary may register a
subscription on behalf of a management application. In so doing,
the client management application may only rely on the network of
the SOAP intermediaries and its subscription need not be changed.
However in this example, to manage additional message volume, and
minimize it, an on-behalf subscription may only be made to one
level of redirection. For two-level or more redirects, the
intermediaries may switch to a second mode of operation but still
retain the management application's subscription intact.
[0023] In certain embodiments, the subscription may be transferred
over to a new intermediary that can provide the required
information for the subscription. The management application may
also be notified so that the details of the subscription are timely
in the event that a client wishes to terminate or manage the
subscription itself.
[0024] In certain embodiments, a hybrid mechanism may be used.
Here, SOAP intermediaries that are proxying frequently for another
SOAP intermediary may constantly evaluate the resources being spent
on proxying and the frequency of the proxying. This expenditure and
frequency maybe evaluated and compared to regular brokering
responsibilities. If a threshold is hit or a Service Level
Agreement may not be satisfied, the intermediary may transfer the
subscription over another intermediary including a SOAP
intermediary.
[0025] In certain embodiments, network intermediaries may execute a
proactive progression of subscriptions that serve to consolidate
subscriptions or self-optimize the intermediaries or both. In
certain embodiments, peer intermediaries may proactively
communicate with senders of messages in which interest has been
expressed and progressively move subscriptions closer towards
service. SOAP intermediaries may be aware of the origin of
subscription data being sent to them. Over time, when a SOAP
intermediary recognizes that information required by subscribed
management applications is provided because of SOAP messages coming
from a preceding SOAP intermediary, it may proactively transfer the
subscription to that upstream SOAP intermediary. The net effect is
that, with the passage of time, the subscriptions may move closer
to the service provider itself. This movement of subscriptions may
serve to reduce the number of times the same headers need to be
parsed to extract the same data. In so doing, the repetitious or
unneeded management data in headers can be removed sooner.
[0026] In embodiments, the data transformation and management of
the transformations can be optimized or streamlined as well. These
efficiencies may be realized by movement of the processing rules
associated with a subscription.
[0027] In embodiments, rules may be provided by subscribers and may
be moved closer to a source of data. Here, client management
applications may provide rules for data conversions--for example
GLA adapter rules if the management applications expect the data to
be made available to them in particular formats. Rule correlation
may also occur when SOAP intermediaries are expected to carry out
low-level event correlation and aggregation.
[0028] In embodiments, when subscriptions are transferred, the
assignee SOAP intermediary may automatically receive the new rules.
Here, the intermediary may consolidate the rules together and when
similarities are found, remove the redundancy such that a single
data conversion can be used to satisfy the requirements of multiple
registrants. They will be consolidated at points where multiple
subscriptions requests from different consumers that are similar in
nature have arrived by the progression explained above.
[0029] In certain embodiments, as an enhancement, the movement of
subscriptions may be based on pattern analysis of the flow patterns
seen in the network intermediaries. This movement of subscriptions
may be managed to occur proactively as opposed to being a reaction
to missed management data as discussed elsewhere. Pattern analysis
may happen at a central point in an SOA network or at each
intermediary. An intermediary may then predict with some reasonable
level of certainty as to which SOAP intermediary will next see the
expected flow and proactively transfer the subscription over or
start proxying for that SOAP intermediary.
[0030] FIG. 1 shows a network 100 of interconnected computers,
storage facilities, and servers. The network 100 may include a
sub-network 160 of interrelated network intermediaries 110, network
storage devices 150, service providers 120, registries 140, and
client management applications 130. Both the network 100 and the
subnetwork 160 may be cloud networks, wide-area network, local
networks, and other styles of networks as well. In embodiments the
network 100 may be an SOA network. The client management
applications 130 may be run on stand-alone client computers as well
as on other platforms. These other platforms may include server
applications. The client management applications may generate
subscriptions for data needed for the management applications
running on the clients. These subscription requests may be routed
through the network 100 and sub-network 160 until one or more
service providers 120 are reached. The service provider 120 may
then register the subscription locally and/or at the registry 140.
Data collected, generated, or calculated by the service provider
may be sent over the networks to the client management application
130 as the data become available. This subscription fulfillment
data may be routed in the subnetwork 160 by the network
intermediaries 110 reviewing and considering application level
headers in the data rather than transport level header information.
In so doing, the subscription fulfillment data may be more quickly
and efficiently routed throughout the subnetwork 160.
[0031] As described throughout, the network intermediaries 110 may
take on proxying responsibilities when fulfilling subscription
requests such the service providers 120 do not need to identify or
track when and which client management application subscription
fulfillment data is sent and when it needs to be sent. As also
described throughout, the network intermediaries may manage the
subscription requests from the client management applications. This
management of the subscriptions may be stored locally as well as at
network storage locations or other locations accessible by the
network. When a network intermediary uses SOAP to communicate or
exchange data throughout the Network it may be referred to as a
SOAP intermediary. Network interface applications other than SOAP
may also be used by the network applications.
[0032] FIG. 2 shows a method that may be stored as instructions on
computer readable storage medium as well as carried out one or more
of the devices in the network of FIG. 1. When carried out in-part
or in-full by the network devices, the network device may store the
instructions in nonvolatile memory. The method of FIG. 2 includes,
at 210, sending a subscription that has management application data
to a network intermediary. This subscription may be generated by
the client management application or routed from another network
device, such as an intermediary, storage device, registry, or
service provider. At step 220, the subscription may be reviewed at
the network intermediary by considering application level
information in the subscription. This application level information
may be used to route or manage the subscription information. In
certain embodiments, SOAP headers and interfaces may be used for
carrying and considering the application level information. At 230,
after reviewing the application level information, the subscription
or the subscription data may be redirected over the network using
the application level data. The subscription may be redirected to
another peer network intermediary as well as to a registry or data
storage device.
[0033] FIG. 3 shows a packet 300 with transport level 330,
application level 320, and data information 310. This packet may be
routed throughout a network, including the network 100 of FIG. 1.
The packet 300 may reflect a subscription or subscription data in
embodiments of the invention. As the packet and its accompanying
data 310 is routed through the network, rather than consider
transport level header and footer information 330, the network
intermediaries may consider application level information at 321,
322, and 323. This application level information may be used to
route the packet around and through the network and to satisfy the
subscription data request associated with the data 310.
[0034] In a SOAP intermediary, 321 may contain process framework to
describe what is in the SOAP message and how to process the
message. 322 may contain application encoding rules for expressing
data types of the message, and 323 may contain conventions for
remote procedure calls, responses, and error handling. Subscription
rules and routing may also be located or encoded in one or more of
321-323. In so doing, network intermediaries may not only handle
and manage the data 310 through the SOAP header information, the
routing of and management of the subscription may be considered and
addressed as well.
[0035] FIG. 4 shows a flowchart of a method or methods that may be
employed in accord with embodiments. The method and flow chart of
FIG. 4 is described with respect to an SOA network using SOAP
intermediaries. Other network configurations and application level
communication protocols may also be considered. At 410, a
subscription for management data may be generated by a client
management application. This subscription may be transportable and
accessible over an SOA network. This subscription may then be sent,
as reflected at 420, over a network to a SOAP intermediary on the
network. The SOAP intermediary may then evaluate the subscription
and manage the subscription as well. This management may include
gathering data sent by service providers that fulfills the
subscription request in order to send the data back to the client
management application. This gathering of data may continue for a
certain time. If no data has been gathered or inadequate data has
been gathered a time out may occur as shown at 440. If a timeout
occurs, then a query of one or more SOAP intermediaries may occur.
As shown at 441, this query may include having peer intermediaries
with access to applicable subscription data flows identified. Once
identified, a request may be sent so that the peer intermediary
gathers the needed data. At 443, the intermediary gathering the
subscription request may be registered in the network at a
registry.
[0036] As the data is gathered, either by a peer intermediary or
the original intermediary, service level indicators may be
considered to determine if the collected data satisfies the
subscription request. If the data does not satisfy the SLIs, the
subscription may be transferred to another intermediary, as shown
at 461. This new intermediary may then manage the data collection
for the subscription.
[0037] At 470, rules for the subscription may also be considered by
the intermediary as well. If the rules are not considered, the
management data may be sent to the client management application as
shown at 480. If the rule are considered, the rules may
consolidated with other rules may be consolidated across multiple
subscriptions, and may be used to specify new data formats for
subscriptions.
[0038] As will be appreciated by one skilled in the art, the
present invention may be embodied as a system, method or computer
program product. Accordingly, the present invention may take the
form of an entirely hardware embodiment, an entirely software
embodiment (including firmware, resident software, micro-code,
etc.) or an embodiment combining software and hardware aspects that
may all generally be referred to herein as a "circuit," "module" or
"system." Furthermore, the present invention may take the form of a
computer program product embodied in any tangible medium of
expression having computer-usable program code embodied in the
medium.
[0039] Any combination of one or more computer usable or computer
readable medium(s) may be utilized. The computer-usable or
computer-readable medium may be, for example but not limited to, an
electronic, magnetic, optical, electromagnetic, infrared, or
semiconductor system, apparatus, device, or propagation medium.
More specific examples (a non-exhaustive list) of the
computer-readable medium would include the following: an electrical
connection having one or more wires, a portable computer diskette,
a hard disk, a random access memory (RAM), a read-only memory
(ROM), an erasable programmable read-only memory (EPROM or Flash
memory), an optical fiber, a portable compact disc read-only memory
(CD-ROM), an optical storage device, a transmission media such as
those supporting the Internet or an intranet, or a magnetic storage
device. Note that the computer-usable or computer-readable medium
could even be paper or another suitable medium upon which the
program is printed, as the program can be electronically captured,
via, for instance, optical scanning of the paper or other medium,
then compiled, interpreted, or otherwise processed in a suitable
manner, if necessary, and then stored in a computer memory. In the
context of this document, a computer-usable or computer-readable
medium may be any medium that can contain, store, communicate,
propagate, or transport the program for use by or in connection
with the instruction execution system, apparatus, or device. The
computer-usable medium may include a propagated data signal with
the computer-usable program code embodied therewith, either in
baseband or as part of a carrier wave. The computer usable program
code may be transmitted using any appropriate medium, including but
not limited to wireless, wireline, optical fiber cable, RF,
etc.
[0040] Computer program code for carrying out operations of the
present invention may be written in any combination of one or more
programming languages, including an object oriented programming
language such as Java, Smalltalk, C++ or the like and conventional
procedural programming languages, such as the "C" programming
language or similar programming languages. The program code may
execute entirely on the user's computer, partly on the user's
computer, as a stand-alone software package, partly on the user's
computer and partly on a remote computer or entirely on the remote
computer or server. In the latter scenario, the remote computer may
be connected to the user's computer through any type of network,
including a local area network (LAN) or a wide area network (WAN),
or the connection may be made to an external computer (for example,
through the Internet using an Internet Service Provider).
[0041] The present invention is described with reference to
flowchart illustrations and/or block diagrams of methods, apparatus
(systems) and computer program products according to embodiments of
the invention. It will be understood that each block of the
flowchart illustrations and/or block diagrams, and combinations of
blocks in the flowchart illustrations and/or block diagrams, can be
implemented by computer program instructions. These computer
program instructions may be provided to a processor of a general
purpose computer, special purpose computer, or other programmable
data processing apparatus to produce a machine, such that the
instructions, which execute via the processor of the computer or
other programmable data processing apparatus, create means for
implementing the functions/acts specified in the flowchart and/or
block diagram block or blocks.
[0042] These computer program instructions may also be stored in a
computer-readable medium that can direct a computer or other
programmable data processing apparatus to function in a particular
manner, such that the instructions stored in the computer-readable
medium produce an article of manufacture including instruction
means which implement the function/act specified in the flowchart
and/or block diagram block or blocks.
[0043] The computer program instructions may also be loaded onto a
computer or other programmable data processing apparatus to cause a
series of operational steps to be performed on the computer or
other programmable apparatus to produce a computer implemented
process such that the instructions which execute on the computer or
other programmable apparatus provide processes for implementing the
functions/acts specified in the flowchart and/or block diagram
block or blocks.
[0044] The same ideas disclosed within the context of a SOA in this
disclosure are applicable to managing applications/resources
deployed in a cloud.
[0045] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). It should also be noted that, in some alternative
implementations, the functions noted in the block may occur out of
the order noted in the figures. For example, two blocks shown in
succession may, in fact, be executed substantially concurrently, or
the blocks may sometimes be executed in the reverse order,
depending upon the functionality involved. It will also be noted
that each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration, can be implemented by special
purpose hardware-based systems that perform the specified functions
or acts, or combinations of special purpose hardware and computer
instructions.
[0046] The terminology used herein is for the purpose of describing
particular embodiments only and is not intended to be limiting of
the invention. As used herein, the singular forms "a," "an" and
"the" are intended to include plural forms as well, unless the
context clearly indicates otherwise. It will be further understood
that the terms "comprises" and/or "comprising," when used in this
specification, specific the presence of stated features, integers,
steps, operations, elements, and/or components, but do not preclude
the presence or addition of one or more other features, integers,
steps, operation, elements, components, and/or groups thereof.
[0047] The corresponding structures, material, acts, and
equivalents of all means or steps plus function elements in the
claims below are intended to include any structure, material or act
for performing the function in combination with other claimed
elements are specifically claimed. The description of the present
invention has been presented for purposes of illustration and
description, but is not intended to be exhaustive or limited to the
invention in the form disclosed. Many modifications and variations
will be apparent to those of ordinary skill without departing from
the scope and spirit of the invention. The embodiments were chosen
and described in order to best explain the principles of the
invention and the practical application, and to enable others of
ordinary skill in the art to understand the invention for
embodiments with various modifications as are suited to the
particular use contemplated.
* * * * *