ZERO CODE STREAM PROCESSING ENGINE FOR MACHINE INTERFACE
20230315055 · 2023-10-05
Inventors
Cpc classification
G05B19/4155
PHYSICS
International classification
Abstract
A distributed, parallel processing, zero code stream processing orchestration platform for automating industrial robotic processes or machines is disclosed. In some embodiments, an orchestration engine functions as a machine interface and enables easy integration with business process management process engines or with an Internet-of-Things event stream platform.
Claims
1. A system for zero code stream processing orchestration, the system comprising: a processor; a non-transitory computer-readable medium; and instructions stored on the non-transitory computer-readable medium and translatable by the processor for providing a plurality of runtime services, including: a connector runtime configured for deploying a source connector for connecting to disparate source endpoints and streaming event streams from the disparate source endpoints; a stream processor configured for orchestrating microservices, including a machine learning (ML) service, operating on messages in the event streams; an artificial intelligence (AI) runtime configured for providing a distributed parallel processing microservice service bus and runtime that hosts a ML prediction service module, wherein the ML prediction service module is trained to make a prediction based at least in part on the messages from the stream processor; and a business process management (BPM) broker that operates as a managed dispatcher for automatically initiating BPM workflows based on the prediction.
2. The system of claim 1, wherein the disparate sources comprise a data pipeline.
3. The system of claim 1, wherein the disparate sources comprise an Internet-of-Things platform.
4. The system of claim 1, wherein the disparate sources comprise a data pipeline and an Internet-of-Things platform.
5. The system of claim 1, wherein the plurality of runtime services further includes an AI knowledge base for training and predicting state data of the ML prediction service modules.
6. The system of claim 1, wherein the plurality of runtime services further includes a service runtime for handling lifecycle and execution of a service module.
7. The system of claim 1, wherein the connector runtime is further configured for deploying a sink connector for a sink endpoint.
8. The system of claim 1, wherein the event streams are initiated by machines.
9. The system of claim 1, wherein the disparate source endpoints, the connector runtime, the stream processor, the AI runtime, the BPM broker, and the BPM workflows are distributed across different computing environments.
10. A method for zero code stream processing orchestration, the method comprising: composing a stream process with elements of various element types; and operating a stream processor to process the stream process, wherein the elements include a stream input element, a map operation element, and a condition element, wherein the stream input element represents a logical source event stream in a process orchestration that refers to a source endpoint as its source of an event stream, wherein the map operation element is configured for mapping each event in the event stream to a machine learning (ML) prediction service hosted in an artificial intelligence (AI) runtime or a service runtime, wherein the map operation element is configured for aggregating the events in the event stream based on time window, event count or logical expression and mapping the aggregated events to a ML prediction service hosted in an AI runtime or a service runtime, wherein the condition element is configured for controlling a flow of execution based on a specified Boolean expression, and wherein the flow of execution includes automatically initiating business process management (BPM) workflows.
11. The method according to claim 10, wherein the element types include a sink endpoint, a stream output element, a stream join element, a change log element, a timed gate element, a relay gate element, a branch element, a merge element, an inline function element, a condition element, a logic gate element, a transformer element, a for each element, a reduce operation element, and a workflow element.
12. The method according to claim 10, wherein the stream processor operates on a distributed, parallel processing, zero code stream processing orchestration platform, wherein the method further comprises: connecting the stream processor to the source endpoint through a source connector configured for connecting to the source endpoint; and connecting the stream processor to a sink endpoint through a sink connector configured for connecting to the sink endpoint.
13. The method according to claim 10, wherein the stream process has a zero-code definition that does not require manual coding.
14. A method comprising: deploying, by a connector runtime, a source connector for connecting to disparate source endpoints and streaming event streams from the disparate source endpoints; orchestrating, by a stream processor, microservices, including a machine learning (ML) service, operating on messages in the event streams; providing, by an artificial intelligence (AI) runtime, a distributed parallel processing microservice service bus and runtime that hosts a ML prediction service module, wherein the ML prediction service module is trained to make a prediction based at least in part on the messages from the stream processor; and automatically initiating, by a business process management (BPM) broker that operates as a managed dispatcher, BPM workflows based on the prediction.
15. The method of claim 14, wherein the disparate sources comprise a data pipeline, an Internet-of-Things platform, or a combination thereof.
16. The method of claim 14, wherein the disparate sources comprise a data pipeline and an Internet-of-Things platform.
17. The method of claim 14, wherein the plurality of runtime services further includes an AI knowledge base for training and predicting state data of the ML prediction service modules.
18. The method of claim 14, wherein the plurality of runtime services further includes a service runtime for handling lifecycle and execution of a service module.
19. The method of claim 14, wherein the connector runtime is further configured for deploying a sink connector for a sink endpoint.
20. The method of claim 14, wherein the event streams are initiated by machines.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032] The drawings accompanying and forming part of this specification are included to depict certain aspects of the invention. A clearer impression of the invention, and of the components and operation of systems provided with the invention, will become more readily apparent by referring to the exemplary, and therefore non-limiting, embodiments illustrated in the drawings, wherein identical reference numerals designate the same components. The features illustrated in the drawings are not necessarily drawn to scale.
DETAILED DESCRIPTION
[0033] The invention and the various features and advantageous details thereof are explained more fully with reference to the non-limiting embodiments that are illustrated in the accompanying drawings and detailed in the following description. Descriptions of well-known starting materials, processing techniques, components and equipment are omitted so as not to unnecessarily obscure the invention in detail. It should be understood, however, that the detailed description and the specific examples, while indicating some embodiments of the invention, are given by way of illustration only and not by way of limitation. Various substitutions, modifications, additions and/or rearrangements within the spirit and/or scope of the underlying inventive concept will become apparent to those skilled in the art from this disclosure.
[0034] As alluded to above, current BPM automation solutions are designed to respond to defined inputs from humans. As illustrated in
[0035] To this end, this disclosure provides a distributed, parallel processing, zero code stream processing orchestration platform, sometimes referred to herein, for the purposes of this description and accompanying figures, as “Vega Processor,” for automating industrial robotic processes or machines. As illustrated in
[0036]
[0037] Connector runtime 210 provides a distributed runtime for deploying source and sink connectors for event streams. A process that runs in stream processor 220 (described below) is decoupled from the source and destination message channel or its protocol for its source and sink event streams respectively. Connectors deployed on connector runtime 210 are highly available, distributed, and load balanced. Stream processor 220 is the distributed and high-speed stream processing runtime that orchestrates microservices hosted as a Service or a ML Prediction Service. Beside supporting basic orchestration constructs, such as variable, condition, logical gate, timed gate, loop, branch, merge, stream processor 220 supports advanced stream processing capabilities such as stream join, stream snapshot, change log, group by, time window, data partitioning, map and reduce operations.
[0038] AI runtime 230 provides a distributed parallel processing microservice service bus and runtime that hosts ML prediction service modules. Lifecycle and execution of a ML prediction service is maintained by AI runtime 230. Further, Al runtime 230 supports online learning and feedback propagation to ML prediction service modules. AI knowledge base 240 provides a distributed, highly available (HA) and fast schema free secondary storage for training and prediction state data of ML prediction service modules. Further, AI knowledge base 240 supports auto training of models during fail-over, horizontal scaling and for reinforcement learning. Service runtime 250 is the distributed parallel processing microservice service bus and runtime for service modules. Lifecycle and execution of a service module, such as Map, Flat Map, or Reduce, is handled by service runtime 250. BPM broker 260 works as a managed dispatcher for BPM processes. It decouples the system services in Vega Processor from external BPM engines.
[0039]
[0040] Traditionally, a business process is initiated through a human action. For instance, someone may wish to obtain a loan from a bank and initiate a loan application process. As another example, a doctor may accept a new patient and initiate a process to provide health care to that new patient. Each such process may involve one or more workflows. A workflow, in this case, refers to the procedural movement of information, material, and tasks from one participant to another (e.g., the loan applicant submitting necessary paperwork to the bank, the bank reviewing and considering approving or denying the loan application). A workflow, therefore, includes the procedure(s), the people, and the tools involved in each step of an overall business process.
[0041] To differentiate machine-initiated business processes from human-initiated business processes, machine-initiated business processes are referred to herein as “stream processes.” In embodiments disclosed herein, a stream process is composed on elements of various types. Several exemplary element types are described below. In some embodiments, a stream process may not involve all of the element types described below. Further, in some embodiments, a stream process may involve zero, one, or multiple elements of each element type described below.
[0042] One type of stream process element is a source endpoint element. This stream process element is used to configure a connection to an external stream source, for instance, an IoT platform, an open-source distributed event streaming platform, a Java Message Service (JMS) destination in a one-to-many distribution model, etc. A source endpoint can be active, in which it actively listens for real time input stream, or it can be configured as scheduled. For instance, based on cron expression settings, a source endpoint can periodically read from an external data source. A cron expression is a string consisting of six or seven subexpressions (fields) that describe individual details of a schedule. Cron expressions are known to those skilled in the art and thus are not further described herein.
[0043] An example of a source endpoint 400 is illustrated in
[0044] Another type of stream process element is a sink endpoint element. This stream process element is used to configure a connection to an external stream sink, such as for instance, an IoT platform, an open-source distributed event streaming platform, a JMS destination, or a data base table. An example of a sink endpoint 500 is illustrated in
[0045] Another type of stream process element is a stream input element. This stream process element represents a logical source event stream in a process orchestration that refers to a source endpoint as its source of an event stream. An example of a stream input element 600 is illustrated in
[0046] Another type of stream process element is a stream output element. This stream process element represents a logical stream sink in a process orchestration that refers to a sink endpoint as its destination of event stream. An example of a stream output element 700 is illustrated in
[0047] Another type of stream process element is a stream join element. This stream process element is used in a process to join two event streams of different structures of data from different stream input/paths. Like an SQL join, a stream join element allows three different kinds of join—inner join, left join or outer join. An example of a stream join element 800 is illustrated in
[0048] Another type of stream process element is a change log element. This stream process element is used in a process to suppress duplicate messages in a stream process, for instance, through a key mapping component and a context mapping component. An example of a change log element 900 is illustrated in
[0049] Another type of stream process element is a timed gate element. This stream process element acts as a valve in a process to suppress messages within a specified time interval. An example of a timed gate 1000 is illustrated in
[0050] Another type of stream process element is a relay gate. This stream process element acts as a relay to allow messages from multiple processing paths to be routed to a single downstream path. An example of a relay gate 1100 is illustrated in
[0051] Another type of stream process element is a branch element. This stream process element can be used in a process to fork independent parallel paths of processing. Those paths can be merged/synchronized at a later stage using a merge element discussed below. An example of a branch element 1200 is illustrated in
[0052] Another type of stream process element is a merge element. This stream process element can be used in a process to merge/synchronize multiple independent parallel processing paths that were forked by using a branch element. An example of a merge element 1300 is illustrated in
[0053] Another type of stream process element is an inline function element. This stream process element can be used in a process to add a light weight inline function or custom logic in a process flow. An example of an inline function element 1400 is illustrated in
[0054] Another type of stream process element is a condition element. This stream process element can be used in a process to control the flow of execution based on a specified Boolean expression. An example of a condition element 1500 is illustrated in
[0055] Another type of stream process element is a logic gate element. This stream process element can be used in a process flow to apply a logical gateway operation on outputs of multiple condition elements. An example of a logic gate element 1600 is illustrated in
[0056] Another type of stream process element is a transformer element. This stream process element can be used in a process to transform or to re-map the attributes in the process context. An example of a transformer element 1700 is illustrated in
[0057] Another type of stream process element is a “for each” element. This stream process element can be used in a process to iterate over a collection or attributes in an event. An example of a for each element 1800 is illustrated in
[0058] Another type of stream process element is a map operation element. This stream process element can be used in a process to map each event to a ML Predict Service or a Service microservice, hosted in an AI Runtime (e.g., AI Runtime 230, described above) or a Service Runtime (e.g., Service Runtime 250, described above), respectively. An example of a map operation element 1900 is illustrated in
[0059] Another type of stream process element is a reduce operation element. This stream process element can be used in a process to aggregate a set of messages using a group by key or key expression and based on window size, time window, or conditional flush, to invoke a ML Predict Service or a Service microservice hosted in an AI Runtime (e.g., Al Runtime 230, described above) or a Service Runtime (e.g., Service Runtime 250, described above), respectively. An example of a reduce operation element 2000 is illustrated in
[0060] Another type of stream process element is a workflow element. This stream process element can be used in a process to dispatch workflow instances in a target BPM engine. An example of a workflow element 2100 is illustrated in
[0061] Following is one example of a use case for the orchestration engine described above. Numerous other uses cases are possible, as one skilled in the art would understand.
[0062] In the example of
[0063] Those skilled in the art can appreciate that embodiments of an orchestration engine disclosed herein may vary from implementation to implementation. Therefore, details shown in
[0064] To represent the complete updated profile of the patient, the patient's registration data is joined with the normalized data from received from the connected devices. A stream join element named Patient Status is used to perform an INNER JOIN on the data by patient identifier (“patient_Id”). Based on the data received from the sensors attached to the patient, the ML predict element named Predict Conditions predicts a change in the underlying conditions of the patient. In order to make this prediction, the stream join element named Patient Status performs a join operation on the latest normalized data received from the devices with the latest predicted underlying condition data. A relay gate named Patient Profile is used to facilitate this requirement. The stream join element named Patient Status is configured to use the input stream from the relay gate named Patient Profile as a snapshot and silent, so that it is treated as an updated view that does not trigger a join operation. Join is triggered only by the normalized device data from the change log element named Patient Data.
[0065] In the example of
[0066] For output, a stream output element named Resource Planning is used. In this case, Resource Planning is configured for writing the prediction data to an Apache Kafka Channel though a sink endpoint named Patient Data Output. Based on the prediction of the Predict Conditions, respective BPM workflows are automatically initiated using workflow elements such as Improvement Workflow, Severe Case Workflow, or Critical Case Workflow, respectively. In this use case, the ML predict element named Predict Conditions predicts the underlying conditions of the patient by applying a statistical model to patient profile data such as, co-morbidity, age, gender, days since onset of symptoms along with current symptoms—fever, saturation, etc. The Predict Conditions element can use any suitable statistical procedure to train the likelihood/emission probability model, as one skilled in the art would understand.
[0067] As described above, a stream process is composed of predefined elements of various types. An orchestration engine is adapted for running such a stream process to automatically initiate appropriate workflows. As the above example use case illustrates, implementing a stream process for processing by the orchestration engine to thereby automatically initiate BPM workflows does not require any manual coding. Accordingly, the invention provides a zero-code orchestration for advanced stream processing with join, map/reduce, and AI integration, for instance, with an IoT platform. Further, the invention provides a machine interface for machine-initiated BPM processes. As discussed above, current BPM tools provide connectors for streaming platforms. However, these BPM tools are designed for message-oriented processing and require custom codes/framework to be written for supporting event processing, map/reduce, and AI integration. Further, these BPM tools do not provide zero code advanced stream processing options such as stream snapshot, silent stream join, relay gate, change log, timed gate, inline function.
[0068]
[0069] For the purpose of illustration, a single system is shown for each of computer 3012, computer 3015, and computer 3016. However, with each of computer 3012, computer 3015, and computer 3016, a plurality of computers (not shown) may be interconnected to each other over network 3014. For example, a plurality of source computers 3012 and a plurality of BPM system computers 3016 may be coupled to network 3014. Source computers 3012 may include data processing systems for communicating with stream processor computer 3015. Stream processor computers 3015 may include data processing systems for communicating with BPM system computers 3016.
[0070] Source computer 3012 can include central processing unit (“CPU”) 3020, read-only memory (“ROM”) 3022, random access memory (“RAM”) 3024, hard drive (“HD”) or storage memory 3026, and input/output device(s) (“I/O”) 3028. I/O 3029 can include a keyboard, monitor, printer, electronic pointing device (e.g., mouse, trackball, stylus, etc.), or the like. Source computer 3012 can include a desktop computer, a laptop computer, a personal digital assistant, a cellular phone, or nearly any device capable of communicating over a network. Stream processor computer 3015 may comprise CPU 3050, ROM 3052, RAM 3054, HD 3056, and I/O 3058, similar to source computer 3012.
[0071] Likewise, BPM system computer 3016 may include CPU 3060, ROM 3062, RAM 3064, HD 3066, and I/O 3068. BPM system computer 3016 may include one or more backend systems configured for providing a variety of services. These services may utilize data stored in data store 3018. Many other alternative configurations are possible and known to skilled artisans.
[0072] Each of the computers in
[0073] Portions of the methods described herein may be implemented in suitable software code that may reside within ROM 3022, 3052, or 3062; RAM 3024, 3054, or 3064; or HD 3026, 3056, or 3066. In addition to those types of memories, the instructions in an embodiment disclosed herein may be contained on a data storage device with a different computer-readable storage medium, such as a hard disk. Alternatively, the instructions may be stored as software code elements on a data storage array, magnetic tape, floppy diskette, optical storage device, or other appropriate data processing system readable medium or storage device.
[0074] In one embodiment, a system may comprise at least one processor, at least one non-transitory computer-readable storage medium, and stored instructions translatable by the at least one processor to implement a method substantially as described herein. Another embodiment comprises a computer program product having at least one non-transitory computer-readable storage medium storing instructions translatable by at least one processor to perform a method substantially as described herein. Numerous other embodiments are also possible.
[0075] These, and other, aspects of the disclosure will be better appreciated and understood when considered in conjunction with the accompanying drawings and details and examples provided in the accompanying Appendix B, which forms part of this disclosure. It should be understood, however, that the description, while indicating various embodiments of the disclosure and numerous specific details thereof, is given by way of illustration and not of limitation. Many substitutions, modifications, additions and/or rearrangements may be made within the scope of the disclosure without departing from the spirit thereof, and the disclosure includes all such substitutions, modifications, additions and/or rearrangements.
[0076] Those skilled in the relevant art will appreciate that the invention can be implemented or practiced with other computer system configurations, including without limitation multi-processor systems, network devices, mini-computers, mainframe computers, data processors, and the like. The invention can be embodied in a computer or data processor that is specifically programmed, configured, or constructed to perform the functions described in detail herein. The invention can also be employed in distributed computing environments, where tasks or modules are performed by remote processing devices, which are linked through a communications network such as a local area network (LAN), wide area network (WAN), and/or the Internet. In a distributed computing environment, program modules or subroutines may be located in both local and remote memory storage devices. These program modules or subroutines may, for example, be stored or distributed on computer-readable media, including magnetic and optically readable and removable computer discs, stored as firmware in chips, as well as distributed electronically over the Internet or over other networks (including wireless networks). Example chips may include Electrically Erasable Programmable Read-Only Memory (EEPROM) chips. Embodiments discussed herein can be implemented in suitable instructions that may reside on a non-transitory computer readable medium, hardware circuitry or the like, or any combination and that may be translatable by one or more server machines. Examples of a non-transitory computer readable medium are provided below in this disclosure.
[0077] ROM, RAM, and HD are computer memories for storing computer-executable instructions executable by the CPU or capable of being compiled or interpreted to be executable by the CPU. Suitable computer-executable instructions may reside on a computer readable medium (e.g., ROM, RAM, and/or HD), hardware circuitry or the like, or any combination thereof. Within this disclosure, the term “computer readable medium” is not limited to ROM, RAM, and HD and can include any type of data storage medium that can be read by a processor. Examples of computer-readable storage media can include, but are not limited to, volatile and non-volatile computer memories and storage devices such as random access memories, read-only memories, hard drives, data cartridges, direct access storage device arrays, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. Thus, a computer-readable medium may refer to a data cartridge, a data backup magnetic tape, a floppy diskette, a flash memory drive, an optical data storage drive, a CD-ROM, ROM, RAM, HD, or the like.
[0078] The processes described herein may be implemented in suitable computer-executable instructions that may reside on a computer readable medium (for example, a disk, CD-ROM, a memory, etc.). Alternatively, the computer-executable instructions may be stored as software code components on a direct access storage device array, magnetic tape, floppy diskette, optical storage device, or other appropriate computer-readable medium or storage device.
[0079] Any suitable programming language can be used to implement the routines, methods or programs of embodiments of the invention described herein, including C, C++, Java, JavaScript, HTML, or any other programming or scripting code, etc. Other software/hardware/network architectures may be used. For example, the functions of the disclosed embodiments may be implemented on one computer or shared/distributed among two or more computers in or across a network. Communications between computers implementing embodiments can be accomplished using any electronic, optical, radio frequency signals, or other suitable methods and tools of communication in compliance with known network protocols.
[0080] Different programming techniques can be employed such as procedural or object oriented. Any particular routine can execute on a single computer processing device or multiple computer processing devices, a single computer processor or multiple computer processors. Data may be stored in a single storage medium or distributed through multiple storage mediums, and may reside in a single database or multiple databases (or other data storage techniques). Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, to the extent multiple steps are shown as sequential in this specification, some combination of such steps in alternative embodiments may be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines. Functions, routines, methods, steps and operations described herein can be performed in hardware, software, firmware or any combination thereof.
[0081] Embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in the various embodiments. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the invention.
[0082] It is also within the spirit and scope of the invention to implement in software programming or code any of the steps, operations, methods, routines or portions thereof described herein, where such software programming or code can be stored in a computer-readable medium and can be operated on by a processor to permit a computer to perform any of the steps, operations, methods, routines or portions thereof described herein. The invention may be implemented by using software programming or code in one or more digital computers, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. The functions of the invention can be achieved by distributed or networked systems. Communication or transfer (or otherwise moving from one place to another) of data may be wired, wireless, or by any other means.
[0083] A “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, system, or device. The computer readable medium can be, by way of example only but not by limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, system, device, propagation medium, or computer memory. Such computer-readable medium shall be machine readable and include software programming or code that can be human readable (e.g., source code) or machine readable (e.g., object code). Examples of non-transitory computer-readable media can include random access memories, read-only memories, hard drives, data cartridges, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. In an illustrative embodiment, some or all of the software components may reside on a single server computer or on any combination of separate server computers. As one skilled in the art can appreciate, a computer program product implementing an embodiment disclosed herein may comprise one or more non-transitory computer readable media storing computer instructions translatable by one or more processors in a computing environment.
[0084] A “processor” includes any, hardware system, mechanism or component that processes data, signals or other information. A processor can include a system with a central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real-time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems.
[0085] As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, product, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, product, article, or apparatus.
[0086] Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). As used herein, including the claims that follow, a term preceded by “a” or “an” (and “the” when antecedent basis is “a” or “an”) includes both singular and plural of such term, unless clearly indicated within the claim otherwise (i.e., that the reference “a” or “an” clearly indicates only the singular or only the plural). Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
[0087] It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted.
[0088] In the foregoing specification, the invention has been described with reference to specific embodiments. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of invention.