Patent ID: 12254334

While the invention is amenable to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that the intention is not to limit the invention to the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to digital conversational systems and more specifically to orchestration of digital conversational systems. Aspects of the present disclosure may relate to conversational systems, goal-oriented dynamic stateful orchestration from natural language (NL) utterances, and/or automation of workflow generation.

Automation scripts may be used to provide one or more declarative definitions of scripts (e.g., automation scripts) that describe a sequence of tasks to perform a job. For every new task, the automation developer may either generate a new, custom automation script or manually execute multiple existing automation scripts. Such a setup may be rigid, and any modification may require a human developer in the loop. Understanding multiple pre-existing automation scripts and attaching a chat interface may enable a conversational, self-service automation tool.

In some embodiments of the present disclosure, ingestion of scripts (e.g., stateful automation scripts) may enable the generation of conversational agents; in some embodiments, the ingestion of the scripts may be automatic. Some embodiments of the present disclosure may enable generation of a conversational interface on top of the automation script. In some embodiments, the conversational interface may enable stateful orchestration of multiple automation scripts; in some embodiments, the conversational interface may generate new task sequences from existing automation scripts. In some embodiments of the present disclosure, the conversational interface may simultaneously enable stateful orchestration of multiple automation scripts and generate new task sequences from existing automation scripts.

In some embodiments of the present disclosure, a system may be used for bootstrapping dynamic orchestration workflow for stateful automation tasks.

Some embodiments of the present disclosure may include a method to generate a contextual execution dependency graph from stateful declarative automation task definitions, runtime execution logs, and supervised repairs. In some embodiments, the executional dependency graph may capture any dependencies between tasks present in declarative automation scripts. In some embodiments, the graph may be derived from variant-based process mining of step sequences in automation scripts (e.g., nested scripts) and/or user execution logs that capture the sequence of automation scripts executed.

Some embodiments of the present disclosure may include a method to bootstrap evaluator pipelines and actuator skills pipelines for declarative automation agents. In some embodiments, these pipelines may be derived from stateful declarative automation task definitions. In some embodiments, such a method may include identifying intent, entities, and sample utterances to invoke tasks from developer added artifacts, developer script comments, and/or artificial intelligence (AI) based discovery; tasks may be invoked based on, for example, module names. In some embodiments, such a method may include automatically generating digital agents or workers; an agent may be generated for each subtask and may execute its subtask by gathering the required resources from an executional context, from a developer, from a user, or the like. In some embodiments, such a method may include automatically constructing a payload; the payload may be based on, for example, domain knowledge. In some embodiments, such a method may include generating one or more additional skills pipelines within an agent actuation component; the additional pipelines may be used, for example, to conduct one or more status checks (e.g., for sync calls), approval flows, alerts based on metadata information, and the like.

Some embodiments of the present disclosure may include a method to infer a sequence of stateful automation agents for a given user goal based on contextual execution dependency graph. In some embodiments, the method may include identifying the sequence of state transitions and the associated agents that execute the task using the intents present in a user request matching a subset of agents as well as using the agents that perform the prerequisite tasks as determined by the executional dependency graph. In some embodiments, automation scripts (e.g., automation playbooks) for information technology operations (ITops) may require stateful execution (e.g., if any job executed changes the state of the system); the executional dependency graph may provide a set of feasible sequences for the stateful execution. In some embodiments, feedback (e.g., user feedback) about results (e.g., success or failure) may be leveraged to generate dependency conditioned on the results as recorded in the code, logs, or other information.

Some embodiments of the present disclosure may include generating an executional dependency graph, generating an agent for a task, and leveraging the executional dependency graph for a runtime orchestration framework.

In some embodiments, an executional dependency graph may be generated from one or more sets of declarative definition automation scripts.

In some embodiments, agent generation may include custom evaluation pipelines and/or custom actuator pipelines for each task. In some embodiments, agent generation may include identifying entities, intent, and sample utterances to invoke tasks from developed and added artifacts, code comments, and/or AI discovery. In some embodiments, the generated agents may be triggered when NL utterances from an end user matches the intent for its subtask and/or if the agents are able to execute the subtask (e.g., by gathering the required entities from either the executional context or an end user).

In some embodiments, integrating the agent generation into the tooling may enable a user (e.g., an end user) authoring a service to refine the generated NL interface and/or entities. In some embodiments, agent generation may include automated construction of one or more payloads based on domain knowledge (e.g., separation of parameters and extra variables). In some embodiments, agent generation may include one or more status checks, approval flows, and/or bootstrapping alert skills pipelines.

In some embodiments, leveraging the executional dependency graph for a runtime orchestration framework may include identifying a sequence of state transitions and the associated agents that execute the task to affect that change; the identification may include using the intents present in the end-user request that match a subset of agents and/or using inferred agents. Inferred agents may be the agents that perform prerequisite subtasks determined by the executional dependency graph.

In some embodiments, leveraging the executional dependency graph may be used to enable systems and programs (e.g., the Watson® Orchestrate) to use stateful execution rather than stateless execution (e.g., a representational state transfer (REST) application programming interface (API)). In some embodiments, automation scripts (e.g., automation playbooks) for ITops may require stateful executions (e.g., if the job changes the state of the system during its execution), and the executional dependency graph may provide a set of feasible sequences. In some embodiments, user feedback may be added as data into the executional dependency graph.

In some embodiments of the present disclosure, digital agents may be generated or bootstrapped from one or more existing automation systems by examining the scripts, automation scripts, and/or the associated metadata which may be found in, for example, job templates and/or workflow job templates.

In some embodiments of the present disclosure, the agents may be generated by identifying intent and/or entities from user-added artifacts and/or AI-based discovery from automation scripts. Some embodiments of the present disclosure may include the generation of additional skills in the pipeline with agent actuation based on metadata information, for example, for status checks (e.g., for async calls), approval flows, and/or alerts.

