Computer implemented method, computer program, and computer system (automation and execution of ontology-based workflow)
Ontology-based workflow automation and execution addresses the limitations of existing tools by allowing non-technical users to automate workflows across similar applications, enhancing usability and generalizability without relying on scripting languages.
Patent Information
- Application Number
- JP2024188571
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-10-26
- Filing Date
- 2024-10-25
- Publication Date
- 2025-05-13
AI Technical Summary
Existing workflow automation tools rely on scripting languages and require technical expertise to automate new skills, limiting usability and generalizability across different applications.
The implementation of ontology-based workflow automation and execution, which records workflow execution, selects an ontology tree based on similarity, constructs a skill tree, integrates it into existing skill trees, and executes skills with new data in response to user intents.
This approach allows for non-technical users to easily teach automation tools new skills, enables generalization of workflows across similar applications, and simplifies the automation process without relying on scripting languages.
Smart Images

Figure 2025074066000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates generally to workflow automation and, more particularly, to methods, systems, and computer program products for ontology-based workflow automation and execution.
[0002] Workflow automation refers to the process of automating the execution of a sequence of tasks (i.e., a workflow) by a computer. For example, a workflow may include all the tasks involved in composing an email (e.g., opening an email application, selecting "compose", selecting one or more addresses, entering text in the "subject" field, and entering text in the body of the email). Automating this workflow allows the execution of the entire sequence with one command and optional arguments (e.g., "send an email to Laura to remind her about the meeting on Tuesday"). Workflow automation is useful in a variety of contexts, but is particularly useful when used in conjunction with natural language-based virtual assistants that communicate with users using verbal commands.
[0003] A virtual assistant is a software agent that can perform various tasks or services for a user based on user input, such as commands or questions, including verbal ones. A skill is a named workflow, i.e., one or more tasks that the software application knows how to perform. Some skills are pre-programmed, while others may be added to a virtual assistant or automation implementation after the virtual assistant or automation implementation has been deployed for use.
[0004] An intent refers to an action to fulfill a user request, for example, by invoking one or more skills. An intent can be arguments, optionally with placeholders called slots. For example, the intent to invoke an email skill can be "send an email to Laura to remind her about the meeting on Tuesday." "Laura" and "remind her about the meeting on Tuesday" are arguments that are put into the slots when invoking the email skill.
[0005] An ontology is a representation, formal name and definition of the categories, properties and relationships between concepts, data and entities that substantiate a subject domain. An ontology is a way of organizing the properties of a subject domain and how those properties are related by defining a set of concepts and categories that represent the subject domain.
[0006] The illustrative embodiments recognize that organizations are investing in automating workflows with a variety of software tools, thus increasing the complexity of information technology infrastructure. Different applications have different interfaces and capabilities, and existing automation tools often rely on specialized scripting languages or visual sequencing interfaces that limit usability. Thus, there is a need for a workflow automation implementation that does not rely on scripting languages and that is simple for non-technical users to "teach" the automation tool new skills.
[0007] One existing automation approach involves the use of a desktop recorder that captures peripheral (e.g., mouse or keyboard) inputs and information about visual changes on the screen to capture a user's skill execution. This recording stream may be converted into a script that can be recreated on another user's desktop, thus implementing the automation. However, currently available robotic process automation (RPA) implementations cannot recognize steps in the recording that may vary between users. Existing RPA implementations often require users to explicitly code interactions in a specific logical sequence to enable effective generalization, which is difficult for non-technical users. Subject matter experts are often required to automate a specific workflow. In addition, recording-based tools that rely only on a specific input sequence (e.g., mouse clicks or keyboard inputs) for a specific application's user interface are fragile and break. Also, recording-based tools are application-specific (e.g., must be re-taught if a new application replaces an existing one), and thus the taught workflow is not easily generalizable between applications of the same type. For example, the steps in composing an email tend to be similar across different email applications, even if each application's user interface differs slightly. Therefore, it would be useful to automate the workflow once and generalize it across similar applications with minimal additional application-specific effort. Summary of the Invention [Problem to be solved by the invention]
[0008] Thus, the illustrative embodiments recognize that there is a need for a workflow automation implementation that is not dependent on scripting languages, where it is simple for a non-technical user to "teach" an automation tool new skills, and where it can be implemented by generalizing a single-user demonstration of an example workflow to be automated. [Means for solving the problem]
[0009] An exemplary embodiment provides for ontology-based workflow automation and execution. An embodiment includes recording an execution of a workflow including a skill, which generates workflow data. An embodiment includes using the workflow data to select an ontology tree having above a threshold amount of similarity with the workflow. An embodiment includes using the ontology tree and the workflow data to build a first skill tree corresponding to the workflow. An embodiment includes integrating the first skill tree into an existing skill tree of the application, which results in an integrated skill tree of the application. An embodiment includes executing the skill with the integrated skill tree and the new data in response to an intent to request execution of the skill with the new data. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs stored in one or more computer storage devices, each configured to perform the actions of the embodiment. Thus, an embodiment provides ontology-based workflow automation and execution.
[0010] Further embodiments include validating the workflow data, which includes verifying the intent associated with the workflow. Thus, an embodiment provides for validating workflow data used in ontology-based workflow automation and execution.
[0011] Further embodiments include validating the workflow data, which includes verifying user-specificity of the workflow. Thus, one embodiment provides for validating workflow data used in ontology-based workflow automation and execution.
[0012] A further embodiment includes validating the workflow data, which includes removing steps in the workflow. Thus, an embodiment enables validating workflow data used in ontology-based workflow automation and execution.
[0013] In a further embodiment, constructing the first skill tree includes adding a first node in an ontology tree to the first skill tree, the first node in the ontology tree corresponding to an action identified in the workflow data. Thus, one embodiment allows for additional elaboration of the construction of skill trees for use in ontology-based workflow automation and execution.
[0014] A further embodiment includes validating the first skill tree, which includes removing a step in the first skill tree. Thus, an embodiment enables validating skill trees used in ontology-based workflow automation and execution.
[0015] One embodiment includes a computer usable program product that includes a computer readable storage medium and program instructions stored on the storage medium.
[0016] One embodiment includes a computer system including a processor, a computer-readable memory, and a computer-readable storage medium, including program instructions stored on the storage medium that are executed by the processor via the memory. [Brief description of the drawings]
[0017] The novel features believed to be characteristic of this invention are set forth in the appended claims, however the invention itself, together with its preferred mode of use, further objects and advantages thereof, will best be understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings.
[0018] [Figure 1] 1 illustrates a block diagram of a computing environment in accordance with an illustrative embodiment.
[0019] [Diagram 2] 4 illustrates a flowchart of an exemplary process for loading process software in accordance with an exemplary embodiment.
[0020] [Diagram 3] FIG. 1 illustrates a block diagram of an exemplary configuration for ontology-based workflow automation and execution in accordance with an exemplary embodiment.
[0021] [Figure 4] 1 illustrates an example of ontology-based workflow automation and execution in accordance with an illustrative embodiment.
[0022] [Diagram 5] 1 illustrates another example of ontology-based workflow automation and execution in accordance with an illustrative embodiment.
[0023] [Figure 6] 4 illustrates a continuation of the ontology-based workflow automation and execution example in accordance with an illustrative embodiment.
[0024] [Figure 7] 4 illustrates a continuation of the ontology-based workflow automation and execution example in accordance with an illustrative embodiment.
[0025] [Figure 8]4 illustrates a continuation of the ontology-based workflow automation and execution example in accordance with an illustrative embodiment.
[0026] [Figure 9] 1 illustrates a flowchart of an exemplary process for ontology-based workflow automation and execution in accordance with an exemplary embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0027] The exemplary embodiments recognize that there is a need for a workflow automation implementation that is not scripting language dependent, that is simple for a non-technical user to "teach" an automation tool new skills, and that can be implemented by generalizing a single-user demonstration of an example workflow to be automated. The present disclosure addresses the deficiencies described above by providing a process (and system, method, machine-readable medium, etc.) for recording the execution of a workflow including a skill (wherein the recording generates workflow data); using the workflow data to select an ontology tree that has above a threshold amount of similarity with the workflow; using the ontology tree and the workflow data to build a first skill tree corresponding to the workflow; integrating the first skill tree into an existing skill tree of the application (wherein the integration results in an integrated skill tree of the application); and, in response to an intent to request the execution of a skill with new data, executing the skill with the integrated skill tree and new data. Thus, the exemplary embodiments enable ontology-based workflow automation and execution.
[0028] An exemplary embodiment records the execution of a workflow including the skills that the workflow is intended to automate. Recording generates workflow data. Some non-limiting examples of workflow data are user interface actions recorded while a user is demonstrating a workflow on a computing device, such as time-stamped mouse clicks, mouse scrolls, key presses, and active user interface windows in which key presses, mouse activity, and other user interface activity occur. Another non-limiting example of workflow data is audio data of a user's verbal description of the workflow, captured while the workflow is being demonstrated or at different times. Another non-limiting example of workflow data is screen capture data of active user interface windows captured while the user is demonstrating the workflow. Another non-limiting example of workflow data is video data of the user as the user demonstrates the workflow. Another non-limiting example of workflow data is the uniform resource locator (URL) of the active user interface window, if applicable, captured while the user is demonstrating the workflow. One embodiment uses one or more currently available techniques to record user interface actions and associate specific user interface actions with specific user interface windows. One embodiment uses currently available speech-to-text conversion techniques to convert audio data into corresponding text data. One embodiment uses currently available character recognition techniques to recognize text labels associated with specific user interface actions (e.g., a label near a text box where the user types, or a label on a window where the user clicks the mouse).
[0029] One embodiment prompts the user to specify an intent associated with the skill being demonstrated, and receives and processes the user's response. In one embodiment, the user's response is in a structured form (e.g., by selecting a predefined intent or skill from a menu. In another embodiment, the user's response is by speech (in an unstructured natural language form, either in text or converted from another form to text, such as "Please start recording my demonstration of how to log time in our time management application"), and this embodiment uses currently available natural language understanding technology to simplify the input utterance into a general intent that represents the skill being demonstrated. If an embodiment does not have a skill mapped to the intent of the utterance, the embodiment defines a new skill that is invoked by the input utterance. Another embodiment does not prompt the user to specify the intent associated with the skill being demonstrated, but instead uses currently available natural language understanding technology to extract the intent from the user's demonstration of the workflow. For example, the user may specify the intent during the demonstration (e.g., "I will now demonstrate how I log time in our time management application").
[0030] One embodiment validates the workflow data with the user. Some non-limiting examples of validating the workflow data include verifying the intent of the workflow data, allowing the user to specify a privacy level of or restrictions on distribution of portions of the workflow data (e.g., the user's login credentials, which may have been revealed during the demonstration), allowing the user to specify whether the workflow data is user-specific or general to a group of users, allowing the user to edit the recorded workflow data to adjust or remove steps (e.g., the user may have performed an extraneous action during the demonstration), allowing the user to confirm the derivation of certain information (e.g., intuitive labels and the context of those labels) by an embodiment, and the like.
[0031] One embodiment uses (optionally verified) workflow data and currently available natural language understanding technology to set values for two key-value pairs: One key-value pair has a key labeled Application Type and a value that indicates the particular application type associated with the workflow. For example, the value of Application Type might be "Calendar" or "Human Resource Management." The other key-value pair has a key labeled Application and a value that indicates the particular application associated with the workflow. For example, the value of Application might be a particular Calendar application.
[0032] An embodiment has access to one or more ontology trees. An ontology tree is a tree-based hierarchical representation of steps common to a particular application type. A node object or node of the ontology tree represents one or more steps. The node includes the natural language intent for the step, whether input is required from a user for the step and whether the input is user-specific or general, and whether the step is optional or required for a particular path in the tree representing the general workflow of the application type. The hierarchy in the ontology tree represents the various workflow paths in the application, and their order. For example, an ontology tree may include a node at the head node representing a login step, and the tree may branch out into multiple possible next steps. Ontology trees are typically (but not required to be) developed by human experts.
[0033] An embodiment has access to one or more skill trees, each of which is a hierarchical representation of learning skills within an application type and a particular application of an application type. Each node in a skill tree represents an action, and paths from node to node in a skill tree represent available paths that may be executed from a particular node.
[0034] One embodiment maintains a data structure that includes one or more nodes, each node specific to a particular application type. The node includes a key that references the application type, a pointer to the head node of the ontology tree for this application type, and one or more pointers that each point to the head node of an existing skill tree for an application of this application type (or a placeholder for a pointer, if no skill tree currently exists for the particular application). For example, a node for a calendar application type may include a pointer to the ontology tree for the calendar application type, and one or more pointers that each point to a skill tree for the particular calendar application. This node structure allows additional ontology trees and skill trees to be added in a modular manner as new application types are defined and new applications of existing types are released or updated.
[0035] One embodiment uses workflow data to select an ontology tree that has above a threshold amount of workflow similarity. One embodiment selects an ontology tree by generating word embeddings (numerical representations) of one or more words in the intent using currently available embedding techniques and measuring the similarity between the generated word embeddings and the word embeddings of the ontology tree's keys. One non-limiting example of a similarity measurement technique is cosine similarity. One embodiment uses 0.75 as the threshold amount of similarity. Other thresholds are possible and are contemplated within the scope of the exemplary embodiment.
[0036] An embodiment uses the ontology tree and workflow data to build a skill tree corresponding to the workflow. In particular, to build the skill tree, an embodiment traverses the selected ontology tree depth-first to identify one or more nodes in the ontology tree with corresponding actions in the recorded workflow. An embodiment assembles the matching ontology tree nodes into a skill tree. In addition, an embodiment adds recorded workflow actions that do not correspond to ontology tree nodes to the constructed skill tree. If there is a loop in the recorded workflow, an embodiment treats the loop as a series of consecutive steps for simplicity. For example, if the recorded workflow includes an action on website X, then an action on website Y, then back to website X, an embodiment includes three separate steps in the skill tree. An embodiment can use the constructed skill tree to re-perform an action when it is performed in the recorded workflow (but in a generalized manner).
[0037] One embodiment validates the constructed skill tree with the user. Some non-limiting examples of validating the constructed skill tree include allowing the user to specify whether the skill tree is user-specific or general to a group of users, allowing the user to edit the skill tree to adjust or remove steps (e.g., the user may have performed an extraneous action during the demonstration), allowing the user to confirm the derivation of certain data (e.g., intuitive labels and the context of those labels) in the skill tree according to an embodiment, and the like.
[0038] One embodiment integrates the constructed skill tree into the application's existing skill tree, thus forming an integrated skill tree for the application. One embodiment traverses the application's existing skill tree depth-first until a node that matches the head node in the constructed skill tree is reached, and inserts the constructed skill tree into the existing skill tree at the matching node. One embodiment also validates the insertion point of the constructed skill tree with the user.
[0039] One embodiment receives an intent to execute a skill with new data, and in response executes the skill with the integrated skill tree and the new data. The received intent can be in a structured form (e.g., menu selection) or in an unstructured natural language form (e.g., "Enter my 8 hours of break time into a time management application").
[0040] For purposes of clarity of explanation and without implying any limitations thereto, the exemplary embodiments are described with some exemplary configurations. From this disclosure, one skilled in the art may recognize many variations, adaptations, and modifications of the described configurations to achieve the described objectives, which are contemplated within the scope of the exemplary embodiments.
[0041] Additionally, simplified diagrams of data processing environments are used in the figures and exemplary embodiments. In an actual computing environment, there may be additional structures or components not shown or described herein, or structures or components that differ from those shown but have functionality similar to those described herein, without departing from the scope of the exemplary embodiments.
[0042] Moreover, the exemplary embodiments are described with reference to specific actual or virtual components, merely as examples. Any particular manifestation of these and other similar artifacts is not intended to limit the invention. Any suitable manifestation of these and other similar artifacts may be selected within the scope of the exemplary embodiments.
[0043] The examples in this disclosure are used only for clarity of explanation and are not limited to the exemplary embodiments. Any advantages listed herein are merely examples and are not intended to limit the exemplary embodiments. Additional or different advantages may be realized by certain exemplary embodiments. Furthermore, certain exemplary embodiments may include some, all, or none of the advantages listed above.
[0044] Additionally, the exemplary embodiments may be implemented with respect to any type of data, data source, or access to a data source via a data network. Any type of data storage device may provide data to an embodiment of the present invention, either locally at a data processing system or via a data network, within the scope of the present invention. When an embodiment is described with a mobile device, any type of data storage device suitable for use with a mobile device may provide data to such an embodiment, either locally at the mobile device or via a data network, within the scope of the exemplary embodiments.
[0045] Exemplary embodiments are described using specific code, computer-readable storage media, high-level features, designs, architectures, protocols, layouts, diagrams, and tools, merely as examples, and are not limited to exemplary embodiments. Furthermore, for clarity of explanation, exemplary embodiments are described in some cases using specific software, tools, and data processing environments, merely as examples. Exemplary embodiments may be used in conjunction with other equivalent or similar purpose structures, systems, applications, or architectures. For example, other equivalent mobile devices, structures, systems, applications, or architectures thereof may be used in conjunction with such embodiments of the present invention within the scope of the present invention. Exemplary embodiments may be implemented in hardware, software, or a combination thereof.
[0046] The examples in this disclosure are used only for clarity of explanation and are not limited to the exemplary embodiments. Additional data, operations, actions, tasks, activities, and operations are recognized from this disclosure and are contemplated within the scope of the exemplary embodiments.
[0047] Various aspects of the disclosure are described by narrative text, flow charts, block diagrams of computer systems, and / or block diagrams of machine logic included in embodiments of computer program products (CPPs). For any flow chart, depending on the technology involved, operations may be performed in a different order than that shown in a given flow chart. For example, two operations shown in successive flow chart blocks may be performed in reverse order, as a single integrated step, simultaneously, or in a manner that at least partially overlaps in time, also depending on the technology involved.
[0048] A computer program product embodiment ("CPP embodiment" or "CPP") is a term used in this disclosure to describe any set of one or more storage media (also referred to as "media") collectively contained in a set of one or more storage devices that collectively contain machine-readable code corresponding to instructions and / or data for performing computer operations specified in a given CPP claim. A "storage device" is any tangible device that can hold and store instructions for use by a computer processor. The computer-readable storage medium may be, but is not limited to, an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices (such as punch cards or pits / lands formed on the major surface of a disk), or any suitable combination of the foregoing. The term computer-readable storage medium as used in this disclosure should not be construed as storage in the form of a transitory signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through fiber optic cables, electrical signals communicated by wires, and / or other transmission media. As one skilled in the art will appreciate, data typically moves from time to time during normal operation of the storage device, such as during access, defragmentation, or garbage collection, but the data is not transitory while it is stored, and thus the storage device is not transitory.
[0049] Referring to FIG. 1, this figure shows a block diagram of a computing environment 100. The computing environment 100 includes an example environment for the execution of at least some of the computer code involved in the execution of the method of the present invention, such as an application 200 implementing ontology-based workflow automation and execution. In addition to block 200, the computing environment 100 includes, for example, a computer 101, a wide area network (WAN) 102, an end user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106. In this embodiment, the computer 101 includes a processor set 110 (including processing circuitry 120 and cache 121), a communication fabric 111, a volatile memory 112, a persistent storage 113 (including the operating system 122 and block 200 identified above), a peripheral device set 114 (including a user interface (UI) device set 123, storage 124, and an Internet of Things (IoT) sensor set 125), and a network module 115. The remote server 104 includes a remote database 130. The public cloud 105 includes a gateway 140, a cloud orchestration module 141, a set of host physical machines 142, a set of virtual machines 143, and a set of containers 144.
[0050] Computer 101 may take the form of a desktop computer, laptop computer, tablet computer, smartphone, smartwatch or other wearable computer, mainframe computer, quantum computer, or any other form of computer or mobile device now known or later developed that can execute programs, access a network, or query a database, such as remote database 130. As is well understood in the art of computer technology, and in accordance with the art, execution of a computer-implemented method may be distributed among multiple computers and / or among multiple locations. However, in this presentation of computing environment 100, the detailed description focuses on a single computer, specifically computer 101, to keep the presentation as simple as possible. Computer 101 may be located in a cloud, even if not depicted in the cloud in FIG. 1. However, computer 101 need not be in a cloud, except to any extent that may be categorically depicted.
[0051] Processor set 110 includes one or more computer processors of any type now known or developed in the future. Processing circuitry 120 may be distributed across multiple packages, e.g., multiple tailored integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores. Cache 121 is memory located within the processor chip package and is typically used for data or code that should be available for quick access by threads or cores executing on processor set 110. Cache memory is typically organized into multiple levels depending on relative proximity to the processing circuitry. Alternatively, some or all of the cache for a processor set may be located "off-chip." In some computing environments, processor set 110 may be designed to operate with qubits to perform quantum computing.
[0052] Computer readable program instructions are typically loaded onto the computer 101 and cause the processor set 110 of the computer 101 to execute a sequence of operational steps to realize a computer-implemented method, such that the instructions so executed instantiate the method specified in the computer-implemented method flowcharts and / or narrative descriptions contained herein (collectively, the "methods of the present invention"). These computer readable program instructions are stored in various types of computer readable storage media, such as cache 121, and other storage media described below. The program instructions and associated data are accessed by the processor set 110 to control and direct the execution of the methods of the present invention. In the computing environment 100, at least a portion of the instructions for executing the methods of the present invention may be stored in block 200 in persistent storage 113.
[0053] Communications fabric 111 is the signal transmission paths that allow various components of computer 101 to communicate with one another. Typically, this fabric is made of switches and conductive paths, such as those that make up buses, bridges, physical input / output ports, and the like. Other types of signal communication paths, such as fiber optic and / or wireless communication paths, may be used.
[0054] Volatile memory 112 is any type of volatile memory now known or later developed. Examples include dynamic random access memory (RAM) or static RAM. Typically, volatile memory 112 is characterized by random access, although this is not required unless expressly indicated. In computer 101, volatile memory 112 is located in a single package and is internal to computer 101, although alternatively or additionally, volatile memory may be distributed across multiple packages and / or may be located external to computer 101.
[0055] Persistent storage 113 is any form of non-volatile storage for a computer, now known or later developed. The non-volatility of this storage means that the stored data is maintained regardless of whether power is provided to computer 101 and / or directly to persistent storage 113. Persistent storage 113 may be read-only memory (ROM), but is typically at least a portion of persistent storage that allows data to be written, data to be deleted, and data to be re-written. Some well-known forms of persistent storage include magnetic disks and solid-state storage devices. Operating system 122 may take several forms, such as various known proprietary operating systems employing a kernel or an open source portable operating system interface type operating system. The code included in block 200 typically includes at least a portion of computer code associated with performing the method of the present invention.
[0056] The peripheral device set 114 includes a set of peripheral devices of the computer 101. Data communication connections between the peripheral devices and other components of the computer 101 may be implemented in various manners, such as Bluetooth connections, Near Field Communication (NFC) connections, connections made by cable (such as a Universal Serial Bus (USB) type cable), pluggable connections (e.g., Secure Digital (SD) cards), connections made through a local area communication network, and even connections made through a wide area network such as the Internet. In various embodiments, the UI device set 123 may include components such as display screens, speakers, microphones, wearable devices (such as goggles and smart watches), keyboards, mice, printers, touch pads, game controllers, and haptic devices. The storage 124 is external storage, such as an external hard drive, or insertable storage, such as an SD card. The storage 124 may be persistent and / or volatile. In some embodiments, the storage 124 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 is required to have a large amount of storage (e.g., computer 101 stores and manages a large database locally), this storage may be provided by peripheral storage devices designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. IoT sensor set 125 is made up of sensors that may be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.
[0057] The network module 115 is a collection of computer software, hardware, and firmware that enables the computer 101 to communicate with other computers over the WAN 102. The network module 115 may include hardware such as a modem or Wi-Fi® signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for communicating data over the Internet. In some embodiments, the network control and network forwarding functions of the network module 115 are performed on the same physical hardware device. In other embodiments (e.g., those utilizing software-defined networking (SDN)), the control and forwarding functions of the network module 115 are performed on physically separate devices, such that the control functions manage several different network hardware devices. Computer-readable program instructions for carrying out the methods of the present invention may typically be downloaded to the computer 101 from an external computer or external storage device through a network adapter card or network interface included in the network module 115.
[0058] WAN 102 is any wide area network (e.g., the Internet) capable of communicating computer data over non-local distances by any technology now known or later developed for communicating computer data. In some embodiments, WAN 102 may be replaced and / or supplemented by a local area network (LAN) designed to communicate data between devices located in a local area, such as a Wi-Fi® network. WANs and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and edge servers.
[0059] End-user device (EUD) 103 is any computer system used and controlled by an end user (e.g., a customer of the enterprise that operates computer 101) and may take any of the forms described above in connection with computer 101. EUD 103 typically receives useful data from the operation of computer 101. For example, in a hypothetical case in which computer 101 is designed to provide recommendations to the end user, the recommendations would typically be communicated from network module 115 of computer 101 over WAN 102 to EUD 103. In this manner, EUD 103 can display or otherwise present the recommendations to the end user. In some embodiments, EUD 103 may be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, or the like.
[0060] Remote server 104 is any computer system that provides at least some data and / or functionality to computer 101. Remote server 104 may be controlled and used by the same entity that operates computer 101. Remote server 104 represents a machine that collects and stores useful data that is useful for use by other computers, such as computer 101. For example, in the hypothetical case where computer 101 is designed and programmed to provide recommendations based on historical data, this historical data may be provided to computer 101 from a remote database 130 of remote server 104.
[0061] A public cloud 105 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and / or other computer functionality, particularly data storage (cloud storage) and computing power, without direct active management by users. Cloud computing typically leverages the sharing of resources to achieve coherence and economies of scale. The direct and active management of the computing resources of the public cloud 105 is performed by computer hardware and / or software of a cloud orchestration module 141. The computing resources provided by the public cloud 105 are typically implemented by virtual computing environments running on various computers that make up the computers of the host physical machine set 142, which is a population of physical computers within and / or available to the public cloud 105. The virtual computing environments (VCEs) typically take the form of virtual machines from the virtual machine set 143 and / or containers from the container set 144. It is understood that these VCEs may be stored as images and may be transferred between various physical machine hosts as images or after instantiation of the VCEs. The cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCE, and manages the active instantiation of VCE deployments. The gateway 140 is a collection of computer software, hardware, and firmware that enables the public cloud 105 to communicate over the WAN 102.
[0062] Some further description of Virtualized Computing Environments (VCEs) is now provided. A VCE can be stored as an "image." A new active instance of a VCE can be instantiated from the image. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system level virtualization. This refers to a feature of an operating system where the kernel allows the existence of multiple isolated user space instances called containers. These isolated user space instances typically behave as real computers from the perspective of the programs running within them. A computer program running on a normal operating system can utilize all the resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, a program running inside a container can only use the contents of the container and the devices assigned to the container. This is a feature known as containerization.
[0063] A private cloud 106 is similar to a public cloud 105, except that the computing resources are available only for use by a single enterprise. Although the private cloud 106 is shown as communicating with the WAN 102, in other embodiments, the private cloud may be completely disconnected from the Internet and accessible only through a local / private network. A hybrid cloud is a composition of multiple clouds of different types (e.g., private, community, or public cloud types), often each implemented by a different vendor. While each of the multiple clouds remains a separate and discrete entity, the larger hybrid cloud architecture is tied together by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the multiple constituent clouds. In this embodiment, both the public cloud 105 and the private cloud 106 are part of a larger hybrid cloud.
[0064] Metered Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage may be monitored, controlled, reported and billed, providing transparency to both providers and consumers of the services utilized.
[0065] 2, this figure shows a flowchart of an exemplary process of loading process software according to an exemplary embodiment, which may be executed by a device, such as computer 101, end user device 103, remote server 104, or a device in private cloud 106 or public cloud 105 in FIG.
[0066] It is understood that the process software implementing the ontology-based workflow automation and execution can be deployed by manually loading directly on the client, server and proxy computers, for example, via loading of a storage medium such as a CD, DVD, etc., but the process software can also be automatically or semi-automatically deployed to computer systems by sending the process software to a central server or group of central servers. The process software is then downloaded to the client computers that will execute the process software. Alternatively, the process software is sent directly to the client systems via email. The process software is then detached or loaded into a directory by executing a set of program instructions that detach the process software into the directory. Another alternative is to send the process software directly to a directory on the client computer hard drive. If a proxy server is present, the process is to select the proxy server code, determine which computer the proxy server code is to be located on, send the proxy server code, and then install the proxy server code on the proxy computer. The process software is sent to the proxy server and then stored on the proxy server.
[0067] Step 202 begins the deployment of the process software. The first step is to determine whether there are any programs present that will reside on the server or servers when the process software is executed (203). If this is the case, then the servers that will contain the executables are identified (229). The process software for the server or servers is transferred (230) directly to the server storage by copying via FTP or some other protocol, or through the use of a shared file system. The process software is then installed (231) on the servers.
[0068] A determination is then made as to whether the process software will be deployed by having the user access the process software on one server or multiple servers (204). If the user will access the process software on multiple servers, the server addresses on which the process software will be stored are identified (205).
[0069] A determination is made whether a proxy server will be created to store the process software (220). A proxy server is a server that sits between a client application, such as a web browser, and the real server. The proxy server intercepts all requests to the real server to see if it can fulfill these requests itself. If not, the proxy server forwards the request to the real server. The two main benefits of a proxy server are improved performance and filtering of requests. If a proxy server is needed, it is installed (221). The process software is sent to the server(s) via a protocol such as FTP, or copied directly from a source file to a server file via file sharing (222). Another embodiment involves sending a transaction to the server(s) that contained the process software, and having the server process the transaction and then receive and copy the process software to the server's file system. Once the process software is stored on the server, users access the process software on the server via their client computers and copy it to their client computer file system (223). Another embodiment is to have the server automatically copy the process software to each client and then run an installation program for the process software on each client computer. The user runs the program that installs the process software on his or her client computer (232) and then terminates the process (210).
[0070] In step 206, a determination is made whether the process software will be deployed by sending the process software to users via email. A set of users to whom the process software will be deployed is identified (207), along with the addresses of the user client computers. The process software is sent (224) via email to each of the users' client computers. The user then receives (225) the email and then detaches (226) the process software from the email to a directory on their client computer. The user then executes (232) a program that installs the process software on their client computer and then terminates (210) the process.
[0071] Finally, a determination is made as to whether the process software is to be sent directly to a user directory on the client computer (208). If so, the user directory is identified (209). The process software is transferred directly to the user's client computer directory (227). This may be done in a number of ways, including but not limited to sharing a file system directory and then copying from the sender's file system to the recipient user's file system, or alternatively using a transfer protocol such as File Transfer Protocol (FTP). The user accesses the directory on their client file system (228) in preparation for installing the process software. The user executes a program that installs the process software on their client computer (232) and then terminates the process (210).
[0072] 3, which illustrates a block diagram of an exemplary configuration for ontology-based workflow automation and execution, according to an exemplary embodiment. Application 300 is the same as application 200 in FIG.
[0073] In the illustrated embodiment, the workflow collection module 310 records the execution of the workflow, including the skills that the workflow is intended to automate. This recording generates workflow data. Some non-limiting examples of workflow data are user interface actions recorded while a user is demonstrating a workflow on a computing device, such as time-stamped mouse clicks, mouse scrolls, key presses, and active user interface windows in which the key presses, mouse activity, and other user interface activity occur. Another non-limiting example of workflow data is audio data of a user's verbal description of the workflow, captured while the workflow is being demonstrated or at different times. Another non-limiting example of workflow data is screen capture data of the active user interface window, captured while the user is demonstrating the workflow. Another non-limiting example of workflow data is video data of the user as the user demonstrates the workflow. Another non-limiting example of workflow data is the uniform resource locator (URL) of the active user interface window, if applicable, captured while the user is demonstrating the workflow. Module 310 records user interface actions using one or more currently available techniques and associates particular user interface actions with particular user interface windows. Module 310 converts audio data into corresponding text data using currently available speech-to-text conversion techniques. Module 310 recognizes text labels associated with particular user interface actions (e.g., a label near a text box where the user types or a label on a window where the user clicks the mouse) using currently available character recognition techniques.
[0074] One implementation of module 310 prompts the user to specify an intent associated with the skill being demonstrated and receives and processes the user's response. In one implementation of module 310, the user's response is in a structured format (e.g., by selecting a predefined intent or skill from a menu. In another implementation of module 310, the user's response is spoken (in an unstructured natural language format, either textual or converted from another format to text, such as "Please start recording my demonstration of how to log time in our time management application") and this implementation uses currently available natural language understanding technology to interpret the input utterance, represent the skill being demonstrated, and generate a response. The intent of the utterance is simplified to a general intent that maps to the intent of the utterance. If the module 310 does not have a skill mapped to the intent of the utterance, the module 310 defines a new skill to be invoked by the input utterance. Another implementation of the module 310 does not prompt the user to specify the intent associated with the skill being demonstrated, but instead extracts the intent from the user's demonstration of the workflow using currently available natural language understanding techniques. For example, the user may specify the intent during the demonstration (e.g., "Now I will demonstrate how to log time in our time management application").
[0075] One implementation of module 310 validates the workflow data with a user. Some non-limiting examples of validating the workflow data include verifying the intent of the workflow data, allowing the user to specify a privacy level of or restrictions on distribution of portions of the workflow data (e.g., the user's login credentials, which may have been revealed during the demonstration), allowing the user to specify whether the workflow data is user-specific or general to a group of users, allowing the user to edit the recorded workflow data to adjust or remove steps (e.g., the user may have performed an extraneous action during the demonstration), allowing the user to confirm the derivation of certain information (e.g., intuitive labels and the context of those labels), and the like.
[0076] Module 310 uses the (optionally verified) workflow data and currently available natural language understanding techniques to set values for two key-value pairs: One key-value pair has a key labeled Application Type and a value that indicates a particular application type associated with the workflow. For example, the value of Application Type might be "Calendar" or "Human Resource Management." The other key-value pair has a key labeled Application and a value that indicates a particular application associated with the workflow. For example, the value of Application might be a particular Calendar application.
[0077] The ontology identification (ID) module 320 has access to one or more ontology trees. An ontology tree is a tree-based hierarchical representation of steps common to a particular application type. A node object or node of the ontology tree represents one or more steps. The node includes the natural language intent for the step, whether input is required from a user for the step and whether the input is user-specific or general, and whether the step is optional or required for a particular path in the tree representing the general workflow of the application type. The hierarchy in the ontology tree represents the various workflow paths in the application, and their order. For example, an ontology tree may include a node at the head node representing a login step, and the tree may branch out into multiple possible next steps. Ontology trees are typically (but not required to be) developed by human experts.
[0078] The skill building module 330 has access to one or more skill trees. Each skill tree is a hierarchical representation of learning skills within an application type and a particular application of an application type. Each node in a skill tree represents an action, and paths from node to node in a skill tree represent available paths that may be executed from a particular node.
[0079] One implementation of application 300 maintains a data structure that includes one or more nodes, where each node is specific to a particular application type. The node includes a key that references the application type, a pointer to the head node of the ontology tree for this application type, and one or more pointers that each point to the head node of an existing skill tree for an application of this application type (or a placeholder for a pointer, if no skill tree for the particular application currently exists). For example, a node for a calendar application type may include a pointer to the ontology tree for the calendar application type, and one or more pointers that each point to a skill tree for the particular calendar application. This node structure allows additional ontology trees and skill trees to be added in a modular manner as new application types are defined and new applications of existing types are released or updated.
[0080] Module 320 uses workflow data to select ontology trees that have above a threshold amount of workflow similarity. One implementation of module 320 selects ontology trees by generating word embeddings (numerical representations) of one or more words in the intent using currently available embedding techniques and measuring the similarity between the generated word embeddings and the word embeddings of the keys in the ontology tree. One non-limiting example of a similarity measurement technique is cosine similarity. One implementation of module 320 uses 0.75 as the threshold amount of similarity. Other thresholds are possible.
[0081] Module 330 uses the ontology tree and workflow data to build a skill tree corresponding to the workflow. In particular, to build the skill tree, module 330 traverses the selected ontology tree depth-first to identify one or more nodes in the ontology tree with corresponding actions in the recorded workflow. Module 330 assembles the matched ontology tree nodes into a skill tree. In addition, module 330 adds recorded workflow actions that do not correspond to ontology tree nodes to the constructed skill tree. If a loop exists in the recorded workflow, module 330 treats the loop as a series of consecutive steps for simplicity. For example, if the recorded workflow includes an action on website X, then an action on website Y, then back to website X, module 330 includes three separate steps in the skill tree. Module 330 can use the constructed skill tree to re-perform an action when that action is performed in the recorded workflow (but in a generalized manner).
[0082] Module 330 validates the constructed skill tree with the user. Some non-limiting examples of validating the constructed skill tree include allowing the user to specify whether the skill tree is user-specific or general to a group of users, allowing the user to edit the skill tree to adjust or remove steps (e.g., the user may have performed an extraneous action during the demonstration), allowing the user to verify the derivation of particular data in the skill tree (e.g., intuitive labels and the context of those labels) according to an embodiment, and the like.
[0083] The skill integration module 340 integrates the constructed skill tree into the application's existing skill tree, thus forming an integrated skill tree for the application. One implementation of the module 340 traverses the application's existing skill tree depth-first until it reaches a node that matches the head node in the constructed skill tree, and inserts the constructed skill tree into the existing skill tree at the matching node. One implementation of the module 340 also validates the insertion point of the constructed skill tree with the user.
[0084] The skill execution module 350 receives an intent to execute a skill with new data, and in response executes the skill with the integrated skill tree and the new data. The received intent can be in a structured form (e.g., menu selection) or in an unstructured natural language form (e.g., "Enter my 8 hours of break time into a time management application").
[0085] 4, an example of an ontology-based workflow automation and execution according to an example embodiment may be implemented using application 300 in FIG.
[0086] As shown, recorded workflow 400 includes steps 410, 420, and 430. Note that the applications and URLs shown are merely simplified examples and are not intended to limit the invention. Using (optionally verified) workflow data and currently available natural language understanding techniques, key-value pair 440 (labeled as application type) and key-value pair 450 (labeled as application) are also established.
[0087] 5, another example of ontology-based workflow automation and execution according to an exemplary embodiment may be performed using application 300 in FIG.
[0088] Ontology data store 500 includes nodes 510, 520, and 530. Each node is specific to a particular application type. The nodes include a key that references the application type, a pointer to the head node of the ontology tree for that application type, and one or more pointers that each point to the head node of an existing skill tree for an application of this application type (or a placeholder for a pointer, if a skill tree for the particular application does not currently exist). For example, node 510 (of calendar application type) includes a pointer to calendar ontology 540, an ontology for the calendar application type, and one or more pointers that each point to the skill tree for the particular calendar application.
[0089] 6, which illustrates a continuation of the ontology-based workflow automation and execution example according to an exemplary embodiment. Recorded workflow 400 and steps 420 and 430 are the same as recorded workflow 400 and steps 420 and 430 in FIG. 4. Node 520 is the same as node 520 in FIG. 5.
[0090] Node 520 includes a pointer to a human resources (HR) management ontology 610, which has above a threshold amount of similarity with the recorded workflow 400. In particular, application 300 traverses ontology 610 depth-first to identify one or more nodes in the ontology tree with corresponding actions in step 420 (indicated by match 620) and step 430 (indicated by match 630, matching step 420 and ontology step 615).
[0091] 7, which illustrates a continuation of the ontology-based workflow automation and execution example according to an exemplary embodiment. Step 420 is the same as step 420 in FIG. 4. Ontology step 615 is the same as ontology step 615 in FIG. 6.
[0092] As shown, using ontology step 615 and step 420 (from the recorded workflow 400 in FIG. 4), the application 300 selects an existing skill tree 710 and inserts a new skill tree 720 into the existing skill tree 710.
[0093] 8, which illustrates a continuation of the ontology-based workflow automation and execution example according to an exemplary embodiment. The new skill tree 720 is the same as the new skill tree 720 in FIG.
[0094] Here, application 300 has received intent 810, an intent that requests execution of a skill with new data. In response, application 300 executes the skill (shown as skill execution 820) using the new skill tree 720 (which is now part of the integrated skill tree) and intent 810.
[0095] 9, which illustrates a flow chart of an example process for ontology-based workflow automation and execution according to an example embodiment. The process 900 may be implemented in the application 300 in FIG.
[0096] In the illustrated embodiment, at block 902, the process records the execution of a workflow including a skill, which records generates workflow data. At block 904, the process uses the workflow data to select an ontology tree that has above a threshold amount of similarity with the workflow. At block 906, the process uses the ontology tree and the workflow data to build a first skill tree corresponding to the workflow. At block 908, the process integrates the first skill tree into an existing skill tree of the application, which integration results in an integrated skill tree for the application. At block 910, the process executes the skill using the integrated skill tree and the new data in response to an intent to request execution of the skill with the new data. The process then ends.
[0097] The following definitions and abbreviations are used in interpreting the claims and the specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "contains," or "containing," or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or device that includes a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such composition, mixture, process, method, article, or device.
[0098] Additionally, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer number greater than or equal to one, i.e., 1, 2, 3, 4, etc. The term "multiple" is understood to include any integer number greater than or equal to two, i.e., 2, 3, 4, 5, etc. The term "connected" can include indirect and direct "connected."
[0099] References herein to "one embodiment," "an embodiment," "exemplary embodiment," and the like indicate that the embodiment being described may include a particular feature, structure, or characteristic, but all embodiments may or may not include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Moreover, if a particular feature, structure, or characteristic is described in relation to one embodiment, it is believed to be within the knowledge of one of ordinary skill in the art that such feature, structure, or characteristic also applies in relation to other embodiments, whether or not explicitly described.
[0100] The terms "about," "substantially," "approximately," and variations thereof are intended to include the degree of error associated with the particular quantitative indication based on the equipment available at the time of filing this application. For example, "about" can include a range of ±8%, or 5%, or 2% of a given value.
[0101] The description of various embodiments of the present invention is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used in this specification has been selected to best explain the principles of the embodiments, practical applications or technical improvements to the technology found in the market, or to enable others skilled in the art to understand the embodiments described herein.
[0102] The description of various embodiments of the present invention is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used in this specification are selected to best explain the principles of the embodiments, practical applications, or technical improvements to the technology found in the market, or to enable other skilled in the art to understand the embodiments described herein.
[0103] Thus, computer-implemented methods, systems, or apparatus, and computer program products are provided in exemplary embodiments for managing participation in an online community and other related features, functions, or operations. Where an embodiment, or portions thereof, are described in terms of a type of device, the computer-implemented method, system or apparatus, computer program product, or portions thereof, is adapted or configured for use with an appropriate and equivalent designation of that type of device.
[0104] Where an embodiment is described as being implemented in an application, delivery of the application in a Software-as-a-Service (SaaS) model is envisioned within the scope of the exemplary embodiment. In the SaaS model, the capabilities of the application implementing an embodiment are provided to a user by executing the application in a cloud infrastructure. The user may access the application using a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email) or other lightweight client application. The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage of the cloud infrastructure. In some cases, the user may not even manage or control the capabilities of the SaaS application. In some other cases, the SaaS implementation of the application may allow possible exceptions to restricted user-specific application configuration settings.
[0105] The embodiments of the present invention may also be delivered as part of a service engagement with a client company, a non-profit organization, a government agency, an internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to execute and deploying software, hardware, and web services that implement some or all of the methods described herein. Aspects of these embodiments may also include analyzing the behavior of a client, making recommendations in response to the analysis, building a system that implements some of the recommendations, integrating the system into existing processes and infrastructure, metering the use of the system, allocating expenditures to users of the system, and billing for the use of the system. Although the above embodiments of the present invention have each been described by stating their respective individual advantages, the present invention is not limited to their particular combination. On the contrary, such embodiments may also be combined in any manner and number in accordance with the intended development of the present invention without losing their advantageous effects.
Claims
1. recording an execution of a workflow including the skill, said recording generating workflow data; using the workflow data to select ontology trees that have above a threshold amount of similarity with the workflow; constructing a first skill tree corresponding to the workflow using the ontology tree and the workflow data; integrating the first skill tree into an existing skill tree of an application, the integrating step resulting in an integrated skill tree of the application; and executing the skill using the integrated skill tree and the new data in response to an intent to request execution of the skill using new data. A computer-implemented method comprising:
2. validating the workflow data, the validating step comprising verifying intent associated with the workflow. The computer-implemented method of claim 1 , further comprising:
3. validating the workflow data, the validating step comprising verifying user specificity of the workflow. The computer-implemented method of claim 1 , further comprising:
4. validating the workflow data, the validating step comprising removing a step in the workflow. The computer-implemented method of claim 1 , further comprising:
5. 5. The computer-implemented method of claim 1, wherein constructing the first skill tree comprises adding a first node in the ontology tree to the first skill tree, the first node in the ontology tree corresponding to an action identified in the workflow data.
6. validating the first skill tree, the validating step comprising removing a step in the first skill tree. The computer-implemented method of claim 1 , further comprising:
7. and a program instruction, the program instruction comprising: recording an execution of a workflow including the skill, said recording generating workflow data; using the workflow data to select ontology trees that have above a threshold amount of similarity with the workflow; constructing a first skill tree corresponding to the workflow using the ontology tree and the workflow data; integrating the first skill tree into an existing skill tree of an application, the integrating step resulting in an integrated skill tree of the application; and executing the skill using the integrated skill tree and the new data in response to an intent to request execution of the skill using new data. and executable by a processor to cause the processor to perform operations including: Computer program.
8. 8. The computer program product of claim 7, wherein the program instructions are stored in a computer readable storage device within a data processing system, and wherein the program instructions are transferred from a remote data processing system over a network.
9. The program instructions are stored in a computer readable storage device in a server data processing system, and the program instructions are downloaded in response to a request over a network to a remote data processing system for use in a computer readable storage device associated with the remote data processing system, the computer program comprising: program instructions for metering usage of the program instructions associated with the request; and and program instructions for generating a bill based on said metered usage. The computer program product of claim 7 , further comprising:
10. Validating the workflow data, the validating step comprising verifying intent associated with the workflow.
10. The computer program of claim 7, further comprising:
11. Validating the workflow data, the validating step comprising verifying user specificity of the workflow.
10. The computer program of claim 7, further comprising:
12. Validating the workflow data, the validating step comprising removing a step in the workflow.
10. The computer program of claim 7, further comprising:
13. 10. The computer program product of claim 7, wherein constructing the first skill tree comprises adding a first node in the ontology tree to the first skill tree, the first node in the ontology tree corresponding to an action identified in the workflow data.
14. validating the first skill tree, the validating step comprising removing a step in the first skill tree.
10. The computer program of claim 7, further comprising:
15. a processor, one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising: recording an execution of a workflow including the skill, said recording generating workflow data; using the workflow data to select ontology trees that have above a threshold amount of similarity with the workflow; constructing a first skill tree corresponding to the workflow using the ontology tree and the workflow data; integrating the first skill tree into an existing skill tree of an application, the integrating step resulting in an integrated skill tree of the application; and executing the skill using the integrated skill tree and the new data in response to an intent to request execution of the skill using new data. and executable by the processor to cause the processor to perform operations including: Computer system.
16. Validating the workflow data, the validating step comprising verifying intent associated with the workflow.
20. The computer system of claim 15, further comprising:
17. Validating the workflow data, the validating step comprising verifying user specificity of the workflow.
20. The computer system of claim 15, further comprising:
18. Validating the workflow data, the validating step comprising removing a step in the workflow.
20. The computer system of claim 15, further comprising:
19. 19. The computer system of claim 15, wherein constructing the first skill tree comprises adding a first node in the ontology tree to the first skill tree, the first node in the ontology tree corresponding to an action identified in the workflow data.
20. validating the first skill tree, the validating step comprising removing a step in the first skill tree.
19. The computer system of claim 15, further comprising: