Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MESSAGE HANDLING IN A DATA PROCESSING SYSTEM
Document Type and Number:
WIPO Patent Application WO/2013/160775
Kind Code:
A1
Abstract:
A data processing system comprises a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server. A method of operating the data processing system comprises the steps of receiving a message from the client at the service bus, and mediating the message at an application of the service bus, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server. The method can optionally further comprise receiving the mediated message at the target, detecting that the condition within the header of the mediated message is satisfied, and transmitting a response directly to the source as defined in the header of the mediated message.

Inventors:
ROSS MARTIN ANDREW (GB)
MASSEY SAMUEL THOMAS (GB)
STIRLING CRAIG HOWARD (GB)
MCGINNES DANIEL JAMES (GB)
Application Number:
PCT/IB2013/051825
Publication Date:
October 31, 2013
Filing Date:
March 07, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
IBM (US)
IBM UK (GB)
IBM JAPAN (JP)
International Classes:
G06F13/00
Domestic Patent References:
WO2005114452A22005-12-01
Foreign References:
US20110196824A12011-08-11
JP2011170636A2011-09-01
Attorney, Agent or Firm:
GRAHAM, Timothy (Intellectual Property LawHursley Park,Winchester, Hampshire, SO21 2JN, GB)
Download PDF:
Claims:
CLAIMS

1. A method for operating a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, the method comprising the steps of:

receiving a message from the client at the service bus, and mediating the message at an application of the service bus, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server.

2. A method according to claim 1, and further comprising receiving the mediated message at the target, detecting that the condition within the header of the mediated message is satisfied, and transmitting a response directly to the source as defined in the header of the mediated message.

3. A method according to claim 2, and further comprising transmitting a message from the source to the target to indicate safe receipt of the direct response.

4. A method according to claim 3, and further comprising transmitting a message from the target to the message mediating application to indicate safe receipt of the direct response.

5. A method according to claim 2, and further comprising detecting that the direct response has not been safely received at the source and transmitting a response to an application of the service bus instead.

6. A method according to any preceding claim, wherein the service bus comprises a plurality of applications and the source comprises a first application in the service bus and the target comprises a second application in the service bus.

7. A data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, wherein the service bus is arranged to receive a message from the client and mediate the message, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server,

8. A system according to 7, wherein the target is arranged to receive the mediated message, detect that the condition within the header of the mediated message is satisfied, and transmit a response directly to the source as defined in the header of the mediated message.

9. A system according to claim 8, wherein the source is arranged to transmit a message to the target to indicate safe receipt of the direct response.

10. A system according to claim 9, wherein the target is further arranged to transmit a message to the message mediating application to indicate safe receipt of the direct response.

11. A system according to claim 8, wherein the target is further arranged to detect that the direct response has not been safely received at the source and transmit a response to an application of the service bus instead.

12. A system according to any one of claims 7 to 11, wherein the service bus comprises a plurality of applications and the source comprises a first application in the service bus and the target comprises a second application in the service bus.

13. A computer program product for operating a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, the computer program product comprising: a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method according to any of claims 1 to 6.

14. A computer program stored on a computer readable medium and loadable into the internal memory of a digital computer, comprising software code portions, when said program is run on a computer, for performing the method of any of claims 1 to 6.

Description:
MESSAGE HANDLING IN A DATA PROCESSING SYSTEM

DESCRIPTION

FIELD OF THE INVENTION

[0001] This invention relates to a method of operating a data processing system and to the data processing system itself.

BACKGROUND

[0002] Enterprise service bus (ESB) is a software architecture model used for designing and implementing the interaction and communication between mutually interacting software applications in service oriented architecture. As a software architecture model for distributed computing, it is a variant of the more general client-server software architecture model and provides a message oriented design for communication and interaction between applications. Its primary use is in the integration of heterogeneous and computing systems.