In some embodiments of the present disclosure, user feedback may be integrated. The user feedback may be from a user (e.g., an end user and/or a developer) and may include, for example, information pertaining to supervised repairs; such information may be included into the orchestration automatically (e.g., repair information may be automatically included when a failure is resolved). The feedback may be leveraged to generate dependency conditioned on failure code, information, and/or logs (e.g., to involve a user in the loop).

A system in accordance with the present disclosure may include a memory and a processor in communication with the memory. The processor may be configured to perform operations. The operations may include receiving data and generating a contextual execution dependency graph with said data. The operations may include producing agents with said data and calculating an agent sequence for said agents based at least in part on said contextual execution dependency graph. The operations may include executing an automation script using said agent sequence and said contextual execution dependency graph.

In some embodiments of the present disclosure, the contextual execution dependency graph may be generated using stateful declarative automation task definitions, runtime execution logs, and/or supervised repair information.

In some embodiments of the present disclosure, the automation script may be a stateful execution automation script. In some embodiments, the automation script may be an automation playbook. In some embodiments, the automation script may use stateful execution task history so as to anticipate one or more changes to the state of the system a task is executed in. In some embodiments, the contextual execution dependency graph may provide a set of feasible sequences based in part on the anticipated one or more changes to the state of the system based on the task to be executed; the contextual execution dependency graph may be used in developing the automation script so as to consider anticipated changes to the state of the system. In some embodiments, the automation script may be developed for use by ITops.

In some embodiments of the present disclosure, the operations may include deriving declarative automation scripts from the execution logs and including the declarative automation scripts in the data.

In some embodiments, the operations may further include capturing automation scripts in the execution logs. In some embodiments, the declarative automation scripts may be derived from variant-based process mining of one or more sequences of steps in the automation scripts; in some embodiments, automation scripts used for the variant-based process mining may include nested scripts.

In some embodiments of the present disclosure, the producing agents operation may include identifying intent, entities, and sample utterances in a source. The source may include artifacts, script comments, and/or artificial intelligence discovery information.

In some embodiments of the present disclosure, the operations may include providing a skills pipeline for the agents. In some embodiments, the skills pipeline may be constructed from stateful declarative automation task definitions. In some embodiments, the agents may be declarative automation agents. In some embodiments, the skills pipeline may be an actuator skills pipeline. In some embodiments, the skills pipeline may be an evaluator pipeline. In some embodiments, the skills pipeline may include one or more bootstrap evaluator and actuator skills pipelines. In some embodiments, the skills pipeline may be constructed within agent actuation. In some embodiments, the skills pipeline may enable a task or subtask status check (e.g., for sync calls), an approval flow, and/or alerts based on metadata.

In some embodiments of the present disclosure, the operations may include identifying intents in a request and matching the intents to at least one of the agents based on the contextual execution dependency graph.

In some embodiments of the present disclosure, the operations may include correlating a sequence of state transitions with the agent sequence. In some embodiments, intents identified in a request may be used to correlate the sequence of state transitions with the agent sequence. In some embodiments, at least one of the agents may perform prerequisite subtasks as determined by the contextual execution dependency graph.

In some embodiments of the present disclosure, the operations may include providing a set of feasible sequences of execution of a task in a system in the contextual execution dependency graph.

In some embodiments of the present disclosure, the operations may include constructing a payload based on domain knowledge. In some embodiments, the domain knowledge may be sourced from an open-source tool (e.g., Ansible). In some embodiments, the payload may be constructed automatically. In some embodiments, the domain knowledge may include separation of parameters, variables, and/or extra variables.

In some embodiments of the present disclosure, the agents may be produced automatically. In some embodiments of the present disclosure, the agents may be digital worker agents. In some embodiments, each of the agents may be generated for a subtask; in some embodiments, each agent may be generated for a particular subtask. In some embodiments, the agents may execute their tasks or subtasks by gathering the required entities from an executional context and/or a user (e.g., a developer and/or an end user).

In some embodiments of the present disclosure, the agent sequence may be calculated for a goal. In some embodiments, the goal may be a specific goal. In some embodiments, the goal may be selected by a user (e.g., a developer and/or an end user).

FIG.1illustrates a system100for bootstrapping dynamic orchestration workflow in accordance with some embodiments of the present disclosure. The system100includes inputs from a database102, automation scripts104, and a user132to generate and/or direct digital agents140to execute a task.

Data in the database102may include automation user logs. The database102may submit the data to a task execution dependency graph (TEDG) miner110. Automation scripts104, which may include declarative definitions of automation scripts, may also be submitted to the TEDG miner110. The TEDG miner110may use the data from the database102(e.g., the automation user logs) and the automation scripts104(e.g., the declarative definition of automation scripts) to generate an executional dependency graph112. The executional dependency graph112may be submitted to an orchestrator130.

The automation scripts104may also be submitted to an automation platform120. The automation platform120may engage in pipeline generation122using the automation scripts104. Agents involved in the pipeline generation122may evaluate the request and actuate a response. The agents may evaluate the request of the automation platform120to identify whether the resources are available to generate digital agents140for the request. The pipeline generation122agents may evaluate that the resources are available and may actuate the pipeline generation122to generate the digital agents140.

A user132may submit a request or inquiry to the orchestrator130. The request may be a NL request such that the orchestrator130would use a NL processing system (such as the natural language processing system712ofFIG.7) to parse the request. The request from the user132may activate the orchestrator130to communicate with the digital agents140and direct the digital agents140to respond. The response of the digital agents140may be based on an NL evaluation of the particular request and the confidence of each of the digital agents140with respect to its ability to actuate a proper response to the request from the user132. The digital agents140may respond with their respective confidence levels regarding the likelihood of properly responding to the request and/or parts of the request. The orchestrator130may direct the digital agents140to actuate the request from the user132.

The request from the user132may have one or more components. The digital agents140may be able to handle an entire request, components thereof, either, or both. The orchestrator130may direct individual digital agents140to respond to the request or specific components thereof. For example, the orchestrator130may direct one of the digital agents140to respond to a first request and three digital agents140to respond to various components of a second request. The orchestrator130may direct a sequenced order of actuation of a request with (or separated into) multiple components; the orchestrator130may direct which of the digital agents140will execute each component of the request as well as the order of execution of each of the components by their respective digital agents140.

The digital agents140may execute the request as directed by the orchestrator130. The digital agents140may submit a result150from the request to the automation platform120and/or to a display for the user132.

FIG.2depicts a method200for generation of an executional dependency graph in accordance with some embodiments of the present disclosure. The method200includes inputting210scripts and user logs, determining220one or more workflow variants, obtaining230dependency probability, applying240a threshold, and generating250a dependency graph252.

The scripts in the inputting210operation may include one or more automation scripts212,214, and216. The automation scripts212,214, and216may each include instructions for one or more tasks; for example, a first automation script212may have instructions for tasks A, B, and C, a second automation script214may have instructions for tasks A, C, and D, and a third automation script216may have instructions for tasks D and E. The user logs may include one or more scripts that each user has run; for example, a first user may have run the first automation script212(e.g., tasks A, B, and C) as well as the third automation script216(e.g., tasks D and E), a second user may have run the second automation script214(e.g., tasks A, C, and D), a third user may have run the third automation script216, and a fourth user may have run the first automation script212and the third automation script216.

The one or more workflow variants in the determining220operation may identify and/or map how tasks are related; for example, in the first automation script, tasks A, B, and C are related as the tasks are all in the first automation script212; the relation may be described via the order in which the tasks are performed. All of the automation scripts may be identified and/or mapped together to identify interrelationships. For example, task C is common to the first and second automation scripts212and214, task D is common to the second and third automation scripts214and216, and task A may precede either task B or task C; an automation workflow variant map222for these automation scripts may, for example, connect task A to both task B and task C, task C to task D, and task D to task E.

In some embodiments of the present disclosure, one or more of the workflow variants in the determining220operation may be automation workflow variants.

The obtaining230the dependency probability may include determining the probability that one task is executed before another task. This probability may be calculated using Equation 1:
P(T1,T2)=ΣiP(T1(s<i),T2(i))  Equation 1:

wherein P is probability, T1is the first task, T2is the second task, and s is a step. The applying240the threshold operation may include applying240a threshold R to the probability calculation (e.g., obtained using Equation 1) to obtain an artifact graph G. The threshold application may be expressed as shown in Equation 2:
G(T1,T2)=1 ifP(T1,T2)>R, elseG(T1,T2)=0  Equation 2:

wherein G is an artifact graph and R is a threshold. G may be an artifact graph such that if a dependency exists between first task T1and second task T2, then G is equal to one, and if no such dependency exists between first task T1and second task T2, then G is equal to zero. In some embodiments, if G is equal to one, then first task T1is a prerequisite of second task T2, and if G is equal to zero, then first task T1is not a prerequisite of second task T2.

Applying240the threshold to the artifact graph G may result in generating250the dependency graph252. The dependency graph252may show which tasks are prerequisites of which other tasks and/or which tasks have no prerequisites.

FIG.3illustrates a method300for agent evaluation and actuation pipeline generation in accordance with some embodiments of the present disclosure. The method300includes gathering310information, preparing320a payload, obtaining330approvals, invoking340an application programming interface (API), checking350async status, and rendering360any applicable alerts.

Gathering310information may include gathering310, for example, a job template description, one or more task names, other artifacts (e.g., artifacts used to generate NL intent classification models), automation script variables, variables from extra-variant fields (e.g., user provided fields, filled out form information, entities from user input extraction, context received from a previous task, and the like. Information may be gathered by an agent such as, for example, a digital agent.

Preparing320the payload may include, for example, determining which parameters are reserved and which parameters are not reserved.

Obtaining330approvals may include, for example, obtaining the email identification of an approver. Obtaining330approvals and/or related information may be based on metadata.

Checking350async status may include watching the async status for updates (e.g., real time status changes to the async status).

Rendering360applicable alerts may include, for example, obtaining alerting addresses (e.g., addresses corresponding to error codes) which may be provided by a user (e.g., a developer or an end user). Rendering360applicable alerts may, for example, result in zero alerts (e.g., there are no applicable alerts), one alert, or multiple alerts.

FIG.4depicts a method400for identifying a sequence of agents in accordance with some embodiments of the present disclosure. The method400includes selecting410agents with an orchestrator (e.g., orchestrator130ofFIG.1) and directing420the agents based on the intent of a user query as parsed by a NL processor (e.g., natural language processing system712ofFIG.7); the intent of the user query may be assessed using confidence scores.

The method400includes inputting430data into a system (e.g., system100ofFIG.1). The data input into the system may include agent data (e.g., agent selection, direction to agents, and/or confidence scores) and graph data (e.g., an execution dependency graph such as the dependency graph252ofFIG.2).

The method400includes determining440a set of inferred agents. Determining440inferred agents may consider, for example, the dependencies of each direct agent. The method400includes ordering450the agents; the agents may be ordered based on both direct data (e.g., an established fact that A happens before B) as well as inferred data (e.g., an assessment based on an execution dependency graph that D most likely occurs after A and before B). Ordering450the agents may use an algorithm based on topological ordering using a directed acyclic graph (DAG) and use, for example, Kahn's topological sorting algorithm.

A method in accordance with some embodiments of the present disclosure may include receiving data and generating a contextual execution dependency graph with the data. The method may include producing agents with the data and calculating an agent sequence for the agents based at least in part on the contextual execution dependency graph. The method may include executing an automation script using the agent sequence and the contextual execution dependency graph.

In some embodiments of the present disclosure, the contextual execution dependency graph may be generated using stateful declarative automation task definitions, runtime execution logs, and/or supervised repair information.

In some embodiments of the present disclosure, the automation script may be a stateful execution automation script. In some embodiments, the automation script may be an automation playbook. In some embodiments, the automation script may use stateful execution task history so as to anticipate one or more changes to the state of the system a task is executed in. In some embodiments, the contextual execution dependency graph may provide a set of feasible sequences based in part on the anticipated one or more changes to the state of the system based on the task to be executed; the contextual execution dependency graph may be used in developing the automation script so as to consider anticipated changes to the state of the system. In some embodiments, the automation script may be developed for use by ITops.

In some embodiments of the present disclosure, the method may include deriving declarative automation scripts from the execution logs and including the declarative automation scripts in the data.

In some embodiments, the method may further include capturing automation scripts in the execution logs. In some embodiments, the declarative automation scripts may be derived from variant-based process mining of one or more sequences of steps in the automation scripts; in some embodiments, automation scripts used for the variant-based process mining may include nested scripts.

In some embodiments of the present disclosure, the producing agents operation may include identifying intent, entities, and sample utterances in a source. The source may include artifacts, script comments, and/or artificial intelligence discovery information.

In some embodiments of the present disclosure, the method may include providing a skills pipeline for the agents. In some embodiments, the skills pipeline may be constructed from stateful declarative automation task definitions. In some embodiments, the agents may be declarative automation agents. In some embodiments, the skills pipeline may be an actuator skills pipeline. In some embodiments, the skills pipeline may be an evaluator pipeline. In some embodiments, the skills pipeline may include one or more bootstrap evaluator and actuator skills pipelines. In some embodiments, the skills pipeline may be constructed within agent actuation. In some embodiments, the skills pipeline may enable a task or subtask status check (e.g., for sync calls), an approval flow, and/or alerts based on metadata.

In some embodiments of the present disclosure, the method may include identifying intents in a request and matching the intents to at least one of the agents based on the contextual execution dependency graph.

In some embodiments of the present disclosure, the method may include correlating a sequence of state transitions with the agent sequence. In some embodiments, intents identified in a request may be used to correlate the sequence of state transitions with the agent sequence. In some embodiments, at least one of the agents may perform prerequisite subtasks as determined by the contextual execution dependency graph.

In some embodiments of the present disclosure, the method may include providing a set of feasible sequences of execution of a task in a system in the contextual execution dependency graph.

In some embodiments of the present disclosure, the method may include constructing a payload based on domain knowledge. In some embodiments, the domain knowledge may be sourced from an open-source tool (e.g., Ansible). In some embodiments, the payload may be constructed automatically. In some embodiments, the domain knowledge may include separation of parameters, variables, and/or extra variables.

In some embodiments of the present disclosure, the agents may be produced automatically. In some embodiments of the present disclosure, the agents may be digital worker agents. In some embodiments, each of the agents may be generated for a subtask; in some embodiments, each agent may be generated for a particular subtask. In some embodiments, the agents may execute their tasks or subtasks by gathering the required entities from an executional context and/or a user (e.g., a developer and/or an end user).

In some embodiments of the present disclosure, the agent sequence may be calculated for a goal. In some embodiments, the goal may be a specific goal. In some embodiments, the goal may be selected by a user (e.g., a developer and/or an end user).

FIG.5illustrates a method500for dynamic orchestration workflow in accordance with some embodiments of the present disclosure. The method500may be performed by a system for bootstrapping dynamic orchestration workflow (such as system100ofFIG.1).

The method500includes receiving510data. The data may include, for example, automation scripts, user logs, stateful declarative automation task definitions, runtime execution logs, supervised repair logs, task dependency information, variant-based process mining sequence step data, automation script sequence data, artifacts, script comments, intent data, entity data, sample utterances, training data, domain knowledge, parameters, variables, alert information, query data, automation scripts (e.g., automation playbooks), developer-supplied content, AI-supplied content, and the like.

The method500includes generating522a dependency graph (such as dependency graph252ofFIG.2) with the data; in some embodiments, the dependency graph may be a contextual execution dependency graph. The method500includes producing532agents with the data. The method500includes calculating534an agent sequence for the agents; the calculating534may incorporate information from the dependency graph. The method500includes constructing540an automation script (e.g., a sequence of automation scripts tailored to a user inquiry) based on the dependency graph and the calculated sequence.

A computer program product in accordance with some embodiments of the present disclosure may include a computer readable storage medium having program instructions embodied therewith. The program instructions may be executable by a processor to cause the processor to perform a function. The function may include receiving data and generating a contextual execution dependency graph with said data. The function may include producing agents with said data and calculating an agent sequence for said agents based at least in part on said contextual execution dependency graph. The function may include executing an automation script using said agent sequence and said contextual execution dependency graph.

In some embodiments of the present disclosure, the contextual execution dependency graph may be generated using stateful declarative automation task definitions, runtime execution logs, and/or supervised repair information.

In some embodiments of the present disclosure, the automation script may be a stateful execution automation script. In some embodiments, the automation script may be an automation playbook. In some embodiments, the automation script may use stateful execution task history so as to anticipate one or more changes to the state of the system a task is executed in. In some embodiments, the contextual execution dependency graph may provide a set of feasible sequences based in part on the anticipated one or more changes to the state of the system based on the task to be executed; the contextual execution dependency graph may be used in developing the automation script so as to consider anticipated changes to the state of the system. In some embodiments, the automation script may be developed for use by ITops.

In some embodiments of the present disclosure, the function may include deriving declarative automation scripts from the execution logs and including the declarative automation scripts in the data.

In some embodiments, the function may further include capturing automation scripts in the execution logs. In some embodiments, the declarative automation scripts may be derived from variant-based process mining of one or more sequences of steps in the automation scripts; in some embodiments, automation scripts used for the variant-based process mining may include nested scripts.

In some embodiments of the present disclosure, the producing agents operation may include identifying intent, entities, and sample utterances in a source. The source may include artifacts, script comments, and/or artificial intelligence discovery information.

In some embodiments of the present disclosure, the function may include providing a skills pipeline for the agents. In some embodiments, the skills pipeline may be constructed from stateful declarative automation task definitions. In some embodiments, the agents may be declarative automation agents. In some embodiments, the skills pipeline may be an actuator skills pipeline. In some embodiments, the skills pipeline may be an evaluator pipeline. In some embodiments, the skills pipeline may include one or more bootstrap evaluator and actuator skills pipelines. In some embodiments, the skills pipeline may be constructed within agent actuation. In some embodiments, the skills pipeline may enable a task or subtask status check (e.g., for sync calls), an approval flow, and/or alerts based on metadata.

In some embodiments of the present disclosure, the function may include identifying intents in a request and matching the intents to at least one of the agents based on the contextual execution dependency graph.

In some embodiments of the present disclosure, the function may include correlating a sequence of state transitions with the agent sequence. In some embodiments, intents identified in a request may be used to correlate the sequence of state transitions with the agent sequence. In some embodiments, at least one of the agents may perform prerequisite subtasks as determined by the contextual execution dependency graph.

In some embodiments of the present disclosure, the function may include providing a set of feasible sequences of execution of a task in a system in the contextual execution dependency graph.

In some embodiments of the present disclosure, the function may include constructing a payload based on domain knowledge. In some embodiments, the domain knowledge may be sourced from an open-source tool (e.g., Ansible). In some embodiments, the payload may be constructed automatically. In some embodiments, the domain knowledge may include separation of parameters, variables, and/or extra variables.

In some embodiments of the present disclosure, the agents may be produced automatically. In some embodiments of the present disclosure, the agents may be digital worker agents. In some embodiments, each of the agents may be generated for a subtask; in some embodiments, each agent may be generated for a particular subtask. In some embodiments, the agents may execute their tasks or subtasks by gathering the required entities from an executional context and/or a user (e.g., a developer and/or an end user).

In some embodiments of the present disclosure, the agent sequence may be calculated for a goal. In some embodiments, the goal may be a specific goal. In some embodiments, the goal may be selected by a user (e.g., a developer and/or an end user).

Some embodiments of the present disclosure may utilize a natural language parsing and/or subparsing component. Thus, aspects of the disclosure may relate to natural language processing. Accordingly, an understanding of the embodiments of the present invention may be aided by describing embodiments of natural language processing systems and the environments in which these systems may operate. Turning now toFIG.6, illustrated is a block diagram of an example computing environment600in which illustrative embodiments of the present disclosure may be implemented. In some embodiments, the computing environment600may include a remote device602and a host device622.

Consistent with various embodiments of the present disclosure, the host device622and the remote device602may be computer systems. The remote device602and the host device622may include one or more processors606and626and one or more memories608and628, respectively. The remote device602and the host device622may be configured to communicate with each other through an internal or external network interface604and624. The network interfaces604and624may be modems or network interface cards. The remote device602and/or the host device622may be equipped with a display such as a monitor. Additionally, the remote device602and/or the host device622may include optional input devices (e.g., a keyboard, mouse, scanner, or other input device) and/or any commercially available or custom software (e.g., browser software, communications software, server software, natural language processing software, search engine and/or web crawling software, filter modules for filtering content based upon predefined parameters, etc.). In some embodiments, the remote device602and/or the host device622may be servers, desktops, laptops, or hand-held devices.

The remote device602and the host device622may be distant from each other and communicate over a network650. In some embodiments, the host device622may be a central hub from which remote device602can establish a communication connection, such as in a client-server networking model. Alternatively, the host device622and remote device602may be configured in any other suitable networking relationship (e.g., in a peer-to-peer configuration or using any other network topology).

In some embodiments, the network650can be implemented using any number of any suitable communications media. For example, the network650may be a wide area network (WAN), a local area network (LAN), an Internet, or an intranet. In certain embodiments, the remote device602and the host device622may be local to each other and communicate via any appropriate local communication medium. For example, the remote device602and the host device622may communicate using a local area network (LAN), one or more hardwire connections, a wireless link or router, or an intranet. In some embodiments, the remote device602and the host device622may be communicatively coupled using a combination of one or more networks and/or one or more local connections. For example, the remote device602may be hardwired to the host device622(e.g., connected with an Ethernet cable) or the remote device602may communicate with the host device using the network650(e.g., over the Internet).

In some embodiments, the network650can be implemented within a cloud computing environment or using one or more cloud computing services. Consistent with various embodiments, a cloud computing environment may include a network-based, distributed data processing system that provides one or more cloud computing services. Further, a cloud computing environment may include many computers (e.g., hundreds or thousands of computers or more) disposed within one or more data centers and configured to share resources over the network650.

In some embodiments, the remote device602may enable a user to input (or may input automatically with or without a user) a query (e.g., is any part of a recording artificial, etc.) to the host device622in order to identify subdivisions of a recording that include a particular subject. For example, the remote device602may include a query module610and a user interface (UI). The query module610may be in the form of a web browser or any other suitable software module, and the UI may be any type of interface (e.g., command line prompts, menu screens, graphical user interfaces). The UI may allow a user to interact with the remote device602to input, using the query module610, a query to the host device622, which may receive the query.

In some embodiments, the host device622may include a natural language processing system632. The natural language processing system632may include a natural language processor634, a search application636, and a recording analysis module638. The natural language processor634may include numerous subcomponents, such as a tokenizer, a part-of-speech (POS) tagger, a semantic relationship identifier, and a syntactic relationship identifier. An example natural language processor is discussed in more detail in reference toFIG.7.

The search application636may be implemented using a conventional or other search engine and may be distributed across multiple computer systems. The search application636may be configured to search one or more databases (e.g., repositories) or other computer systems for content that is related to a query submitted by the remote device602. For example, the search application636may be configured to search dictionaries, papers, and/or archived reports to help identify a particular subject related to a query provided for a class. The recording analysis module638may be configured to analyze a recording to identify a particular subject (e.g., of the query). The recording analysis module638may include one or more modules or units, and may utilize the search application636, to perform its functions (e.g., to identify a particular subject in a recording), as discussed in more detail in reference toFIG.7.

In some embodiments, the host device622may include an image processing system642. The image processing system642may be configured to analyze images associated with a recording to create an image analysis. The image processing system642may utilize one or more models, modules, or units to perform its functions (e.g., to analyze the images associated with the recording and generate an image analysis). For example, the image processing system642may include one or more image processing models that are configured to identify specific images related to a recording. The image processing models may include a section analysis module644to analyze single images associated with the recording and to identify the location of one or more features of the single images. As another example, the image processing system642may include a subdivision analysis module646to group multiple images together identified to have a common feature of the one or more features. In some embodiments, image processing modules may be implemented as software modules. For example, the image processing system642may include a section analysis module and a subdivision analysis module. In some embodiments, a single software module may be configured to analyze the image(s) using image processing models.

In some embodiments, the image processing system642may include a threshold analysis module648. The threshold analysis module648may be configured to compare the instances of a particular subject identified in a subdivision of sections of the recording against a threshold number of instances. The threshold analysis module648may then determine if the subdivision should be displayed to a user.

In some embodiments, the host device may have an optical character recognition (OCR) module. The OCR module may be configured to receive a recording sent from the remote device602and perform optical character recognition (or a related process) on the recording to convert it into machine-encoded text so that the natural language processing system632may perform NLP on the report. For example, a remote device602may transmit a video of a medical procedure to the host device622. The OCR module may convert the video into machine-encoded text and then the converted video may be sent to the natural language processing system632for analysis. In some embodiments, the OCR module may be a subcomponent of the natural language processing system632. In other embodiments, the OCR module may be a standalone module within the host device622. In still other embodiments, the OCR module may be located on the remote device602and may perform OCR on the recording before the recording is sent to the host device622.

WhileFIG.6illustrates a computing environment600with a single host device622and a remote device602, suitable computing environments for implementing embodiments of this disclosure may include any number of remote devices and host devices. The various models, modules, systems, and components illustrated inFIG.6may exist, if at all, across a plurality of host devices and remote devices. For example, some embodiments may include two host devices. The two host devices may be communicatively coupled using any suitable communications connection (e.g., using a WAN, a LAN, a wired connection, an intranet, or the Internet). The first host device may include a natural language processing system configured to receive and analyze a video, and the second host device may include an image processing system configured to receive and analyze .GIFS to generate an image analysis.

It is noted thatFIG.6is intended to depict the representative major components of an exemplary computing environment600. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG.6, components other than or in addition to those shown inFIG.6may be present, and the number, type, and configuration of such components may vary.

Referring now toFIG.7, shown is a block diagram of an exemplary system architecture700including a natural language processing system712configured to analyze data to identify objects of interest (e.g., possible anomalies, natural data, etc.), in accordance with embodiments of the present disclosure. In some embodiments, a remote device (such as remote device602ofFIG.6) may submit a text segment and/or a corpus to be analyzed to the natural language processing system712which may be housed on a host device (such as host device622ofFIG.6). Such a remote device may include a client application708, which may itself involve one or more entities operable to generate or modify information associated with the recording and/or query that is then dispatched to a natural language processing system712via a network755.

Consistent with various embodiments of the present disclosure, the natural language processing system712may respond to text segment and corpus submissions sent by a client application708. Specifically, the natural language processing system712may analyze a received text segment and/or corpus (e.g., video, news article, etc.) to identify an object of interest. In some embodiments, the natural language processing system712may include a natural language processor714, data sources724, a search application728, and a query module730. The natural language processor714may be a computer module that analyzes the recording and the query. The natural language processor714may perform various methods and techniques for analyzing recordings and/or queries (e.g., syntactic analysis, semantic analysis, etc.). The natural language processor714may be configured to recognize and analyze any number of natural languages. In some embodiments, the natural language processor714may group one or more sections of a text into one or more subdivisions. Further, the natural language processor714may include various modules to perform analyses of text or other forms of data (e.g., recordings, etc.). These modules may include, but are not limited to, a tokenizer716, a part-of-speech (POS) tagger718(e.g., which may tag each of the one or more sections of text in which the particular object of interest is identified), a semantic relationship identifier720, and a syntactic relationship identifier722.

In some embodiments, the tokenizer716may be a computer module that performs lexical analysis. The tokenizer716may convert a sequence of characters (e.g., images, sounds, etc.) into a sequence of tokens. A token may be a string of characters included in a recording and categorized as a meaningful symbol. Further, in some embodiments, the tokenizer716may identify word boundaries in a body of text and break any text within the body of text into their component text elements, such as words, multiword tokens, numbers, and punctuation marks. In some embodiments, the tokenizer716may receive a string of characters, identify the lexemes in the string, and categorize them into tokens.

Consistent with various embodiments, the POS tagger718may be a computer module that marks up a word in a recording to correspond to a particular part of speech. The POS tagger718may read a passage or other text in natural language and assign a part of speech to each word or other token. The POS tagger718may determine the part of speech to which a word (or other spoken element) corresponds based on the definition of the word and the context of the word. The context of a word may be based on its relationship with adjacent and related words in a phrase, sentence, or paragraph. In some embodiments, the context of a word may be dependent on one or more previously analyzed body of texts and/or corpora (e.g., the content of one text segment may shed light on the meaning of one or more objects of interest in another text segment). Examples of parts of speech that may be assigned to words include, but are not limited to, nouns, verbs, adjectives, adverbs, and the like. Examples of other part of speech categories that POS tagger718may assign include, but are not limited to, comparative or superlative adverbs, wh-adverbs, conjunctions, determiners, negative particles, possessive markers, prepositions, wh-pronouns, and the like. In some embodiments, the POS tagger718may tag or otherwise annotate tokens of a recording with part of speech categories. In some embodiments, the POS tagger718may tag tokens or words of a recording to be parsed by the natural language processing system712.

In some embodiments, the semantic relationship identifier720may be a computer module that may be configured to identify semantic relationships of recognized subjects (e.g., words, phrases, images, etc.) in a body of text/corpus. In some embodiments, the semantic relationship identifier720may determine functional dependencies between entities and other semantic relationships.

Consistent with various embodiments, the syntactic relationship identifier722may be a computer module that may be configured to identify syntactic relationships in a body of text/corpus composed of tokens. The syntactic relationship identifier722may determine the grammatical structure of sentences such as, for example, which groups of words are associated as phrases and which word is the subject or object of a verb. The syntactic relationship identifier722may conform to formal grammar.

In some embodiments, the natural language processor714may be a computer module that may group sections of a recording into subdivisions and generate corresponding data structures for one or more subdivisions of the recording. For example, in response to receiving a text segment at the natural language processing system712, the natural language processor714may output subdivisions of the text segment as data structures. In some embodiments, a subdivision may be represented in the form of a graph structure. To generate the subdivision, the natural language processor714may trigger computer modules716-722.

In some embodiments, the output of natural language processor714may be used by search application728to perform a search of a set of (i.e., one or more) corpora to retrieve one or more subdivisions including a particular subject associated with a query (e.g., in regard to an object of interest) and send the output to an image processing system and to a comparator. As used herein, a corpus may refer to one or more data sources, such as a data source724ofFIG.7. In some embodiments, data sources724may include video libraries, data warehouses, information corpora, data models, and/or document repositories. In some embodiments, the data sources724may include an information corpus726. The information corpus726may enable data storage and retrieval. In some embodiments, the information corpus726may be a subject repository that houses a standardized, consistent, clean, and integrated list of images and text. For example, an information corpus726may include teaching presentations that include step by step images and comments on how to perform a function. Data may be sourced from various operational systems. Data stored in an information corpus726may be structured in a way to specifically address reporting and analytic requirements. In some embodiments, an information corpus726may be a relational database.

In some embodiments, a query module730may be a computer module that identifies objects of interest within sections of a text, or other forms of data. In some embodiments, a query module730may include a request feature identifier732and a valuation identifier734. When a query is received by the natural language processing system712, the query module730may be configured to analyze text using natural language processing to identify an object of interest. The query module730may first identity one or more objects of interest in the text using the natural language processor714and related subcomponents716-722. After identifying the one or more objects of interest, the request feature identifier732may identify one or more common objects of interest (e.g., anomalies, artificial content, natural data, etc.) present in sections of the text (e.g., the one or more text segments of the text). In some embodiments, the common objects of interest in the sections may be the same object of interest that is identified. Once a common object of interest is identified, the request feature identifier732may be configured to transmit the text segments that include the common object of interest to an image processing system (shown inFIG.6) and/or to a comparator.

After identifying common objects of interest using the request feature identifier732, the query module may group sections of text having common objects of interest. The valuation identifier734may then provide a value to each text segment indicating how close the object of interest in each text segment is related to one another (and thus indicates artificial and/or real data). In some embodiments, the particular subject may have one or more of the common objects of interest identified in the one or more sections of text. After identifying a particular object of interest relating to the query (e.g., identifying that one or more of the common objects of interest may be an anomaly), the valuation identifier734may be configured to transmit the criterion to an image processing system (shown inFIG.6) and/or to a comparator (which may then determine the validity of the common and/or particular objects of interest).

It is to be understood that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present disclosure are capable of being implemented in conjunction with any other type of computing environment currently known or that which may be later developed.

Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider.

Broad network access: capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of portion independence in that the consumer generally has no control or knowledge over the exact portion of the provided resources but may be able to specify portion at a higher level of abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly release to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.

Measured service: cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

Service models are as follows:

Software as a Service (SaaS): the capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based e-mail). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities with the possible exception of limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but the consumer has control over the deployed applications and possibly application hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications, and the consumer possibly has limited control of select networking components (e.g., host firewalls).

