Declarative workflow system supporting side-effects
First Claim
1. A workflow system for processing a received object comprising:
- a memory storing a declarative program specification, said program specification defining;
a plurality of modules in a workflow instance, the plurality of modules producing associated attributes when executed, wherein each attribute is produced by only one module, wherein at least one of said attributes depends on another attribute, and wherein the execution of at least one of said modules results in the initiation of a side-effect action performed by a component external to said workflow system;
a plurality of enabling conditions which are independent of the time duration of workflow instance execution, for determining whether associated ones of said modules are enabled, wherein evaluation of at least one of said enabling conditions depends on a value of an attribute;
wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic; and
wherein one of the modules produces a particular attribute, and wherein data flow between the particular attribute and an enabling condition that depends on the particular attribute is defined in an implicit rather than explicit manner in said declarative program specification; and
a processor for executing said program specification, said execution comprising the steps of;
evaluating enabling conditions; and
executing modules based on said evaluated enabling conditions.
5 Assignments
0 Petitions
Accused Products
Abstract
An object-focused workflow system for processing a received object in accordance with a declarative workflow specification. The specification includes modules and attributes, where module execution results in the evaluation of attributes, and may include the initiation of a side-effect action performed by an external component. Whether modules are to be executed for a particular received object is determined by associated enabling conditions. Attributes may be evaluated in accordance with computation rules and a combining policy, where the computation rules specify how values are to be contributed to an attribute, and the combining policy indicates how those contributed values are combined in order to assign a value to the attribute. Tasks in the workflow system may be executed eagerly in order to improve the performance of the workflow system. The eager evaluation of tasks includes the determination of whether such tasks are eligible for eager evaluation, and whether the tasks are unneeded or necessary for the processing of the received event. Workflows which satisfy described design properties allow for improved algorithms for the determination of the whether tasks are eligible, eager, and/or necessary. A graphical user interface is provided for displaying a representation of the evaluation status of the modules and attributes during workflow execution.
-
Citations
28 Claims
-
1. A workflow system for processing a received object comprising:
-
a memory storing a declarative program specification, said program specification defining;
a plurality of modules in a workflow instance, the plurality of modules producing associated attributes when executed, wherein each attribute is produced by only one module, wherein at least one of said attributes depends on another attribute, and wherein the execution of at least one of said modules results in the initiation of a side-effect action performed by a component external to said workflow system;
a plurality of enabling conditions which are independent of the time duration of workflow instance execution, for determining whether associated ones of said modules are enabled, wherein evaluation of at least one of said enabling conditions depends on a value of an attribute;
wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic; and
wherein one of the modules produces a particular attribute, and wherein data flow between the particular attribute and an enabling condition that depends on the particular attribute is defined in an implicit rather than explicit manner in said declarative program specification; and
a processor for executing said program specification, said execution comprising the steps of;
evaluating enabling conditions; and
executing modules based on said evaluated enabling conditions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
once stable, values of the modules, attributes and enabling conditions cannot change for the time duration of workflow instance execution;
said execution further comprises;
determining if a first of said enabling conditions is stable;
evaluating said enabling condition when said enabling condition is stable; and
evaluating a module associated with said first enabling condition when said enabling condition is stable and said enabling condition evaluates to a predetermined value.
-
-
9. The workflow system of claim 1, wherein:
-
a first of said modules produces a first attribute value and a second of said modules uses said first attribute value to produce a second attribute value, wherein data flow from said first attribute value to said first module is defined in an implicit rather than explicit manner in said declarative program specification; and
said execution further comprises determining a sequence of execution between said first and second modules, whereby said first attribute value will be determined before said second module uses said first attribute value.
-
-
10. The workflow system of claim 1, wherein:
-
a first of said modules produces a first attribute value and a first of the enabling conditions uses said first attribute value to determine whether an associated one of said modules is enabled, wherein data flow from said first attribute value to said first enabling conditions is implicit; and
said execution further comprises determining a sequence of execution between said first module and said enabling condition, whereby said first attribute value will be determined before said first enabling condition uses said first attribute value.
-
-
11. The workflow system of claim 1, wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic because there is no module M for which there is a directed path in a graph of data flow dependencies and enabling flow dependencies that starts at M and ends at M.
-
12. A computer readable medium storing a declarative program specification, said program specification capable of execution on a computer processor for implementing a workflow system, said program specification defining:
-
a plurality of modules in a workflow instance, the plurality of modules producing associated attributes when executed, wherein each attribute is produced by only one module, wherein at least one of said attributes depends on another attribute, and wherein the execution of at least one of said modules results in the initiation of a side-effect action performed by a component external to said workflow system;
a plurality of enabling conditions which are independent of the time duration of workflow instance execution, for determining whether associated ones of said modules are enabled, wherein evaluation of at least one of said enabling conditions depends on a value of an attribute;
wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic; and
wherein one of the modules produces a particular attribute, and wherein data flow between the particular attribute and an enabling condition that depends on the particular attribute is defined in an implicit rather than explicit manner in said declarative program specification; and
wherein said execution of said program specification on said computer processor comprises evaluation of enabling conditions and execution of modules based on said evaluation. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
once stable, values of the modules, attributes and enabling conditions cannot change for the time duration of workflow instance execution;
said execution of said program specification on said computer further comprises;
determining if a first of said enabling conditions is stable;
evaluating said enabling condition when said enabling condition is stable; and
evaluating a module associated with said first enabling condition when said enabling condition is stable and said enabling condition evaluates to a predetermined value.
-
-
17. The computer readable medium of claim 12, wherein:
-
a first of said modules produces a first attribute value and a second of said modules uses said first attribute value to produce a second attribute value, wherein data flow from said first attribute value to said first module is defined in an implicit rather than explicit manner in said declarative program specification; and
said execution of said program specification on said computer further comprises determining a sequence of execution between said first and second modules, whereby said first attribute value will be determined before said second module uses said first attribute value.
-
-
18. The computer readable medium of claim 12, wherein:
-
a first of said modules produces a first attribute value and a first of said enabling conditions uses said first attribute value to determine whether an associated one of said modules is enabled, wherein data flow from said first attribute value to said first enabling conditions is defined in an implicit rather than explicit manner in said declarative program specification; and
said execution of said program specification on said computer further comprises determining a sequence of execution between the first module and the enabling condition, whereby said first attribute value will be determined before said first enabling condition uses said first attribute value.
-
-
19. The computer readable medium of claim 12, wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic because there is no module M for which there is a directed path in a graph of data flow dependencies and enabling flow dependencies that starts at M and ends at M.
-
20. A method for operation of a workflow system for processing a received object, said workflow system comprising a memory storing a declarative program specification defining:
-
a plurality of modules in a workflow instance, the plurality of modules producing associated attributes when executed, wherein each attribute is produced by only one module, wherein at least one of said attributes depends on another attribute, and wherein the execution of at least one of said modules results in the initiation of a side-effect action performed by a component external to said workflow system;
a plurality of enabling conditions which are independent of the time duration of workflow instance execution for determining whether associated ones of said modules are enabled, wherein evaluation of at least one of said enabling conditions depends on a value of an attribute;
wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic; and
wherein one of the modules produces a particular attribute, and wherein data flow between the particular attribute and an enabling condition that depends on the particular attribute is defined in an implicit rather than explicit manner in said declarative program specification; and
said method comprising the step of; executing said program specification wherein said step of executing further comprises the steps of;
evaluating enabling conditions; and
executing modules based on said evaluation of enabling conditions. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28)
once stable, values of the modules, attributes and enabling conditions cannot change for the time duration of workflow instance execution;
the step of executing further comprises the steps of;
determining if a first of said enabling conditions is stable;
evaluating said enabling condition when said enabling condition is stable; and
evaluating a module associated with said first enabling condition when said enabling condition is stable and said enabling condition evaluates to a predetermined value.
-
-
26. The method of claim 20, wherein:
-
a first of said modules produces a first attribute value and a second of said modules uses said first attribute value to produce a second attribute value, wherein data flow from said first attribute value to said first module is defined in an implicit rather than explicit manner in said declarative program specification; and
the step of executing further comprises the step of determining a sequence of execution between said first and second modules, whereby said first attribute value will be determined before said second module uses said first attribute value.
-
-
27. The method of claim 20, wherein:
-
a first of said modules produces a first attribute value and a first of said enabling conditions uses said first attribute value to determine whether an associated one of said modules is enabled, wherein data flow from said first attribute value to said first enabling conditions is defined in an implicit rather than explicit manner in said declarative program specification; and
the step of executing further comprises the step of determining a sequence of execution between said first module and said enabling condition, whereby said first attribute value will be determined before said first enabling condition uses said first attribute value.
-
-
28. The method of claim 20, wherein the set of data flow dependencies and enabling flow dependencies between said modules and said enabling conditions is acyclic because there is no module M for which there is a directed path in a graph of data flow dependencies and enabling flow dependencies that starts at M and ends at M.
Specification