[0003] Existing ESB implementations allow for two way operations. A simple example would be mediating a message on a request flow before initiating an invocation of a given service, and then a response flow to mediate the response from the given service back to the client application. It is not uncommon to have a response flow that does not perform any enrichment, transformation, mediation or auditing, but simply pushes the response back to the client application without performing any actions, which is inefficient both in processor and network utilisation for the ESB.

[0004] Current solutions help to alleviate network utilisation in ESB implementations by caching service responses with a given validity period, but this is not applicable to all scenarios and does not alleviate the additional cost of processing the message on the response flow to simply forward the response back to the client application. For the purposes of this document, a response flow relates to the processes involved in mediating a response from a back-end service to the client application. When a response flow is said to be empty it is implying that the processing is equivalent to a static routing, i.e. there is no data enrichment, transformation, mediation or auditing.

[0005] Therefore, there is a need in the art to address the aforementioned problem. BRIEF SUMMARY OF THE INVENTION

[0006] According to a first aspect of the present invention, there is provided a method of operating a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, the method comprising the steps of receiving a message from the client at the service bus, and mediating the message at an application of the service bus, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server.

[0007] According to a second aspect of the present invention, there is provided a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, wherein the service bus is arranged to receive a message from the client and mediate the message, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server.

[0008] According to a third aspect of the present invention, there is provided a computer program product on a computer readable medium for operating a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, the product comprising instructions for receiving a message from the client at the service bus, and mediating the message at an application of the service bus, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source, the source comprising either the client or an application of the service bus and the target comprising either an application of the service bus or the server.

[0009] Viewed from a further aspect, the present invention provides a computer program product for operating a data processing system comprising a service bus connected between a client and a server, the service bus comprising one or more applications arranged to mediate message flow between the client and the server, the computer program product comprising: a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method for performing the steps of the invention.

[0010] Viewed from a further aspect, the present invention provides a computer program stored on a computer readable medium and loadable into the internal memory of a digital computer, comprising software code portions, when said program is run on a computer, for performing the steps of the invention.

[0011] Owing to the invention, it is possible to provide an enhanced data processing performance and function that could be delivered in, for example an enterprise service bus product, which will provide reduced processing and network load within the service bus. Preferably, the enterprise service bus detects empty response flows for given service responses, sends a control packet to the a component in the service bus to indicate it is being bypassed and routes the response message to the client calling system based on data initially propagated to the service. Advantageously, the method further comprises receiving the mediated message at the target, detecting that the condition within the header of the mediated message is satisfied, and transmitting a response directly to the source as defined in the header of the mediated message. Therefore, the data processing system, in a preferred embodiment, is able to determine when a response flow is empty, rout a response directly to the client system when the service bus response flow is empty, utilise information of the available response flows to route different service responses accordingly (such as fault messages/invalid Responses/valid Responses) and allow partial optimisation and propagation of data through multiple applications to allow for more complex analysis and routing.

[0012] Essentially, the modified data processing system has a client and an end server with a service bus in-between. A source and target (where in the simplest embodiment the source is the client and the target is the server) can be arranged so that when a message originates from the source for the target, the service bus can define specific circumstances in which the target can communicate directly with the source rather than back through all of the components of the service bus. In the simplest embodiment, this means that the end server will communicate back directly to the client device, in specific circumstances, rather than communicating through the service bus. The service bus will add a header to the original message that defines when the target can communicate directly with the source. This reduces the amount of processing in the service bus on the return leg, as part or all of the service bus is bypassed by the target communicating directly with the source.

[0013] Preferably, the method further comprises transmitting a message from the source to the target to indicate safe receipt of the direct response and transmitting a message from the target to the message mediating application to indicate safe receipt of the direct response. The method can also optionally further comprise detecting that the direct response has not been safely received at the source and transmitting a response to an application of the service bus instead. The target can be configured to monitor that the source has safely received the direct response and the target can communicate with the service bus to ensure that proper transaction methodology is followed. If, for any reason, the direct message does not reach the originating source or the target does not believe that message has reached the source, then the target can communicate the response to the service bus, to ensure that the original request does get dealt with.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014] Preferred embodiments of the present invention will now be described, by way of example only, with reference to the following drawings, in which: Figures 1 and 2 are schematic diagrams of a data processing system; in accordance with the prior art, and in which a preferred embodiment of the present invention may be implemented;