Deployment models are as follows:

Private cloud: the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and/or compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).

A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

FIG.8illustrates a cloud computing environment810in accordance with embodiments of the present disclosure. As shown, cloud computing environment810includes one or more cloud computing nodes800with which local computing devices used by cloud consumers such as, for example, personal digital assistant (PDA) or cellular telephone800A, desktop computer800B, laptop computer800C, and/or automobile computer system800N may communicate. Nodes800may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as private, community, public, or hybrid clouds as described hereinabove, or a combination thereof.

This allows cloud computing environment810to offer infrastructure, platforms, and/or software as services for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that the types of computing devices800A-N shown inFIG.8are intended to be illustrative only and that computing nodes800and cloud computing environment810can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser).

FIG.9illustrates abstraction model layers900provided by cloud computing environment810(FIG.8) in accordance with embodiments of the present disclosure. It should be understood in advance that the components, layers, and functions shown inFIG.9are intended to be illustrative only and embodiments of the disclosure are not limited thereto. As depicted below, the following layers and corresponding functions are provided.

Hardware and software layer915includes hardware and software components. Examples of hardware components include: mainframes902; RISC (Reduced Instruction Set Computer) architecture-based servers904; servers906; blade servers908; storage devices911; and networks and networking components912. In some embodiments, software components include network application server software914and database software916.

Virtualization layer920provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers922; virtual storage924; virtual networks926, including virtual private networks; virtual applications and operating systems928; and virtual clients930.

In one example, management layer940may provide the functions described below. Resource provisioning942provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and pricing944provide cost tracking as resources and are utilized within the cloud computing environment as well as billing or invoicing for consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks as well as protection for data and other resources. User portal946provides access to the cloud computing environment for consumers and system administrators. Service level management948provides cloud computing resource allocation and management such that required service levels are met. Service level agreement (SLA) planning and fulfillment950provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.

Workloads layer960provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation962; software development and lifecycle management964; virtual classroom education delivery966; data analytics processing968; transaction processing970; and bootstrapping dynamic orchestration workflow for stateful automation tasks972.

FIG.10illustrates a high-level block diagram of an example computer system1001that may be used in implementing one or more of the methods, tools, and modules, and any related functions, described herein (e.g., using one or more processor circuits or computer processors of the computer) in accordance with embodiments of the present disclosure. In some embodiments, the major components of the computer system1001may comprise a processor1002with one or more central processing units (CPUs)1002A,1002B,1002C, and1002D, a memory subsystem1004, a terminal interface1012, a storage interface1016, an I/O (Input/Output) device interface1014, and a network interface1018, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus1003, an I/O bus1008, and an I/O bus interface unit1010.

