US 12,265,847 B2
Concurrent duplicated sub process control in a workflow engine
Yang Peng, Pleasanton, CA (US)
Assigned to SAP SE, Walldorf (DE)
Filed by SAP SE, Walldorf (DE)
Filed on Aug. 2, 2022, as Appl. No. 17/879,413.
Prior Publication US 2024/0045714 A1, Feb. 8, 2024
Int. Cl. G06F 9/48 (2006.01); G06F 9/54 (2006.01); G06F 16/901 (2019.01); G06Q 10/0633 (2023.01)
CPC G06F 9/4881 (2013.01) [G06F 9/546 (2013.01); G06F 16/9024 (2019.01); G06Q 10/0633 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method comprising:
receiving a directed acyclic graph (DAG) that represents a workflow process, wherein the DAG includes nodes that each graphically represent a sub process of the workflow process, wherein each node has a depth value, wherein node depth values represent sub process generations of instances of respective nodes, wherein a depth of a succeeding first node that is connected in the DAG to a preceding second node is one greater than a depth of the preceding second node when the preceding second node is directly connected to at least one other succeeding node or the preceding second node is a system-generated node that represents a merge or iteration operation of the workflow process, wherein execution of the workflow process includes multiple, parallel instantiations of at least one sub process, and wherein an instance of a given node corresponds to a respective instantiation of a sub process corresponding to the given node; and
executing the workflow process, including executing a first sub process for a first node, wherein executing the first sub process for the first node comprises:
activating a first instance of the first node;
generating a first identifier array for the first instance of the first node, wherein the first identifier array for the first instance of the first node comprises an array of batch identifiers that each indicate a relative creation time of one or more node instances, and wherein the first identifier array includes a batch identifier for a first batch corresponding to the first instance of the first node at a first index of the first identifier array corresponding to the depth of the first node;
executing the first sub process using the first instance of the first node;
after executing the first sub process, determining whether the first node is a join node, wherein the first node is a join node if the first node has multiple direct predecessor nodes in the DAG;
in response to determining that the first node is not a join node, identifying a second node that is a successor node to the first node and executing a second sub process of the workflow process that corresponds to the second node;
in response to determining that the first node is a join node:
identifying dependent nodes in the DAG that are graphical dependents of the join node, wherein a given node is a graphical dependent node of the join node if traversal of the DAG from the given node to an end of the DAG passes through the join node;
identifying a set of active dependent node instances of the dependent nodes; and
determining whether to wait for completion of a first dependent node instance based on comparing the first identifier array of the first instance of the first node to a second identifier array of the first dependent node instance.