Figure 3 is a flowchart of a method of operating a service bus, in accordance with a preferred embodiment of the present invention;

Figure 4 is a flowchart of a method of operating a server, in accordance with a preferred embodiment of the present invention;

Figure 5 is a schematic diagram of a sample response flow in a service bus, in accordance with a preferred embodiment of the present invention; and

Figure 6 is a further schematic diagram of a data processing system, in accordance with a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE DRAWINGS

[0015] Figure 1 illustrates a data processing system that comprises a client 10, a server 14 and a service bus 12 connected between the client 10 and the server 14. The service bus 12 comprises one or more applications that are arranged to mediate message flow between the client 10 and the server 14. The use of a service bus 12 implies that the client 10 and server 14 cannot communicate directly and need the service bus 12 to mediate between the two different components. It is common in large organisations for legacy computing systems to be incompatible with new services or applications and the service bus 12 is required in- between the two.

[0016] The three components shown in Figure 1 could be three separate machines positioned in different locations or they could be composed of individual software environments that may be located on the same physical machine. The client 10 is an application that wishes to use the functionality of a service provided by the server 14. For whatever reason, the client 10 cannot deal directly with the server 14, but must send a message to the service bus 12, which the service bus 12 mediates, for ultimately forwarding to the server 14. Similarly, the server 14 sends the response to the service bus 12, which then mediates the received response and sends it back to the client 10. [0017] The service bus 12 is made up of one or more individual applications that manage request flows and response flows of messages that are received from clients 10 and servers 14. A request flow of an application of the service bus 12 mediates an incoming message from a client 10. The service bus 12 sends the mediated message to the server 14. A response flow of an application of the service bus 12 mediates the reply from the server 14 for forwarding to the original requesting client 10. In this way, the client 10 and server 14 can communicate despite the apparent incompatibility.

[0018] The data processing system of Figure 1 optimises the response flow processing in, for example, an ESB implementation. The client system 10 is the system directly invoking the ESB implementation. The service bus 12 will provide data propagation in a protocol header to the back-end service provided by the server 14 with information regarding the client system(s) and information regarding supported responses and response flow optimisation viability. Essentially an application of the service bus 12 mediates a message received from a client 10, the mediation comprising adding a header to the message, the header defining a source and a condition under which a target can respond directly to the source.

[0019] Figure 2 illustrates the concept in the broadest terms, where the client 10 transmits a message 16 to the service bus 12. An application of the service bus 12 will mediate the message 16, the mediation comprising adding a header 18 to the message 16. The header 18 defines a source (the client 10) and a condition under which a target (the server 14) can respond directly to the client 10. Therefore, in addition to the normal mediation performed by the service bus 12, the service bus 12 adds the header 18 to the outgoing message which defines the circumstances under which the server 14 can respond directly to the client 10, without having to reply to the service bus 12.

[0020] The target (the server 14) receives the mediated message 16, and if it detects that the condition within the header 18 of the mediated message 16 is satisfied, transmits a response directly to the source (the client 10) as defined in the header 18 of the mediated message 16. The response that would normally be sent to the service bus 12 for mediation and forwarding to the client 10 is instead sent directly to the client 10, bypassing the service bus 12. The server 14 performs its normal operation in all regards except in relation to the routing of its response to the request from the client 10, which is dictated by the header 18.

[0021] The server 14 can respond directly to the client 10, when the response flow for a specific request is empty. This implies that the service bus 12 is not performing any mediation or other action with respect to the response for this specific request other than routing the response to the original client 10. An empty response flow would be used to essentially pass through the response from the server 14 to the client 10 without any mediation from the service bus 12. In a normal operation of a data processing system that uses a service bus 12, this would create an inefficient use of processing and network resources, since data is being unnecessarily routed through the service bus 12.

[0022] In Figure 2, the service bus 12 is operating under the control of a computer program product, which is provided by a computer readable medium 30, here a CD-ROM 30. The product on the medium 30 comprises a series of instructions that control the mediation of the message 16 once it is received by the service bus 12. The instructions define the receipt of the message 16 and how the service bus 12 mediates the message 16 by adding the header 18 to the message 16. The header 18 defines the source of the message 16 and the

circumstances under which the ultimate target of the message 16 will respond directly to the source of the message 16.

[0023] The data processing system can implement a method for detecting empty response flows. For example, the data processing system may detect whether any empty response flows exist at runtime or deploy-time. This detection will be implementation dependant. For example in an IBM® WebSphere® Enterprise Service Bus (WESB) implementation it is possible to interrogate the connections of nodes initially handling responses from service invocations to ascertain if any direct connections exist to a node handling the sending of a response back to the service consumer/client application, or by examination of the xml file(s) storing the mediation flow data. The information about empty response flows can then be stored in cache or in mediation metadata and data can be propagated to a back-end service. Other implementations of service buses can use methods specific to those implementations to detect the empty response flows. IBM and WebSphere are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide.

[0024] Figure 3 shows a flowchart illustrating how a service bus 12 would operate that is implementing the feature of optimising the network load by allowing the server 14 to communicate directly with the client 10, after receipt of a message 16. At step S3.1, a check is made to see that the optimisation is enabled, as a network administrator should have the capability to enable or disable the feature. If yes, at step S3.2, a check is made to see if any response flows are empty. If yes, a further check is made at step S3.3 to see if the response flows are eligible for optimisation. This might be to see if any custom code has been added to the service bus implementation that could mean that the service bus 12 cannot rely on the response flow being empty as meaning that the specific response flow is eligible for optimisation. If the answer at step S3.3 is yes, then at step S3.4, the mediation by the service bus comprises including details of the client 10 and the response flow in the header 18 of the message that is sent to the server 14, which determines the form of the request sent to the server 14 in step S3.5.

[0025] Figure 4 is a flowchart that illustrates the operation of the server 14. The data that the server 14 needs is propagated in the header 18 of the received message, as described above. At step S4.1, the server 14 checks to see if the response that it will provide to the original request matches a condition in the header 18. If no, then the process moves to step S4.7 and the server 14 responds to the service bus 12 in a conventional manner. If yes however, then at step S4.2 a notification is sent from the server 14 to the service bus 12 that a direct response to the original message will be made to the original requester (the client 10).

[0026] At step S4.3, the server 14 extracts data from the header 18 of the message that defines the client 10, such as an appropriate network address for the client 10 and at step S4.4, this data is used to transmit a response directly to the client 10. At step S4.5, a check is made to see if the client 10 has acknowledged safe receipt of the response. If no, then the process moves to step S4.7 and the server 14 responds to the service bus 12 in a conventional manner. If yes however, then at step S4.6, the server 14 sends a notification to the service bus 12 to indicate that direct routing has been successfully used.

[0027] The step S4.5 of checking a response is received (the "handshake" between the client 10 and server 14 if the ESB 12 is cut-out) is optional, as a quality of service may be utilised that is using best-effort where a message may be lost under certain circumstances. In Figure 4, step S4.4 could optionally connect directly to step S4.6, bypassing step S4.5 depending on the environment configuration, for example if using a reduced quality of service.

[0028] The server 14 provides a method for instructing the ESB implementation 12 that the response flow is being circumnavigated and sends a packet to the ESB 12 to indicate that the flow has completed. The server 12 parses data in the protocol header 18 to route the response message to appropriate client system 10. The transactionality is passed to the back-end system 14 which is now responsible for data/transaction/Quality of Service (QOS). The server 14 will only use this methodology if it identifies that the condition within the header 18 is satisfied. So for certain types of requests, only a subset of the possible responses will utilise the direct response to the original source of the request.