The computer system1001may contain one or more general-purpose programmable CPUs1002A,1002B,1002C, and1002D, herein generically referred to as the CPU1002. In some embodiments, the computer system1001may contain multiple processors typical of a relatively large system; however, in other embodiments, the computer system1001may alternatively be a single CPU system. Each CPU1002may execute instructions stored in the memory subsystem1004and may include one or more levels of on-board cache.

System memory1004may include computer system readable media in the form of volatile memory, such as random access memory (RAM)1022or cache memory1024. Computer system1001may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system1026can be provided for reading from and writing to a non-removable, non-volatile magnetic media, such as a “hard drive.” Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), or an optical disk drive for reading from or writing to a removable, non-volatile optical disc such as a CD-ROM, DVD-ROM, or other optical media can be provided. In addition, memory1004can include flash memory, e.g., a flash memory stick drive or a flash drive. Memory devices can be connected to memory bus1003by one or more data media interfaces. The memory1004may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of various embodiments.

One or more programs/utilities1028, each having at least one set of program modules1030, may be stored in memory1004. The programs/utilities1028may include a hypervisor (also referred to as a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data, or some combination thereof, may include an implementation of a networking environment. Programs1028and/or program modules1030generally perform the functions or methodologies of various embodiments.

Although the memory bus1003is shown inFIG.10as a single bus structure providing a direct communication path among the CPUs1002, the memory subsystem1004, and the I/O bus interface1010, the memory bus1003may, in some embodiments, include multiple different buses or communication paths, which may be arranged in any of various forms, such as point-to-point links in hierarchical, star, or web configurations, multiple hierarchical buses, parallel and redundant paths, or any other appropriate type of configuration. Furthermore, while the I/O bus interface1010and the I/O bus1008are shown as single respective units, the computer system1001may, in some embodiments, contain multiple I/O bus interface units1010, multiple I/O buses1008, or both. Further, while multiple I/O interface units1010are shown, which separate the I/O bus1008from various communications paths running to the various I/O devices, in other embodiments some or all of the I/O devices may be connected directly to one or more system I/O buses1008.

In some embodiments, the computer system1001may be a multi-user mainframe computer system, a single-user system, a server computer, or similar device that has little or no direct user interface but receives requests from other computer systems (clients). Further, in some embodiments, the computer system1001may be implemented as a desktop computer, portable computer, laptop or notebook computer, tablet computer, pocket computer, telephone, smartphone, network switches or routers, or any other appropriate type of electronic device.

It is noted thatFIG.10is intended to depict the representative major components of an exemplary computer system1001. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG.10, components other than or in addition to those shown inFIG.10may be present, and the number, type, and configuration of such components may vary.

The present disclosure may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.

The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: 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), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, or other transmission media (e.g., light pulses passing through a fiber-optic cable) or electrical signals transmitted through a wire.

Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network, and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions 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 a 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). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.

Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. 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 readable program instructions.

These computer readable program instructions may be provided to a processor of a 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. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer implemented process such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

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 disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be accomplished as one step, executed concurrently, substantially concurrently, in a partially or wholly temporally overlapping manner, 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 carry out combinations of special purpose hardware and computer instructions.

Although the present disclosure has been described in terms of specific embodiments, it is anticipated that alterations and modifications thereof will become apparent to the skilled in the art. The descriptions of the various embodiments of the present disclosure have been presented for purposes of illustration but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application, or the technical improvement over technologies found in the marketplace or to enable others of ordinary skill in the art to understand the embodiments disclosed herein. Therefore, it is intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the disclosure.