Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
First Claim
1. A computer-implemented method for graphical development of fully executable workflow applications, wherein said fully executable workflow applications are stored in a form of computer-executable program code in computer memory, a processor runs the workflow operation by invoking said program code, said program code facilitates processing of workflow orders, wherein said method for graphical development comprises the following steps:
- (A) Describing an element of workflow-process graphically with software that accepts interactive user input;
(B) Interpreting the user input to obtain workflow-related data and transforming obtained workflow-related data into an incremental modification of incrementally constructed set of class objects that represents a workflow-process description;
(C) Repeating steps (A) and (B) in a loop until workflow-process description is complete;
(D) Extracting workflow-process-related data from the set of class objects and transforming the extracted workflow-process-related data into a workflow-process definition;
(E) Generating source code of the workflow application software, compiling instructions, and linking instruction from the workflow-process definition;
(F) Compiling the source code of the workflow application software with the compiling instructions;
(G) Linking result of the performed compiling with generated linking instructions;
andwherein said method further comprises defining a work-flow-process comprising the following steps;
(a) Establishing a matrix of workflow-activities, wherein said workflow-activities are individual items of work comprised by a potential workflow-process where all transactional operations potentially performed by each one of said individual items are potentially executed as a single transaction within each one of said workflow-activities of said potential workflow-process, and wherein said establishing the matrix further comprises;
(i) Arranging workflow-activities comprised by the workflow-process being defined according to required sequence of execution of said workflow-activities within said workflow-process and according to possibilities for concurrent execution of some of said workflow-activities within said workflow-process;
(ii) Defining a constant, named PROCESS_STEPS, representing a number of sequential steps of execution of a workflow-process being defined, wherein on each one of said sequential steps of execution either one activity is executed, or either two or more activities are executed concurrently;
(iii) Defining a constant, named MAX_STEP_DEPTH, representing a maximum number of workflow-activities executed concurrently on one step of workflow-process being defined;
(iv) Declaring and initializing a two-dimensional array of Boolean elements being a workflow-activities matrix, with dimensions MAX_STEP_DEPTH by PROCESS_STEPS, wherein an array element with value TRUE represents existence of a workflow-activity on position in said workflow-activities-matrix with coordinates equal to said array element indexes and wherein an array element with value FALSE represents non-existence of a workflow-activity on position in said workflow-activities with coordinates equal to said array element indexes;
(b) Defining a main flow-graph, wherein the defining matrix of workflow-activities are further being represented as nodes of said flow-graph by incorporating control-connectors in order to represent a potential flow-of-control between said nodes within a potential workflow-process, wherein each said control-connector signals successful execution of its sourcing workflow-activity with execution result having value TRUE, wherein two or more control-connectors sourcing from one of said nodes initiate concurrent execution of destination nodes of said control-connectors, wherein two or more control-connectors having a common destination node impose a requirement for synchronizing conjunction of signals of all control-connectors incoming to said common destination node in order to trigger execution of said common destination node, wherein said defining the main flow-graph further comprises;
(i) Defining a constant, named MAX_CONNECT_OUT, representing maximum number of main control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined;
(ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_CONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS_STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and thereby describe a position of a workflow-activity in said workflow-activities matrix,wherein said described positions of MAX_CONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_CONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value TRUE;
(c) Defining one or more alternative control connectors, wherein each one of said alternative control connectors signals successful execution of its sourcing workflow-activity with execution result having value FALSE, wherein two or more of said alternative control-connectors sourcing from same workflow-activity initiate concurrent execution of destination workflow-activities of said alternative control-connectors, wherein a workflow-activity having established during the defining main flow-graph a requirement for synchronizing conjunction of signals of all incoming to it control-connectors cannot be a destination workflow-activity of an alternative control connector, wherein defining the one or more alternative control-connectors further comprises;
(i) Defining a constant, named MAX_ALTCONNECT_OUT, representing maximum number of alternative control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined;
(ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_ALTCONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS_STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and thereby describe the position of a workflow-activity in said workflow-activities matrix, wherein said described positions of MAX_ALTCONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_ALTCONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value FALSE;
(d) Defining workflow-components matrix, wherein every element of said workflow-components matrix represents a software component, associated with a workflow-activity of workflow-process being defined, for potential plugging for execution as part of a potential single transaction within said workflow-activity of the workflow-process, wherein the defining of the workflow-component matrix further comprises;
(i) Declaring a two-dimensional array of elements of type UUID (Universal Unique Identifier, interchangeable with the term GUID, Globally Unique Identifier) with dimensions identical to dimensions of the declared two-dimensional array representing workflow-activities matrix;
(ii) Initializing elements of the declared array in the following manner;
for every element of said array representing the workflow-activities matrix with value TRUE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value representing a software component to be associated with represented workflow-activity, and for every element of said array representing workflow-activities matrix with value FALSE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value indicating a dummy UUID.
0 Assignments
0 Petitions
Accused Products
Abstract
This invention is about engineering approach to development of transactional workflow applications and about ability of this way produced applications to concurrently process large number of workflow requests of identical type with high speed. It provides methods and articles of manufacture: for graphical development of fully executable workflow application; for producing configuration of class objects and threads with capacity for concurrent processing of multitude of requests of identical type for transactional workflow and for concurrent execution and synchronization of parallel workflow-activity sequences within processing of a workflow request; for application self-scaling up and self-scaling down of its processing capacity; and for real-time visualization of application'"'"'s thread structures, thread quantity, thread usage, and scaling-enacted changes in threads structure and quantity.
112 Citations
15 Claims
-
1. A computer-implemented method for graphical development of fully executable workflow applications, wherein said fully executable workflow applications are stored in a form of computer-executable program code in computer memory, a processor runs the workflow operation by invoking said program code, said program code facilitates processing of workflow orders, wherein said method for graphical development comprises the following steps:
-
(A) Describing an element of workflow-process graphically with software that accepts interactive user input; (B) Interpreting the user input to obtain workflow-related data and transforming obtained workflow-related data into an incremental modification of incrementally constructed set of class objects that represents a workflow-process description; (C) Repeating steps (A) and (B) in a loop until workflow-process description is complete; (D) Extracting workflow-process-related data from the set of class objects and transforming the extracted workflow-process-related data into a workflow-process definition; (E) Generating source code of the workflow application software, compiling instructions, and linking instruction from the workflow-process definition; (F) Compiling the source code of the workflow application software with the compiling instructions; (G) Linking result of the performed compiling with generated linking instructions; and wherein said method further comprises defining a work-flow-process comprising the following steps; (a) Establishing a matrix of workflow-activities, wherein said workflow-activities are individual items of work comprised by a potential workflow-process where all transactional operations potentially performed by each one of said individual items are potentially executed as a single transaction within each one of said workflow-activities of said potential workflow-process, and wherein said establishing the matrix further comprises; (i) Arranging workflow-activities comprised by the workflow-process being defined according to required sequence of execution of said workflow-activities within said workflow-process and according to possibilities for concurrent execution of some of said workflow-activities within said workflow-process; (ii) Defining a constant, named PROCESS_STEPS, representing a number of sequential steps of execution of a workflow-process being defined, wherein on each one of said sequential steps of execution either one activity is executed, or either two or more activities are executed concurrently; (iii) Defining a constant, named MAX_STEP_DEPTH, representing a maximum number of workflow-activities executed concurrently on one step of workflow-process being defined; (iv) Declaring and initializing a two-dimensional array of Boolean elements being a workflow-activities matrix, with dimensions MAX_STEP_DEPTH by PROCESS_STEPS, wherein an array element with value TRUE represents existence of a workflow-activity on position in said workflow-activities-matrix with coordinates equal to said array element indexes and wherein an array element with value FALSE represents non-existence of a workflow-activity on position in said workflow-activities with coordinates equal to said array element indexes; (b) Defining a main flow-graph, wherein the defining matrix of workflow-activities are further being represented as nodes of said flow-graph by incorporating control-connectors in order to represent a potential flow-of-control between said nodes within a potential workflow-process, wherein each said control-connector signals successful execution of its sourcing workflow-activity with execution result having value TRUE, wherein two or more control-connectors sourcing from one of said nodes initiate concurrent execution of destination nodes of said control-connectors, wherein two or more control-connectors having a common destination node impose a requirement for synchronizing conjunction of signals of all control-connectors incoming to said common destination node in order to trigger execution of said common destination node, wherein said defining the main flow-graph further comprises; (i) Defining a constant, named MAX_CONNECT_OUT, representing maximum number of main control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined; (ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_CONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS_STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and thereby describe a position of a workflow-activity in said workflow-activities matrix, wherein said described positions of MAX_CONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_CONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value TRUE; (c) Defining one or more alternative control connectors, wherein each one of said alternative control connectors signals successful execution of its sourcing workflow-activity with execution result having value FALSE, wherein two or more of said alternative control-connectors sourcing from same workflow-activity initiate concurrent execution of destination workflow-activities of said alternative control-connectors, wherein a workflow-activity having established during the defining main flow-graph a requirement for synchronizing conjunction of signals of all incoming to it control-connectors cannot be a destination workflow-activity of an alternative control connector, wherein defining the one or more alternative control-connectors further comprises; (i) Defining a constant, named MAX_ALTCONNECT_OUT, representing maximum number of alternative control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined; (ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_ALTCONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS_STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and thereby describe the position of a workflow-activity in said workflow-activities matrix, wherein said described positions of MAX_ALTCONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_ALTCONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value FALSE; (d) Defining workflow-components matrix, wherein every element of said workflow-components matrix represents a software component, associated with a workflow-activity of workflow-process being defined, for potential plugging for execution as part of a potential single transaction within said workflow-activity of the workflow-process, wherein the defining of the workflow-component matrix further comprises; (i) Declaring a two-dimensional array of elements of type UUID (Universal Unique Identifier, interchangeable with the term GUID, Globally Unique Identifier) with dimensions identical to dimensions of the declared two-dimensional array representing workflow-activities matrix; (ii) Initializing elements of the declared array in the following manner;
for every element of said array representing the workflow-activities matrix with value TRUE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value representing a software component to be associated with represented workflow-activity, and for every element of said array representing workflow-activities matrix with value FALSE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value indicating a dummy UUID.- View Dependent Claims (2)
-
-
3. A software product stored in a computer storage medium, executed by processor for transactional processing of workflow comprising:
-
(A) System skeleton as a hierarchical tree of class objects with capacity to represent a variety of workflow configurations, wherein; Said class objects are computer memory instances of classes or structures; Any level of said hierarchical tree contains one or multiple collections and each said collection contains a predefined or dynamically defined number of one or multiple objects, wherein objects belonging to any said collection of same hierarchy level are computer memory instances of classes or structures of identical type; First level of said hierarchical tree consists of a single collection and every next level of hierarchy contains one or multiple collections and individual objects, wherein said collections and said individual objects are accessible via references controlled by objects belonging to collections from previous level; Wherein said hierarchical tree of class objects contains the following levels and siblings; (i) First level, a steps-collection, wherein collection objects represent steps of said workflow-process, each said object being parent of a Second level collection; (ii) Second level, an activities-collection per step of said workflow-process, wherein said collection objects represent workflow-activities that might be executed concurrently with all other workflow-activities represented by objects belonging to the same collection, wherein each object is a parent of Third level siblings, said siblings being of 3 distinct categories;
a processor collection, a workload-dispatching balancer object, and a work-flow-synchronization object;(iii) Third level'"'"'s sibling One, a processor-collection per workflow-activity, wherein an object of said collection represents an individual workload-processing squad having a capacity to process a portion of entire workload specific for said workflow-activity, each said object being parent of a Fourth level collection; (iv) Third level'"'"'s sibling Two, a workload-dispatching object per workflow-activity; (v) Third level'"'"'s sibling Three, a workflow-synchronizing object per workflow-activity if required by flow-graph of said workflow-process, wherein said object contains data defining required synchronization scheme; (vi) Fourth level, a processing-thread-dedicated objects collection, where an object of said collection represents a dedicated area for data holding and data exchange between threads. (B) Means for splitting of a control flow by launching one or more new parallel control flows, wherein said parallel control flow comprises execution of at least one workflow-activity, or sequence of plurality of workflow-activities, before joining with its launching, or other, flow of control, wherein said parallel control flow launches one or more new parallel control flows, wherein a workflow-activity, that is part of a parallel control flow, generates notification message to synchronizing thread at control flow join-point with other control flow or plurality of control flows about a potential result with value FALSE of its execution, wherein a workflow-activity that is part of a parallel control flow further splitting one or more times, generates notification messages to synchronizing threads at splitting branches join-points with other control flows about a potential result with value FALSE of its execution, wherein synchronizing threads generate notification messages to synchronizing threads responsible for join-point of synchronized control flow with one or more control flows or to synchronizing threads responsible for join-points of said synchronized control flow'"'"'s splitting branches about termination of said synchronized control flow. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer-implemented method for transactional plugging of software components into a workflow-activity of a workflow-process at runtime, wherein said transactional plugging facilitates inclusion of all transactional operations, performed by invoking a method of plugged software component, into each transaction initiated by each workflow instance for execution of said workflow-activity, wherein said method for transactional plugging comprises the steps of:
-
(A) Creation and initialization of processing threads, wherein during its initialization each said processing thread instantiates a non-transactional component object and sends to it an amount of data being constant between processing of individual workflow requests and being necessary to perform execution of relevant portion of workflow request that will potentially be assigned to said processing thread; (B) The instantiated non-transactional component object instantiates its own transactional component-intercepting object, and with CUID (Globally Unique Identifier) of a workflow-activity software component, sent to it as a parameter, instantiates a workflow-activity component-intercepting object; (C) Supervising thread receives potentially arriving multitudes of single workflow requests and assigns each one of said requests to an individual processing thread of its pool; (D) A Processing thread having an assigned request for work invokes a method of its non-transactional component object; (E) Calling a method of the transactional component-intercepting object that belongs to the non-transactional component object, constructs a transactional component object thereby creating a new transaction and calls a method of said transactional component; (F) Calling a method of the workflow-activity component-intercepting object by the transactional component object, instantiates a workflow-activity software component and invokes its method, which performs all of its transactional operations as members of the created new transaction.
-
-
15. A computer storage medium containing instructions, said instructions when executed by a processor carry out the methods of:
-
Accepting interactive user input for a graphical description of a workflow process, the instructions further performing; (A) Describing an element of workflow-process graphically with software that accepts interactive user input; (B) Interpreting the user input to obtain workflow-related data and transforming obtained data into an incremental modification of incrementally constructed set of class objects that represents workflow-process description; (C) Repeating steps (A) and (B) in a loop until workflow-process description is complete. (D) Extracting workflow-process-related data from the set of class objects and transforming the extracted workflow-process-related data into a workflow-process definition; (E) Generating source code of the workflow application software, compiling instructions, and linking instruction from the workflow-process definition; (F) Compiling the source code of the workflow application software with the compiling instructions; (G) Linking result of the performed compiling with generated linking instructions. Creating workflow process definition comprising; (a) Establishing a matrix of workflow-activities, wherein said workflow-activities are individual items of work comprised by a potential workflow-process where all transactional operations potentially performed by each one of said individual items are potentially executed as a single transaction within each one of said workflow-activities of said potential workflow-process, and wherein said establishing the matrix further comprises; (i) Arranging workflow-activities comprised by the workflow-process being defined according to required sequence of execution of said workflow-activities within said workflow-process and according to possibilities for concurrent execution of some of said workflow-activities within said workflow-process; (ii) Defining a constant, named PROCESS_STEPS, representing a number of sequential steps of execution of a workflow-process being defined, wherein on each one of said sequential steps of execution either one activity is executed, or either two or more activities are executed concurrently; (iii) Defining a constant, named MAX_STEP_DEPTH, representing a maximum number of workflow-activities executed concurrently on one step of workflow-process being defined; (iv) Declaring and initializing a two-dimensional array of Boolean elements being a workflow-activities matrix, with dimensions MAX_STEP_DEPTH by PROCESS_STEPS, wherein an array element with value TRUE represents existence of a workflow-activity on position in said workflow-activities matrix with coordinates equal to said array element indexes and wherein an array element with value FALSE represents nonexistence of a workflow-activity on position in said workflow-activities with coordinates equal to said array element indexes. (b) Defining a main flow-graph, wherein the defining matrix of workflow-activities are further being represented as nodes of said flow-graph by incorporating control-connectors in order to represent a potential flow-of-control between said nodes within a potential workflow-process, wherein each said control-connector signals successful execution of its sourcing workflow-activity with execution result having value TRUE, wherein two or more control-connectors sourcing from one of said nodes initiate concurrent execution of destination nodes of said control-connectors, wherein two or more control-connectors having a common destination node impose a requirement for synchronizing conjunction of signals of all control-connectors incoming to said common destination node in order to trigger execution of said common destination node, wherein said defining the main flow-graph further comprises; (i) Defining a constant, named MAX_CONNECT_OUT, representing maximum number of main control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined; (ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_CONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS13 STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and—
thereby describe a position of a workflow-activity in said workflow-activities matrix, wherein said described positions of MAX_CONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_CONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value TRUE;(c) Defining one or more alternative control connectors, wherein each one of said alternative control connectors signals successful execution of its sourcing workflow-activity with execution result having value FALSE, wherein two or more of said alternative control-connectors sourcing from same workflow-activity initiate concurrent execution of destination workflow-activities of said alternative control-connectors, wherein a workflow-activity having established during the defining main flow-graph a requirement for synchronizing conjunction of signals of all incoming to it control-connectors cannot be a destination workflow-activity of an alternative control connector, wherein defining the one or more alternative control-connectors further comprises; (i) Defining a constant, named MAX_ALTCONNECT_OUT, representing maximum number of alternative control-connectors sourcing from one flow-graph node representing a workflow-activity in workflow-process being defined; (ii) Declaring and initializing a two-dimensional array of integer elements with dimensions MAX_ALTCONNECT_OUT by 2 per workflow-activity for each one of activities belonging to workflow steps with numbers from 1 to (PROCESS_STEPS-1), wherein values of each pair of elements of said array represent indexes of the initialized two-dimensional array of workflow-activities and—
thereby describe the position of a workflow-activity in said workflow-activities matrix, wherein said described positions of MAX_ALTCONNECT_OUT workflow-activities in said workflow-activities matrix are positions of destination workflow-activities of MAX_ALTCONNECT_OUT control-connectors having common source workflow-activity with potential execution result having value FALSE;(d) Defining workflow-components matrix, wherein every element of said workflow-components matrix represents a software component, associated with a workflow-activity of workflow-process being defined, for potential plugging for execution as part of a potential single transaction within said workflow-activity of the workflow-process, wherein the defining of the workflow-component matrix further comprises; (i) Declaring a two-dimensional array of elements of type UUID (Universal Unique Identifier, interchangeable with the term GUID, Globally Unique Identifier) with dimensions identical to dimensions of the declared two-dimensional array representing workflow-activities matrix; (ii) Initializing elements of the declared array in the following manner;
for every element of said array representing the workflow-activities matrix with value TRUE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value representing a software component to be associated with represented workflow-activity, and for every element of said array representing workflow-activities matrix with value FALSE to be initialized corresponding element with identical indexes in array representing workflow-components matrix with UUID value indicating a dummy UUID;and Generating source code and compiling and linking instructions sufficient to build fully executable workflow applications by; (A) Executing of functions that build software source code skeleton; (B) Executing of a function that builds part of software source code that declares a set of variables and initializes these variables with relevant data from said workflow-process definition; (C) Executing of a function that builds part of software source code verifying that the necessary workflow components according to workflow-process definition data are registered and available on a computer where the workflow application will potentially be executed; (D) Executing of a function that builds part of the software source code responsible for the construction of class objects that represent workflow configuration according to the workflow-process definition data; (E) Executing of a function that builds compiling and linking instructions.
-
Specification