[0029] Figure 5 details a sample response flow for the service bus 12. The flow comprises nodes 20 that are connected via arrows 22. Each node 20 can be considered to represent some logic that will be invoked by the service bus 12 if the necessary conditions are satisfied with respect to a received message 16. The node 20 labelled "callout response 1" refers to a node 20 that would be invoked when a response is received from a service 1 provided by a server 14 in relation to a received message 16 from a client 10. Similarly "callout response 2" and "callout response 3" refer to services 2 and 3 respectively from further servers 14.

[0030] In the example of Figure 5, the node 20 labelled "input response" refers to logic that would be invoked in order to return a message to the original client 10 that triggered the communication to the server 14. A response from either callout 1 or callout 2 is first transformed in an Extensible Stylesheet Language Transformation (XSLT) node 20 before a response is sent to the client system 10. However, a response from callout 3 is sent directly to the client system 10. A fault response from callout 1 results in a stop. From this Figure, it can be seen that different responses from the same server 14 will be handled in different ways, according to the logic that is defined within the service bus 12.

[0031] If the application itself is eligible for the response flow optimisation then any valid responses from callout 3 (resulting in callout response 3 being invoked) would be viable candidates for the optimisation. If callout 3 were invoked in the request flow, then information would be propagated to the back-end service 14 in the header 18 indicating that a valid response should be routed directly to the client system 10 indicated. In this way, the logic of the service bus 12 can be monitored to decide when it is appropriate for the server 14 to be informed that a specific type of response does not need to be returned to the service bus 12, but can go direct to the originating client 10.

[0032] In some implementations of service buses, such as IBM WebSphere ESB it is possible to connect individual applications 24 of the service bus 12 through imports 26 and exports 28, as shown in Figure 6. In this type of implementation, the client system for the ESB application 24 finally invoking the back-end service 14 could be another application 24 within the service bus 12. Although the message chain in the data processing system is client-service bus-server, the source and target that optimise the response routing are not necessarily the ends of the chain (the client 10 and the server 14). The source could be the client 10 and the target could be an application 24 of the service bus 12 or the source could be an application 24 of the service bus 12 and the target could be the server 14.

[0033] In the example of Figure 6, the application App2 would hold information on which responses to application App 1 meet the criteria for the optimisation, which would again be propagated to the back-end service 14 in the protocol headers. In this respect depending on the design and functionality of the response flows for App 1 and App 2 the back-end service 14 could send a response to App 2, which would then send a response to App 1 which would then respond directly to the client system (no optimisation), or could send a response to App 2, which could then shortcut App 1 and respond directly to the client system 10 (partial optimisation) or could shortcut App 2 and send a response to App 1 , which would then respond directly to the client system (a different partial optimisation) or could shortcut both App 2 and App 1 and send a response directly to the client system 10 (full optimisation).

[0034] The important principle embodied by the optimisation is that part or all of the service bus 12 is bypassed, and this is achieved by a header being added to the ongoing message, which indicates to a component further down the chain the circumstances under which direct routing will take place and to whom the direct routing should be directed. Since the client 10 may be making a request to the server 14 that will result in many megabytes of data being transmitted to the client 10, any optimisation of the routing of such a response will save significant processing and network resources. The server 14 or the application 24 that is the target of the optimisation will respond to a component further back in the chain which was not the component that actually called the server 14 or application 24.

[0035] As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, computer program product or computer program. Accordingly, aspects of 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, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

[0036] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage 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 magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

[0037] A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

[0038] Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

[0039] Computer program code for carrying out operations for aspects 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). Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. [0040] Aspects of the present invention are described below 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.

[0041] These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.

[0042] The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices 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.

[0043] 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.

[0044] For the avoidance of doubt, the term "comprising", as used herein throughout the description and claims is not to be construed as meaning "consisting only of.