Method, system, and computer program product for optimizing runtime branch selection in a flow process
First Claim
1. A method for optimizing runtime branch selection in a flow process of an enterprise service bus of a service-oriented architecture, comprising:
- gathering, by a runtime branch collector, performance metrics of flow branch behavior for executed flows in a runtime system of the enterprise service bus of the service-oriented architecture over a period of time;
passing the performance metrics for the flow branch behavior from the runtime branch collector to a global runtime metric collector, the global runtime metric collector comprising a central repository for containing performance metrics for a plurality of types of flows and flow branches as routes of messages in the runtime system of the enterprise service bus;
using, by a global runtime branch switch director, the performance metrics for the flow branch behavior from the global runtime metric collector to determine an optimal ordering of branches for a currently running flow of the enterprise service bus of the service-oriented architecture, comprising;
identifying a branch point in the currently running flow by the global runtime branch switch director, the branch point having two or more branches that are taken from the branch point according to a branch ordering;
generating all ordering permutations, by the global runtime branch switch director, for at least a portion of the branches in the branch point for the currently running flow and identifying any permutations that have not been executed from the ordering permutations;
gathering metrics, by the runtime branch collector, for at least one permutation of the branch point in the currently running flow;
comparing the metrics to performance metrics of executed flows having substantially similar flow branch behavior by searching the global runtime metric collector for similar flows; and
identifying, by the global runtime branch switch director, optimal branch ordering for the permutation based upon the comparison and data associated between the two or more branches; and
executing the flow, by a flow engine, according to the optimal branch ordering as directed by the global runtime branch switch director such that a runtime branch switch of the flow engine is directed with the optimal branch ordering at each branch encountered.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, system, and computer program product for optimizing runtime branch selection in a flow process are provided. The method includes gathering performance metrics of flow branch behavior for executed flows in a runtime system over time and using aggregated performance metrics for the behavior to determine an optimal ordering of branches for a currently running flow. The optimal ordering is determined by identifying one or more branch points in the flow, generating ordering permutations for at least a portion of the branches in the branch point for the flow to identify any permutations that have not been executed, gathering metrics for permutation(s) of the branch point in the flow, comparing the metrics to performance metrics of executed flows having substantially similar flow branch behavior, and identifying optimal branch ordering for the permutation(s) based upon the comparison. The method also includes executing the flow according to the optimal branch ordering.
-
Citations
20 Claims
-
1. A method for optimizing runtime branch selection in a flow process of an enterprise service bus of a service-oriented architecture, comprising:
-
gathering, by a runtime branch collector, performance metrics of flow branch behavior for executed flows in a runtime system of the enterprise service bus of the service-oriented architecture over a period of time; passing the performance metrics for the flow branch behavior from the runtime branch collector to a global runtime metric collector, the global runtime metric collector comprising a central repository for containing performance metrics for a plurality of types of flows and flow branches as routes of messages in the runtime system of the enterprise service bus; using, by a global runtime branch switch director, the performance metrics for the flow branch behavior from the global runtime metric collector to determine an optimal ordering of branches for a currently running flow of the enterprise service bus of the service-oriented architecture, comprising; identifying a branch point in the currently running flow by the global runtime branch switch director, the branch point having two or more branches that are taken from the branch point according to a branch ordering; generating all ordering permutations, by the global runtime branch switch director, for at least a portion of the branches in the branch point for the currently running flow and identifying any permutations that have not been executed from the ordering permutations; gathering metrics, by the runtime branch collector, for at least one permutation of the branch point in the currently running flow; comparing the metrics to performance metrics of executed flows having substantially similar flow branch behavior by searching the global runtime metric collector for similar flows; and identifying, by the global runtime branch switch director, optimal branch ordering for the permutation based upon the comparison and data associated between the two or more branches; and executing the flow, by a flow engine, according to the optimal branch ordering as directed by the global runtime branch switch director such that a runtime branch switch of the flow engine is directed with the optimal branch ordering at each branch encountered. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for optimizing runtime branch selection in a statically-configured flow process of an enterprise service bus of a service-oriented architecture, comprising:
-
identifying, by a global runtime branch switch director of a runtime system, flow branch behavior for flows in the runtime system of the enterprise service bus of the service-oriented architecture for instantiating conceptual flows of an application, the flow branch behavior including locations in a flow where clones of data are taken; reducing, by the global runtime branch switch director, the number of clones of data otherwise created at runtime of the enterprise service bus by selecting any branches that, upon execution, would require cloning of data associated with another branch having a common branch point, wherein each branch represents a different route of messages in the runtime system of the enterprise service bus; and instructing, by the global runtime branch switch director, a flow engine of the runtime system to execute the selected branches before executing the other branch by changing a branch ordering at the common branch point. - View Dependent Claims (8)
-
-
9. A system for optimizing runtime branch selection in a flow process of an enterprise service bus of a service-oriented architecture, comprising:
-
a computer processor; and a runtime system application executing on the computer processor, the runtime system application implementing a method, comprising; gathering, by a runtime branch collector, performance metrics of flow branch behavior for executed flows in a runtime system of the enterprise service bus of the service-oriented architecture over a period of time; passing the performance metrics for the flow branch behavior from the runtime branch collector to a global runtime metric collector, the global runtime metric collector comprising a central repository for containing performance metrics for a plurality of types of flows and flow branches as routes of messages in the runtime system of the enterprise service bus; using, by a global runtime branch switch director, the performance metrics for the flow branch behavior from the global runtime metric collector to determine an optimal ordering of branches for a currently running flow of the enterprise service bus of the service-oriented architecture, comprising; identifying a branch point in the currently running flow by the global runtime branch switch director, the branch point having two or more branches that are taken from the branch point according to a branch ordering; generating all ordering permutations, by the global runtime branch switch director, for at least a portion of the branches of the branch point in the currently running flow and identifying any permutations that have not been executed from the ordering permutations; gathering metrics, by the runtime branch collector, for at least one permutation of the branch point in the currently running flow; comparing the metrics to performance metrics of executed flows having substantially similar flow branch behavior by searching the global runtime metric collector for similar flows; and identifying, by the global runtime branch switch director, optimal branch ordering for the permutation based upon the comparison and data associated between the two or more branches; and executing the flow, by a flow engine, according to the optimal branch ordering as directed by the global runtime branch switch director such that a runtime branch switch of the flow engine is directed with the optimal branch ordering at each branch encountered. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computer program product for optimizing runtime branch selection in a flow process of an enterprise service bus of a service-oriented architecture, the computer program product comprising a non-transitory storage medium having computer-readable program code stored thereon, the program code causing a computer to implement a method, the method comprising:
-
gathering, by a runtime branch collector, performance metrics of flow branch behavior for executed flows in a runtime system of the enterprise service bus of the service-oriented architecture over a period of time; passing the performance metrics for the flow branch behavior from the runtime branch collector to a global runtime metric collector the global runtime metric collector comprising a central repository for containing performance metrics for a plurality of types of flows and flow branches as routes of messages in the runtime system of the enterprise service bus; using, by a global runtime branch switch director, the performance metrics for the flow branch behavior from the global runtime metric collector to determine an optimal ordering of branches for a currently running flow of the enterprise service bus of the service-oriented architecture, comprising; identifying a one branch point in the currently running flow by the global runtime branch switch director, the branch point having two or more branches that are taken from the branch point according to a branch ordering; generating all ordering permutations, by the global runtime branch switch director, for at least a portion of the branches in the branch point for the currently running flow and identifying any permutations that have not been executed from the ordering permutations; gathering metrics, by the runtime branch collector, for at least one permutation of the branch point in the currently running flow; comparing the metrics to performance metrics of executed flows having substantially similar flow branch behavior by searching the runtime metric collector for similar flows; and identifying, by the global runtime branch switch director, optimal branch ordering for the permutation based upon the comparison and data associated between the two or more branches; and executing the flow, by a flow engine, according to the optimal branch ordering as directed by the global runtime branch switch director such that a runtime branch switch of the flow engine is directed with the optimal branch ordering at each branch encountered. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification