Workflow Transformation Framework
By receiving workflow definitions and events, and using converters and actuators to dynamically adjust workflows, the problem of difficulty in modifying workflows in the prior art is solved, and the flexibility and efficiency of workflows are improved.
Patent Information
- Application Number
- JP2024552445
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-03-29
- Filing Date
- 2023-03-14
- Publication Date
- 2025-04-11
AI Technical Summary
It is difficult for prior art to dynamically modify workflows in operation to meet specific goals and constraints.
By receiving workflow definitions and events, use converters and executors to determine and apply transformations of workflows, including adding, modifying, or deleting nodes and graphs to meet specific goals and constraints.
Achieve dynamically adjusting workflows to meet the goals of performance optimization, cost savings, data privacy and regulatory compliance without interrupting workflow execution.
Smart Images

Figure 2025509192000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates generally to the field of workflow orchestration, and more particularly to a system for transformation of a workflow to satisfy a set of goals while complying with a set of constraints. [Background technology]
[0002] Orchestration involves the automated configuring, managing, and orchestrating of computer applications and services. Orchestration is different from automation. While automation is automating a single task to make a business more efficient and productive, orchestration automates entire processes and workflows that may involve different, heterogeneous systems.
[0003] Workflow orchestration is the automation of workflows or multiple tasks. In other words, orchestration handles multiple automated tasks to execute a single critical process or workflow. A workflow is a graph, containing nodes that perform tasks (e.g. programs) and edges that indicate dependencies between tasks.
[0004] Some benefits of workflow orchestration include automation, which helps to improve efficiency, productivity, and accuracy while reducing the time to perform a task and therefore reducing operational costs. One challenge of workflow orchestration is to dynamically modify a workflow to meet specific goals and constraints. An even bigger challenge is to modify a running workflow, commonly referred to as a workflow instance. A workflow instance comprises the workflow definition and information about the state of the workflow instance, including inputs to the workflow, metadata about the inputs, outputs of the workflow, metadata about the outputs, and metadata about the execution state of each workflow node. Summary of the Invention
[0005] According to one aspect, a computer-implemented method is provided that includes receiving, by one or more processors, a workflow definition and one or more events for a workflow output by a workflow orchestrator, where the one or more events are at least one of a parse event and a schedule event; determining, by the one or more processors using one or more transformers, one or more transformations to the workflow based on a set of goals and a set of constraints, where the one or more transformations are at least one of adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; and dynamically applying, by the one or more processors using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints.
[0006] According to another aspect, a computer program product is provided that includes one or more computer readable storage media; and program instructions collectively stored on the one or more computer readable storage media, the stored program instructions including program instructions for receiving a workflow definition and one or more events for a workflow output by a workflow orchestrator, where the one or more events are at least one of a parse event and a schedule event; program instructions for determining, using one or more transformers, one or more transformations to the workflow based on the set of goals and the set of constraints, where the one or more transformations are at least one of adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; and program instructions for dynamically applying, using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints.
[0007] According to another aspect, a computer system is provided comprising: one or more computer processors; one or more computer readable storage media; and program instructions collectively stored in the one or more computer readable storage media for execution by at least one of the one or more computer processors, the stored program instructions including: program instructions for receiving a workflow definition and one or more events for a workflow output by a workflow orchestrator, the one or more events being at least one of a parse event and a schedule event; program instructions for determining, using one or more transformers, one or more transformations to the workflow based on the set of goals and the set of constraints, the one or more transformations being at least one of adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; and program instructions for dynamically applying, using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints.
[0008] An embodiment of the present invention discloses a method, computer program product, and computer system for transformation of a workflow to satisfy a set of goals while complying with a set of constraints. A processor receives a workflow definition and one or more events for the workflow output by a workflow orchestrator, where the one or more events are at least one of a parse event and a schedule event. The processor determines, using one or more transformers, one or more transformations to the workflow based on the set of goals and the set of constraints, where the one or more transformations are at least one of adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph. The processor dynamically applies, using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints.
[0009] In some embodiments of the present invention, each Transducer of the one or more Transducers publishes one or more types of events that each respective Transducer is set up to process.
[0010] In some embodiments of the invention, the processor processes the one or more events and triggers at least one of the one or more converters based on the received one or more events to determine if there are any transformations to propose. The processor triggers at least one of the one or more enforcers based on the one or more transformations, the set of goals and the set of constraints.
[0011] In some embodiments of the present invention, each of the one or more enforcers is set up to apply a respective transformation based on at least one of a subset of the set of goals and a subset of the constraints.
[0012] In some embodiments of the invention, a processor receives a workflow definition, a workflow instance state, workflow node data, a system state, a set of goals, and a set of constraints at each transducer, and the processor analyzes one or more granularities of the workflow, the workflow node data, and the system state at each transducer.
[0013] In some embodiments of the invention, a processor generates one or more transformations by packaging one or more transformations and exporting one or more transformations in a format readable by one or more enforcers. The processor tags one or more transformations with metadata comprising the benefits and risks for each transformation.
[0014] In some embodiments of the invention, a processor constructs a workflow update strategy by applying at least one of an inference algorithm and an optimization algorithm to one or more transformations given the set of goals and the set of constraints. The processor dynamically applies the workflow update strategy to the workflow to produce an updated workflow.
[0015] Preferred embodiments of the present invention will now be described, by way of example only, and with reference to the following drawings, in which: [Brief description of the drawings]
[0016] [Figure 1] 1 is a functional block diagram illustrating a workflow transformation system in a distributed data processing environment according to an embodiment of the present invention. [Diagram 2]2 is a flowchart depicting operational steps of a workflow conversion program running on the workflow conversion system of the distributed data processing environment of FIG. 1 for converting a workflow to satisfy a set of goals while complying with a set of constraints in accordance with an embodiment of the present invention. [Diagram 3] 2 is a flowchart depicting operational steps of a director component of a workflow transformation system for a distributed data processing environment of FIG. 1 in accordance with an embodiment of the present invention. [Figure 4] 2 is a flowchart depicting operational steps of a transformer component of a workflow transformation system of the distributed data processing environment of FIG. 1 in accordance with an embodiment of the present invention. [Diagram 5] 2 is a flowchart depicting operational steps of the enforcer component of the workflow transformation system of the distributed data processing environment of FIG. 1 in accordance with an embodiment of the present invention. [Figure 6] FIG. 1 is a diagram of a cloud computing environment in accordance with an embodiment of the present invention. [Figure 7] FIG. 2 is a diagram of abstraction model layers, according to an embodiment of the present invention. [Figure 8] FIG. 2 is a block diagram of components of a computing device for a workflow conversion program of the workflow conversion system of the distributed data processing environment of FIG. 1 for executing the workflow conversion program according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0017] Embodiments of the present invention recognize that data and computationally intensive workflows are constantly being executed in cloud infrastructures. Embodiments of the present invention provide systems and methods for transformation of workflows to meet a set of goals while adhering to a set of constraints. Transformations can occur before, during, or after the execution of a workflow instance. Embodiments of the present invention provide systems and methods working with a workflow orchestrator to pre-process and adapt existing workflows on the fly (i.e., in-process) to meet specific goals, such as performance or cost optimization, compliance with data privacy policies and frameworks, reusing cached results of computational nodes to improve performance of subsequent or related computations, and implementing data provenance mechanisms.
[0018] An embodiment of the present invention provides a system comprising a workflow orchestrator for loading and / or running workflow instances and issuing parse and / or schedule events; a supervisor component for observing the events output by the workflow orchestrator and triggering one or more transformer components as necessary; a transformer component with a set of transformers for suggesting transformations to the workflow to satisfy a set of goals and constraints; and an executor component with a set of executors for applying the suggested transformations to the workflow and including in the inference the set of required goals and constraints and the expected benefits and / or risks of the transformations.
[0019] Advantages of embodiments of the present invention include (1) ensuring that workflows are transformed to comply with a predefined set of constraints and goals, and (2) transparently updating workflows with no adaptation effort required from the workflow developer or user.
[0020] As used herein, high-performance computing (HPC) is the use of parallel processing to execute advanced application programs efficiently, reliably, and quickly. As used herein, a workflow is a sequence of tasks scheduled to run to perform some computation, typically on HPC resources. Such tasks may include jobs that run on HPC resources or auxiliary tasks that may run outside of HPC resources.
[0021] Implementations of embodiments of the present invention may take a variety of forms, and details of exemplary implementations are discussed below with reference to the figures.
[0022] FIG. 1 is a functional block diagram illustrating a distributed data processing environment, generally designated 100, in accordance with one embodiment of the present invention. As used herein, the term "distributed" refers to a computer system that includes multiple physically disparate devices that operate together as a single computer system. FIG. 1 is only intended to provide an illustration of one implementation and is not intended to suggest any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one skilled in the art without departing from the scope of the present invention as recited in the claims.
[0023] The distributed data processing environment 100 includes a workflow orchestrator 110, a workflow conversion system 120, and user computing devices 130 interconnected by a network 105. The network 105 can be, for example, a telecommunications network, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of the three, and can include wired, wireless, or fiber optic connections. The network 105 can include one or more wired and / or wireless networks capable of transmitting and receiving data signals, voice signals, or video signals, including multimedia signals including voice information, data information, and video information, or a combination thereof. In general, the network 105 can be any combination of connections and protocols that will support communication between the workflow orchestrator 110, the workflow conversion system 120, the user computing devices 130, and other computing devices (not shown) in the distributed data processing environment 100.
[0024] The workflow orchestrator 110 operates to automate workflows by defining a logical flow of activities or tasks from a start event to an end event to accomplish a particular service. In one embodiment, the workflow orchestrator 110 loads and executes workflow instances and outputs parse and schedule events for each workflow. In one embodiment, the workflow orchestrator 110 orchestrates the execution of one or more workflows, and for each workflow, the workflow orchestrator 110 maintains a record of input data for the workflow and input metadata for the workflow. The input data for a workflow includes, but is not limited to, input datasets, parameters, and options. The input metadata for a workflow includes, but is not limited to, input dataset schemas and annotations, additional contextual information including geographic locations of worker nodes, compliance frameworks applicable to the dataset, and applicable security standards.
[0025] The workflow orchestrator 110 may run on a standalone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, the workflow orchestrator 110 may represent a server computing system that utilizes multiple computers as a server system in a cloud computing environment, or the like. In another embodiment, the workflow orchestrator 110 may be a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smartphone, or any programmable electronic device capable of communicating with the workflow transformation system 120, the user computing devices 130, and other computing devices (not shown) in the distributed data processing environment 100 over the network 105. In another embodiment, workflow orchestrator 110 represents a computing system that utilizes clustered computers and components (e.g., database server computers, application server computers, etc.) that function as a single pool of seamless resources when accessed within distributed data processing environment 100.
[0026] The workflow transformation system 120 operates to execute a workflow transformation program 122 that utilizes a supervisor component 124, a transformer component 126, and an enforcer component 128 to suggest and apply one or more transformations (i.e., changes to the workflow) of the workflow executed on the workflow orchestrator 110 that meet a set of goals while complying with a set of constraints. In one embodiment, the workflow transformation system 120 can execute on a standalone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, the workflow transformation system 120 can represent a server computing system that utilizes multiple computers as server systems, such as in a cloud computing environment. In another embodiment, the workflow transformation system 120 can be a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smartphone, or any programmable electronic device capable of communicating over the network 105 with the workflow orchestrator 110, the user computing devices 130, and other computing devices (not shown) in the distributed data processing environment 100. In another embodiment, the workflow transformation system 120 represents a computing system that utilizes clustered computers and components (e.g., database server computers, application server computers, etc.) that function as a single pool of seamless resources when accessed within the distributed data processing environment 100. The workflow transformation system 120 includes a workflow transformation program 122, a supervisor component 124, a converter component 126, and an enforcer component 128. The converter component 126 includes one or more converters, and the enforcer component 128 includes one or more enforcers.The workflow conversion system 120 may comprise internal and external hardware components, as depicted and described in further detail in connection with FIG.
[0027] The workflow transformation program 122 operates to determine one or more suggested transformations of a workflow executed on the workflow orchestrator 110 that meet a set of goals while complying with a set of constraints, and to apply the transformations to the workflow (either on-the-fly or with a pre-start of the workflow) to produce an updated workflow. In the depicted embodiment, the workflow transformation program 122 is a stand-alone program. In another embodiment, the workflow transformation program 122 may be integrated into another software product, such as, for example, a workflow software package. The workflow transformation program 122 is depicted and described in further detail in conjunction with FIG. 2. In one embodiment, the director component 124 of the workflow transformation program 122 observes events output by the workflow orchestrator 110 for a workflow and triggers one or more transformers of the transformer component 126 and one or more enforcers of the enforcer component 128 when necessary. The director component 124 of the workflow transformation program 122 is depicted and described in further detail in conjunction with FIG. 3. In one embodiment, the transformer component 126 of the workflow transform program 122 determines one or more transformations to the workflow while satisfying a set of goals and constraints. The transformer component 126 of the workflow transform program 122 is depicted and described in further detail in connection with FIGURE 4. In one embodiment, the executor component 128 of the workflow transform program 122 calculates and applies workflow updates based on the suggested transformations. The executor component 128 of the workflow transform program 122 is depicted and described in further detail in connection with FIGURE 5.
[0028] The user computing device 130 operates as a computing device associated with a user through which the user can interact with the workflow transformation program 122 through an application user interface. In the depicted embodiment, the user computing device 130 includes an instance of a user interface 132. In one embodiment, the user computing device 130 can be a laptop computer, a tablet computer, a smartphone, a smartwatch, an e-reader, smart glasses, a wearable computer, or any programmable electronic device capable of communicating over the network 105 with various components and devices in the distributed data processing environment 100. In general, the user computing device 130 represents one or more programmable electronic devices, or a combination of programmable electronic devices, capable of executing machine-readable program instructions and communicating over a network, such as the network 105, with other computing devices (not shown) in the distributed data processing environment 100.
[0029] The user interface 132 provides an interface between the workflow conversion program 122 and a user of the user computing device 130. In one embodiment, the user interface 132 is mobile application software. Mobile application software or "apps" are computer programs designed to run on smartphones, tablet computers, and other mobile computing devices. In one embodiment, the user interface 132 may be a graphical user interface (GUI) or a web user interface (WUI) capable of displaying text, documents, web browser windows, user options, application interfaces, and instructions for operation and including information (such as graphics, text, and sound) that the program presents to the user, as well as control sequences that the user employs to control the program. The user interface 132 allows the user of the user computing device 130 to view and / or manage the output of the workflow conversion program 122.
[0030] The workflow conversion program 122 can interact with the user interface 132, the director component 124, the converter component 126, and the enforcer component 128. For example, the user interface 132 may configure the workflow conversion system 120 by communicating user-provided configurations and settings to the workflow conversion program 122. The workflow conversion program 122 can configure the director component 124, the converter component 126, and the enforcer component 128. The workflow conversion program 122 can also collect metadata, such as provenance information, about the behavior of the director component 124, the converter component 126, and the enforcer component 128. The provenance information may include records of processes and entities that produced new data, transformed existing data, or both.
[0031] 2 is a flowchart 200 depicting the operational steps of the workflow conversion program 122 for determining one or more suggested transformations of a workflow to satisfy a set of goals while complying with a set of constraints, and applying the transformations to the workflow (either on-the-fly or with a pre-start of the workflow) to produce an updated workflow running on the workflow conversion system 120 of the distributed data processing environment 100 of FIG. 1 according to an embodiment of the present invention. It should be understood that the process depicted in FIG. 2 shows one possible iteration of the workflow conversion program 112, and that this iteration may be repeated for each workflow or event received from the workflow orchestrator 110. By handling the parse events output by the workflow orchestrator 110, the workflow conversion program 122 is triggered before / after loading a workflow, or a part of a workflow definition, or when a workflow definition is changed. By handling schedule events output by the workflow orchestrator 110, the workflow translator 122 is triggered whenever the state of a workflow node changes (e.g., the node becomes ready or finishes execution). The workflow translator 122 is triggered by the scheduler component 124 deciding to react to an event output by the workflow orchestrator 110.
[0032] In step 210, the workflow translator 112 receives the workflow definition and events for the workflow output from the workflow orchestrator. In one embodiment, the workflow translator 112 receives parse and schedule events issued by the workflow orchestrator 110 at the director component 124. A parse event can be a loaded workflow or part of a loaded workflow, while a schedule event can be a transition of a workflow node to a state, such as a ready to run state or a successful completion state. Step 210 as performed by the director component 124 is depicted and described in further detail in connection with FIG.
[0033] In step 220, the workflow transformation program 112 utilizes one or more transformers to determine possible transformations to the workflow based on the set of goals and the set of constraints. In one embodiment, the workflow transformation program 112 utilizes one or more transformers of the transformer component 126 to determine possible transformations such as adding new nodes and / or graphs, modifying existing nodes and / or graphs, and removing existing nodes and / or graphs. Examples of transformations include, but are not limited to, adding processing nodes, replacing a subgraph of the workflow with another subgraph, replacing a workflow subgraph with cached pre-computed data, and adding logging events for review (e.g., provenance information). The possible transformations affect the workflow structure and can depend on the characteristics defined at configuration / implementation time of the transformer itself. Step 220 as performed by the transformer component 126 is depicted and described in further detail in conjunction with FIG. 4.
[0034] In step 230, the workflow conversion program 112 dynamically applies one or more transformations to the workflow based on the set of goals and the set of constraints. In one embodiment, the workflow conversion program 112 dynamically updates the workflow (even if the workflow is already running) based on the suggested transformations and the set of goals and constraints using one or more of the enforcers of the enforcer component 128. Step 230 as performed by the enforcer component 128 is depicted and described in further detail in connection with FIG.
[0035] Figure 3 is a flow chart depicting the operational steps of step 210 from Figure 2 completed by the overseer component 124 of the workflow conversion system 120 of the distributed data processing environment 100 of Figure 1 in accordance with an embodiment of the present invention. It should be understood that the process depicted in Figure 3 illustrates one possible iteration of step 210, which may be repeated for each parse or schedule event received from the workflow orchestrator 110 for one or more workflows.
[0036] In step 211, the director component 124 receives workflow definitions and events for one or more workflows from the workflow orchestrator. In one embodiment, the director component 124 receives workflow definitions for a workflow, as well as parse and schedule events for the workflow from the workflow orchestrator 110. In some embodiments, the director component 124 receives a batch of events for a workflow output by the workflow orchestrator 110. The director component 124 listens to events issued by the workflow orchestrator 110. These events carry "interesting occurrences" (e.g., a workflow was loaded, a workflow definition changed, a workflow node state changed, etc.) and some information about the workflow definition.
[0037] At decision 212, for a received event, the overseer component 124 determines whether at least one converter can handle the event. In one embodiment, the overseer component 124 checks whether there is at least one such converter that can handle the event. If there is at least one such converter, the overseer component 124 triggers one or more converters to handle the event. If not, the overseer component 124 simply waits for the next event to arrive.
[0038] If the overseer component 124 determines that at least one converter among the converter components 126 can handle the event (decision 212, yes branch), the overseer component 124 proceeds to step 213. If the overseer component 124 determines that at least one converter among the converter components 126 cannot handle the event (decision 212, no branch), the overseer component 124 waits for another event to be received by the overseer component 124.
[0039] In step 213, the director component 124 triggers the converter component 126 to suggest a transformation to the workflow. In one embodiment, the director component 124 triggers an associated converter of the converter component 126 to process the event and potentially generate a transformation. The operational steps of the converter component 126 are detailed in FIG.
[0040] In decision 214, the overseer component 124 determines whether the converter component 126 suggested a conversion. If the overseer component 124 determines that the converter component 126 suggested a conversion (decision 214, yes branch), the overseer component 124 proceeds to step 215. If the overseer component 124 determines that the converter component 126 did not suggest a conversion (decision 214, no branch), the overseer component 124 waits for another event to be received by the overseer component 124.
[0041] In step 215, the director component 124 triggers the enforcer component 128 to apply the transformations suggested by the transformer component 126. Each enforcer may be specialized to a particular set of constraints and / or goals, i.e., set up to apply a subset of one or more transformations based on at least one of a subset of the set of goals and a subset of the constraints. One enforcer may perform a set of transformations and optimize the workflow for its execution time. Another enforcer may perform a set of transformations and optimize the workflow for how much money it costs to execute the workflow. One embodiment may use both of these enforcers to first modify the workflow for its execution time and then a second time minimize the cost of executing the now performance optimized workflow. The operational steps of the enforcer component 128 are detailed in FIG. 5.
[0042] Figure 4 is a flow chart depicting the operational steps of step 220 from Figure 2 completed by one or more of each of the converter components 126 of the workflow conversion system 120 of the distributed data processing environment 100 of Figure 1 in accordance with an embodiment of the present invention. It should be understood that the process depicted in Figure 4 illustrates one possible iteration of step 220, which may be repeated each time the converter components 126 are triggered by the director component 124.
[0043] In step 221, the transformer component 126 receives the workflow definition, the workflow instance state, the workflow node data, the system state, and a list of goals and constraints for the workflow. In one embodiment, one or more of the transformers of the transformer component 126 triggered by the director component 124 receives the workflow definition, the workflow instance state, the workflow node data generated so far (e.g., access to storage locations used by the workflow nodes), the system state, and a list of goals and constraints for the workflow and its associated workflow instances. An example of a goal is to minimize the execution time of a workflow instance. Another example of a goal is to minimize the cost of executing a workflow instance. An example of a constraint is that the output of a workflow node never contains sensitive information (e.g., any data that identifies a particular person). Another example of a constraint is that the schema of the output that the workflow instance generates must not change as a side effect of the transformation.
[0044] A workflow definition, or simply a workflow, is a detailed plan that describes what tasks should be performed and the dependencies between the tasks. This is offline information, i.e., the information encoded directly in the workflow definition. A workflow instance is a superset of a workflow. A workflow instance also contains online information, i.e., the information produced when you run a workflow. By starting the execution of a workflow, the workflow is transformed into a workflow instance. The state of a workflow instance includes the workflow definition and any metadata about the execution of the workflow. This metadata includes the input data, input metadata, outputs, output metadata, and the state of the workflow nodes.
[0045] Each time the workflow orchestrator takes an action (e.g., schedules a task), the "state" of the workflow instance changes. Each time the workflow definition is updated, and each time a workflow node state changes, the workflow instance state also changes. One way for a workflow node state to change is for the state of the task associated with this node to change. For example, when a task associated with a workflow node finishes, the state of the workflow node also changes to reflect that the task has just finished executing.
[0046] The system state contains information about the computing system used to execute the workflow instance. The workflow instance state also contains the workflow definition, but some transformers may have been applied to the workflow just before it was executed.
[0047] In step 222, the transducer component 126 processes the information recorded in the event before, during, and after the event, and publishes a list of events that the transducer can process and thus be triggered to suggest zero or more transformations. The transducer "publishes" that it can process a particular event (e.g., one or more types of events). The transducer contains logic for handling these events and suggesting transformations. Each of the transducers in the transducer component 126 may optionally publish 222 which types of events it can process. This is so that the director component 124 only triggers a particular transducer of the transducer component 126 for events that it has published that it can process. If a transducer does not publish that it can handle a particular event type, the director component 124 triggers this particular transducer for all events.
[0048] In step 223, the converter component 126 examines one or more granular workflows, the workflow node data created so far, and the system state, i.e., the state of the computational resources, e.g., the available capacity of the computational resources, the health of the computational resources, the current cost of the computational resources, and energy consumption.
[0049] In step 224, the transformer component 126 reviews the list of goals and constraints and determines what transformations to suggest. The goal of the transformer is to consider the goals and constraints, the information encoded in the events, and information about the system, and then suggest (i.e., generate) a transformation that the transformer determines is such that when the transformation is applied to the workflow instance, it will create a future workflow instance state, or a future system state, or both, that satisfies the current goals / constraints.
[0050] In step 225, the translator component 126 generates transformations and tags the transformations with metadata describing the benefits and / or risks of each transformation. In one embodiment, the translator component 126 may generate suggested transformations and further tag the transformations with metadata describing the benefits and / or risks of each transformation (e.g., better resource utilization, privacy enhancing actions for data references, etc.). The translators of the translator component 126 generate the transformations by packaging the transformations and exporting them in a format usable by the enforcer of the enforcer component 128. The package may also include metadata about the expected benefits and risks of the transformations.
[0051] In an example embodiment of one process performed by at least one of the transformers of the transformer components 126, the transformer may announce that it can handle an event indicating that a workflow node has transitioned to a ready-to-run state. The transformer should then examine the available computational capacity on the cluster, the resource requests of the workflow node, and the goals / constraints to, for example, optimize the completion time of the workflow instance to determine zero or more transformations. If the workflow node has requested more CPU capacity than is currently available in the cluster, the transformer may generate a transformation to modify the definition of the workflow node that has transitioned to a ready-to-run state such that the CPU resource requests of the workflow node are equal to the available CPU capacity of the cluster. This transformation aims to reduce the likelihood that the tasks of the workflow node that has just transitioned to a ready-to-run state will be queued to acquire CPU resources. The less time the tasks of the workflow spend queuing, the faster they will complete, and the faster the workflow tasks complete, the faster the entire workflow instance will complete.
[0052] Figure 5 is a flow chart depicting the operational steps of step 230 from Figure 2 completed by one or more of the enforcer components 128 of the workflow transformation system 120 of the distributed data processing environment 100 of Figure 1 in accordance with an embodiment of the present invention. It should be understood that the process depicted in Figure 5 illustrates one possible iteration of step 230, which may be repeated each time one or more of the enforcer components 128 are triggered by the director component 124.
[0053] In step 231, the enforcer component 128 receives the list of transformations, workflow definitions, and goals and constraints. In one embodiment, one or more of the enforcers of the enforcer component 128 triggered by the director component 124 receives the list of transformations, workflow definitions, and goals and constraints.
[0054] In step 232, an enforcer in the enforcer component 128 selects a subset of transformations based on the estimated cost of implementing the transformations and the estimated benefit of the transformations. In one embodiment, one or more enforcers in the enforcer component 128 select the subset of transformations after merging conflicting / overlapping / redundant transformations based on goals and constraints.
[0055] In step 233, one or more of the executors of the executor component 128 develop a workflow update strategy that includes updating workflow nodes, removing workflow nodes, adding workflow nodes, and modifying workflow instance state by applying one or more inference and / or optimization algorithms to a subset of transformations given the list of goals and constraints. An executor can be task-specialized, i.e., it includes one or more inference and optimization algorithms. Inference algorithms generate conclusions from available knowledge. Optimization algorithms find sufficient solutions to problems.
[0056] In step 234, one or more of the enforcers of the enforcer components 128 apply a workflow update strategy to the workflow to produce an updated workflow. In some embodiments, one or more of the enforcers of the enforcer components 128 dynamically update, add, and remove workflow nodes from a workflow definition even when the workflow definition is running (i.e., the workflow definition is part of a workflow instance). A workflow update strategy is the ordering of update / remove / add operations to workflow nodes and the triggering of specific workflow orchestrator actions to facilitate dynamic manipulation of the associated running workflow instance.
[0057] In another embodiment, one or more of the enforcers of the enforcer component 128 skips execution of workflow nodes that have been executed in the past, and the results are stored in some data cache. Instead of executing these workflow nodes, the workflow definition is updated to reuse the cached outputs, thereby improving the time to completion. The workflow update strategy then involves identifying which of the workflow nodes can be stored (i.e., their cached outputs can be reused), retrieving the cached outputs for these nodes, informing the workflow orchestrator that these workflow nodes should not be executed, and populating the outputs of these stored workflow nodes with the cached output data.
[0058] In step 235, the enforcer in the enforcer component 128 outputs the updated workflow to the workflow orchestrator. After step 235, the workflow orchestrator 110 updates its internal data structures to use the updated workflow created in step 234.
[0059] Although this disclosure includes a detailed description of cloud computing, it should be understood that implementations of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed.
[0060] 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 service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0061] The characteristics are as follows:
[0062] On-Demand Self-Service: Cloud customers can unilaterally provision computing power, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.
[0063] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, and PDAs).
[0064] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with dynamic allocation and reallocation of various physical and virtual resources according to demand. Location independence is meant in that consumers generally have no control or knowledge of the exact location of the resources provided, but the location may be specified at a higher level of abstraction (e.g., country, state, or data center).
[0065] Rapid Elasticity: Capacity can be rapidly and elastically provisioned, sometimes automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased at any time in any amount.
[0066] Measured Services: Cloud systems automatically control and optimize resource utilization by leveraging metering capabilities at several levels of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource utilization can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services used.
[0067] The service model is as follows:
[0068] Software as a Service (SaaS): The consumer is provided with the ability to use the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer has no management or control over the underlying cloud infrastructure, including networks, servers, operating systems, storage, or possibly individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0069] Platform as a Service (PaaS): The capability provided to a consumer is to deploy consumer-created or acquired applications, created using provider-supported programming languages and tools, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of the environment that hosts the applications.
[0070] Infrastructure as a Service (IaaS): The capability provided to a customer is to provide processing, storage, networking, and other basic computing resources on which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, deployed applications, and in some cases limited control over the selection of networking components (e.g., host firewalls).
[0071] The deployment models are as follows:
[0072] Private Cloud: The cloud infrastructure is operated solely for the organization. The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site.
[0073] Community Cloud: The cloud infrastructure is shared by several organizations to support a unique community that has shared concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site.
[0074] Public Cloud: Cloud infrastructure is available to the general public or large industry entities and is owned by organizations that sell cloud services.
[0075] Hybrid Cloud: A cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are tied together by standard or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0076] A cloud computing environment is service-oriented with a focus on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0077] Referring now to FIG. 1, an illustrative cloud computing environment 50 is depicted. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud users, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, may communicate. The nodes 10 may communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks, such as a private, community, public, or hybrid cloud, or combinations thereof, as described below (not shown). This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service without the cloud user having to maintain resources on a local computing device. The types of computing devices 54A-N illustrated in FIG. 1 are intended to be illustrative only, and it is understood that the computing node 10 and cloud computing environment 50 can communicate with any type of computerized device over any type of network and / or network-addressable connections (e.g., using a web browser).
[0078] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 2 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:
[0079] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (reduced instruction set computing) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0080] The virtualization layer 70 provides an abstraction layer within which examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0081] In one example, management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the usage of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks, and protection of data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources to meet required service levels. Service level agreement (SLA) planning and fulfillment 85 provides pre-location and procurement of cloud computing resources in anticipation of future requirements according to SLAs.
[0082] The workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and workflow transformation processing 96.
[0083] 8 illustrates a block diagram of components of a computing device 800 suitable for the workflow conversion program 122 on the workflow conversion system 120 in the distributed data processing environment 100 of FIG. 1 in accordance with an embodiment of the present invention. It should be appreciated that FIG. 8 is intended as an illustration of one implementation and is not intended to suggest any limitation to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made.
[0084] Computing device 800 includes a communications fabric 802 that provides communications between cache 816, memory 806, persistent storage 808, communications units 810, and input / output (I / O) interfaces 812. Communications fabric 802 may be implemented with any architecture designed to pass data and / or control information between processors (such as microprocessors, communications and network processors), system memory, peripheral devices, and any other hardware components in the system. For example, communications fabric 802 may be implemented with one or more buses or crossbar switches.
[0085] The memory 806 and the persistent storage 808 are computer readable storage media. In this embodiment, the memory 806 includes random access memory (RAM). In general, the memory 806 may include any suitable volatile or non-volatile computer readable storage medium. The cache 816 is a high-speed memory that enhances the performance of the computer processor 804 by holding recently accessed data and data close to the data accessed from the memory 806.
[0086] The programs may be stored and / or accessed in persistent storage 808 and in memory 806 for execution by one or more of the respective computer processors 804 via cache 816. In an embodiment, persistent storage 808 includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage 808 may include a solid state hard drive, a semiconductor storage device, a read-only memory (ROM), an erasable programmable read-only memory (EPROM), a flash memory, or any other computer-readable storage medium capable of storing program instructions or digital information.
[0087] The media used by persistent storage 808 may also be removable. For example, a removable hard drive may be used for persistent storage 808. Other examples include optical and magnetic disks, thumb drives, and smart cards, which are inserted into a drive for transfer to another computer-readable storage medium that is also part of persistent storage 808.
[0088] Communications unit 810, in these examples, provides for communication with other data processing systems or devices. In these examples, communications unit 810 includes one or more network interface cards. Communications unit 810 may provide communications through the use of either or both physical and wireless communications links. Programs may be downloaded to persistent storage 808 via communications unit 810.
[0089] The I / O interface 812 allows for input and output of data with other devices that may be connected to the workflow transformation system 120. For example, the I / O interface 812 may provide a connection to an external device 818, such as a keyboard, a keypad, a touch screen, or some other suitable input device, or a combination thereof. The external device 818 may also include a portable computer-readable storage medium, such as, for example, a thumb drive, a portable optical or magnetic disk, and a memory card. Software and data used to practice embodiments of the present invention may be stored on such a portable computer-readable storage medium and loaded into the persistent storage 808 via the I / O interface 812. The I / O interface 812 also connects to a display 820.
[0090] Display 820 provides a mechanism for displaying data to a user and may be, for example, a computer monitor.
[0091] The programs described herein are identified based on the applications in which they are implemented in specific embodiments of the invention. Nevertheless, it should be understood that any particular program terminology herein is used merely for convenience, and thus the invention should not be limited to use merely in any specific application identified and / or suggested by such terminology.
[0092] The present invention may be a system, method, and / or computer program product, which may include a computer readable storage medium (or media) having computer readable program instructions for causing a processor to carry out aspects of the present invention.
[0093] A computer readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer readable storage medium can be, for example, but 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 computer readable storage media includes portable computer 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), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge-in-groove structures having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein should not be interpreted as signals that are transitory in nature, such as electric waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.
[0094] The computer readable program instructions described herein can be downloaded from the computer readable storage medium to each computing / processing device or to an external computer or external storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface of each computing / processing device receives the computer readable program instructions from the network and forwards the computer readable program instructions for storage on the computer readable storage medium within the respective computing / processing device.
[0095] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine language instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or source or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk®, C++, or the like, and traditional 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, or partially on the user's computer, as a stand-alone software package, or partially on the user's computer and partially 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 (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit device, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by utilizing state information of the computer readable program instructions to individualize the electronic circuitry to perform aspects of the present invention.
[0096] Aspects of the present invention 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 invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0097] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, the instructions of which execute via the processor of the computer or other programmable data processing apparatus to produce means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable program instructions may also be stored on a computer readable storage medium such that the computer readable storage medium having stored thereon an article of manufacture including instructions for performing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, and may direct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner.
[0098] The computer readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to perform a series of operational steps on the computer, other programmable apparatus, or other device to produce a computer-executed process, such that the instructions execute on the computer, other programmable apparatus, or other device to perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0099] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for performing a specified logical function. In some alternative implementations, the functions noted in the blocks may be performed out of the order noted in the figures. For example, two blocks shown in succession may in fact be performed substantially simultaneously, or the blocks may sometimes be performed in reverse order depending on the functionality involved. It is also noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be executed by a dedicated hardware-based system that performs the specified functions or acts or executes a combination of dedicated hardware and computer instructions.
[0100] The description of various embodiments of the present invention has been 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 present invention. 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 those skilled in the art to understand the embodiments disclosed herein.
Claims
1. 1. A computer-implemented method comprising: receiving, by one or more processors, a workflow definition for the workflow and one or more events output by a workflow orchestrator, the one or more events being at least one of a parse event and a schedule event; determining, by the one or more processors using one or more transformers, one or more transformations to the workflow based on a set of goals and a set of constraints, wherein the one or more transformations are at least one of adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; dynamically applying, by the one or more processors, the one or more transformations to the workflow based on the set of goals and the set of constraints using one or more enforcers; 4. A computer-implemented method comprising:
2. The computer-implemented method of claim 1 , wherein each transducer of the one or more transducers publishes one or more types of events that each respective transducer is set up to process.
3. triggering, by the one or more processors, at least one converter of the one or more converters based on the received one or more events to process the one or more events and determine whether there is a conversion to suggest; triggering, by the one or more processors, at least one of the one or more enforcers based on the one or more transformations, as well as the set of goals and the set of constraints; The computer-implemented method of claim 1 or 2, further comprising:
4. 4. A computer-implemented method according to claim 1, wherein each of the one or more enforcers is set up to apply a respective transformation based on at least one of a subset of the set of goals and a subset of the constraints.
5. receiving, at respective transformers, the workflow definition, workflow instance state, workflow node data, system state, the set of goals, and the set of constraints; analyzing the workflow, the workflow node data, and the system state at one or more granularities with the respective transformers; 5. The computer-implemented method of claim 1, further comprising:
6. generating, by the one or more processors, the one or more transformations by packaging the one or more transformations and exporting the one or more transformations in a format readable by the one or more enforcers; tagging, by the one or more processors, the one or more transformations with metadata comprising benefits and risks for each transformation; 6. The computer-implemented method of claim 1, further comprising:
7. dynamically applying the one or more transformations to the workflow based on the set of goals and the set of constraints using the one or more enforcers; constructing, by the one or more processors, a workflow update strategy by applying at least one of an inference algorithm and an optimization algorithm to the one or more transformations given the set of goals and the set of constraints; dynamically applying, by the one or more processors, the workflow update strategy to the workflow to generate an updated workflow; 7. The computer-implemented method of claim 1, further comprising:
8. 1. A computer program product comprising: One or more computer readable storage media; and program instructions collectively stored on the one or more computer readable storage media, the stored program instructions comprising: program instructions for receiving a workflow definition for a workflow output by a workflow orchestrator and one or more events, the one or more events being at least one of a parse event and a schedule event; program instructions for determining, using one or more transformers, one or more transformations to the workflow based on a set of goals and a set of constraints, the one or more transformations being at least one of: adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; and program instructions for dynamically applying, using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints; The program instructions include: A computer program product comprising:
9. 9. The computer program product of claim 8, wherein each transducer of the one or more transducers publishes one or more types of events that each respective transducer is set up to process.
10. program instructions for processing the one or more events and triggering at least one of the one or more converters based on the received one or more events to determine if there is a conversion to suggest; program instructions for triggering at least one of the one or more enforcers based on the one or more transformations, as well as the set of goals and the set of constraints; 10. The computer program product of claim 8 or 9, further comprising:
11. 11. A computer program product as claimed in any one of claims 8 to 10, wherein each enforcer of the one or more enforcers is set up to apply a respective transformation based on at least one of a subset of the set of goals and a subset of the constraints.
12. program instructions for receiving, at respective transformers, the workflow definition, workflow instance state, workflow node data, system state, the set of goals, and the set of constraints; program instructions for analyzing the workflow, the workflow node data, and the system state at one or more granularities with the respective transformers; 12. The computer program product of claim 8, further comprising:
13. program instructions for generating the one or more transformations by packaging the one or more transformations and exporting the one or more transformations in a format readable by the one or more enforcers; program instructions for tagging the one or more transformations with metadata comprising benefits and risks for each transformation; 13. A computer program product according to any of claims 8 to 12, further comprising:
14. the program instructions for dynamically applying, using the one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints; program instructions for constructing a workflow update strategy by applying at least one of an inference algorithm and an optimization algorithm to the one or more transformations given the set of goals and the set of constraints; program instructions for dynamically applying the workflow update strategy to the workflow to produce an updated workflow; 14. A computer program product according to any of claims 8 to 13, further comprising:
15. 1. A computer system comprising: one or more computer processors; one or more computer readable storage media; program instructions collectively stored on the one or more computer-readable storage media for execution by at least one of the one or more computer processors, the stored program instructions comprising: program instructions for receiving a workflow definition for a workflow output by a workflow orchestrator and one or more events, the one or more events being at least one of a parse event and a schedule event; program instructions for determining, using one or more transformers, one or more transformations to the workflow based on a set of goals and a set of constraints, the one or more transformations being at least one of: adding a new node, adding a new graph, modifying at least one existing node, modifying at least one existing graph, removing at least one existing node, and removing at least one existing graph; and program instructions for dynamically applying, using one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints; The program instructions include: A computer system comprising:
16. 16. The computer system of claim 15, wherein each transducer of the one or more transducers publishes one or more types of events that each respective transducer is set up to process.
17. program instructions for processing the one or more events and triggering at least one of the one or more converters based on the received one or more events to determine if there is a conversion to suggest; program instructions for triggering at least one of the one or more enforcers based on the one or more transformations, as well as the set of goals and the set of constraints; 17. The computer system of claim 15 or 16, further comprising:
18. 18. A computer system according to any of claims 15 to 17, wherein each enforcer of the one or more enforcers is set up to apply a respective transformation based on at least one of a subset of the set of goals and a subset of the constraints.
19. program instructions for receiving, at respective transformers, the workflow definition, workflow instance state, workflow node data, system state, the set of goals, and the set of constraints; program instructions for analyzing the workflow, the workflow node data, and the system state at one or more granularities with the respective transformers; 19. The computer system of claim 15, further comprising:
20. the program instructions for dynamically applying, using the one or more enforcers, the one or more transformations to the workflow based on the set of goals and the set of constraints; program instructions for constructing a workflow update strategy by applying at least one of an inference algorithm and an optimization algorithm to the one or more transformations given the set of goals and the set of constraints; program instructions for dynamically applying the workflow update strategy to the workflow to produce an updated workflow; 20. The computer system of claim 15, further comprising:
21. A computer program comprising program code means adapted to perform the method according to any of claims 1 to 7, when said program is run on a computer.