Workflow scheduling method, apparatus, execution engine, device, and program product

By determining the current layer node based on topological relationships and node status in the workflow platform, and using a breadth-first search method to optimize the execution order of the workflow, the problem of low workflow execution efficiency is solved, and more efficient workflow execution is achieved.

CN119919083BActive Publication Date: 2026-06-26IFLYTEK CO LTD

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
IFLYTEK CO LTD
Filing Date
2024-12-27
Publication Date
2026-06-26

AI Technical Summary

Technical Problem

The existing workflow execution engines in workflow platforms cannot guarantee the execution efficiency of workflows, which limits the efficient deployment and execution of large models in complex application scenarios.

Method used

By dynamically determining the nodes at the current layer based on the topological relationships between nodes in the target workflow and the execution status and/or execution results of each node, a breadth-first search method is adopted, combined with the attribute information of the nodes, to optimize the execution order and parallel execution capability of the workflow.

Benefits of technology

It effectively reduces the consumption of program stack space, improves the parallel execution capability of multi-branch chains and the execution efficiency of workflow, and ensures the correct execution of workflow.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119919083B_ABST
    Figure CN119919083B_ABST
Patent Text Reader

Abstract

The application provides a workflow scheduling method and device, an execution engine, equipment and a program product. The method comprises the following steps: determining a current layer node based on a topological relationship between nodes in a target workflow and execution states and / or execution results of the nodes; the current layer node comprises a start node of the target workflow or a post-node of a previous layer node in each branch path of the target workflow; when the current layer node is not empty, executing each current layer node based on target attribute information of each current layer node. The above-mentioned workflow scheduling method can effectively improve the execution efficiency of the target workflow while ensuring the correct execution of the target workflow.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of large model application technology, and in particular to a workflow scheduling method, apparatus, execution engine, device and program product. Background Technology

[0002] With the rapid development of large model technology, workflow platforms have become an indispensable technical support for the efficient deployment and execution of large models in complex application scenarios. This platform provides a flexible and efficient workflow management mechanism for the application of large models by integrating functions such as resource scheduling and task management.

[0003] However, the current workflow execution engines in workflow platforms struggle to guarantee workflow execution efficiency, which severely limits the application scenarios for large models. Summary of the Invention

[0004] Based on the above requirements, this application proposes a workflow scheduling method, apparatus, execution engine, device, and program product to solve the problem of low execution efficiency of workflows in the prior art.

[0005] To achieve the above-mentioned technical objectives, this application proposes the following technical solution:

[0006] The first aspect of this application proposes a workflow scheduling method, including:

[0007] Based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node, the current layer node is determined; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow.

[0008] When the current layer node is not empty, each current layer node is executed based on its target attribute information.

[0009] A second aspect of this application provides a workflow scheduling device, comprising:

[0010] The first data processing module is used to determine the current layer node based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow;

[0011] The second data processing module is used to execute each current layer node based on the target attribute information of each current layer node when the current layer node is not empty.

[0012] A third aspect of this application provides a workflow execution engine configured to execute the workflow scheduling method as described in any of the preceding claims.

[0013] The fourth aspect of this application provides a storage medium on which a computer program is stored, and when the computer program is run by a processor, it implements the workflow scheduling method described above.

[0014] The fifth aspect of this application discloses an electronic device, comprising:

[0015] Memory and processor;

[0016] The memory is connected to the processor and is used to store programs;

[0017] The processor is used to implement the workflow scheduling method described above by running the program in the memory.

[0018] The sixth aspect of this application provides a computer program product including computer program instructions that, when executed by a processor, cause the processor to perform the workflow scheduling method described above.

[0019] The workflow scheduling method proposed in this application determines the current layer node based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node. The current layer node includes the starting node of the target workflow or the successor node of the previous layer node in each branch path of the target workflow. This enables dynamic determination of the current layer node using a breadth-first search method, effectively reducing the consumption of program stack space and improving the parallel execution capability of the multi-branch chain of the target workflow. Furthermore, the above scheme, which combines the topological relationship between nodes and the real-time execution status and / or execution result of each node to determine the current layer node, ensures that the determined current layer node is more accurate and is the node that is currently necessary to execute. This effectively improves the execution efficiency of the target workflow while ensuring its correct execution. In particular, when the current layer node is not empty, each current layer node is executed separately based on its target attribute information. Thus, by comprehensively considering the different attribute information of the current layer node, the execution efficiency of the target workflow can be further improved. Attached Figure Description

[0020] To more clearly illustrate the technical solutions in the embodiments of this application or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only embodiments of this application. For those skilled in the art, other drawings can be obtained based on the provided drawings without creative effort.

[0021] Figure 1 This is a flowchart illustrating a workflow scheduling method provided in an embodiment of this application.

[0022] Figure 2 This is a flowchart illustrating another workflow scheduling method provided in an embodiment of this application.

[0023] Figure 3 This is a schematic diagram of a workflow scheduling device provided in an embodiment of this application.

[0024] Figure 4 This is a schematic diagram of the structure of an electronic device provided in an embodiment of this application. Detailed Implementation

[0025] The technical solution of this application embodiment is applicable to application scenarios of large models, that is, using a workflow platform for large models to perform workflow scheduling. The workflow platform, by integrating functions such as resource scheduling and task management, provides a flexible and efficient workflow scheduling mechanism for the application of large models. By adopting the technical solution of this application embodiment, the execution efficiency of the workflow can be effectively improved while ensuring accurate execution, thereby meeting the needs of efficient deployment and execution of large models in complex application scenarios.

[0026] Currently, workflow execution engines in workflow platforms typically utilize large model development middleware to schedule workflows. This involves building a middleware object for each workflow, and workflow execution is essentially the execution of that middleware object. This approach relies heavily on the middleware's inference capabilities and employs a recursive method to execute workflows. It constructs the entire workflow as an executable inference object, with the large model development middleware controlling the workflow's execution process. This enables tasks such as chained multi-step inference, task planning, and interaction with external data sources. Furthermore, middleware-managed workflow execution facilitates workflow engine development. However, large model development middleware cannot flexibly support the construction of parallel workflow chains. Consequently, this approach cannot support the parallel execution of different branches within a workflow, significantly limiting execution efficiency and making it unsuitable for scenarios requiring parallel chains, thus restricting the scalability of the workflow engine.

[0027] The inventors of this application discovered that the entire workflow execution process can be abstracted as a directed acyclic graph (DAG). This structure clearly describes the dependencies and execution order between nodes in the workflow. During workflow execution, a graph engine can traverse each branch chain from front to back using a depth-first search method. Each node performs the corresponding operation based on the received input and passes the output to the successor node until the workflow execution ends. That is, each branch chain in the DAG is recursively executed in a "parent chain nested in child chain" manner. After the child chain is completed, the parent chain is traced back to achieve the gradual advancement of data and tasks. This solution completely eliminates the dependence on third-party libraries during workflow execution, thus possessing higher scalability and solving the problem of not being able to execute multiple branch chains in parallel when developing middleware with large models. However, this method consumes a large amount of program stack space, limiting the nesting depth of parallel branch chains, thereby affecting the parallel execution capability of multiple branch chains and thus failing to guarantee the execution efficiency of the workflow.

[0028] Based on the aforementioned technological status, the inventors of this application, through research, propose a novel workflow scheduling scheme. This scheme determines the current-layer node based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node. The current-layer node includes the starting node of the target workflow or the successor node of the previous layer node in each branch path of the target workflow. This allows for dynamic determination of the current-layer node using a breadth-first search method, effectively reducing the consumption of program stack space and thus improving the parallel execution capability of the multi-branch chain of the target workflow. Furthermore, by combining the topological relationships between nodes with the real-time execution status and / or execution results of each node to determine the current-layer node, the scheme ensures that the determined current-layer node is more accurate and is the node that is currently necessary to execute. This effectively improves the execution efficiency of the target workflow while ensuring its correct execution. When the current-layer node is not empty, each current-layer node is executed separately based on its target attribute information. Therefore, by comprehensively considering the different attribute information of the current-layer node, the execution efficiency of the target workflow can be further improved.

[0029] The technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, and not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this application.

[0030] Please see Figure 1 This application first proposes a workflow scheduling method, which can be executed by a processor in a workflow platform. The method includes:

[0031] S101. Based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node, determine the current layer node; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow.

[0032] Specifically, the target workflow can be the currently executing workflow, and it can include one or more branch paths. Each branch path can include at least one node. In implementation, graph models of workflows corresponding to different tasks can be pre-built, and the target workflow can be determined based on the user-selected tasks. Alternatively, after receiving the workflow protocol for the target workflow, the graph model of the target workflow can be built based on that protocol. The workflow protocol can include the user's task requirements information. For any workflow, the graph model can represent the topological relationships between nodes in the workflow. These topological relationships can be used to represent dependencies and execution order between nodes. For example, the graph model can be a directed acyclic graph (DAG). Therefore, the topological relationships between nodes in the target workflow can be quickly and effectively determined based on the target workflow's graph model.

[0033] This system can execute nodes in the target workflow layer by layer based on the topological relationships between nodes and the execution status and / or results of each node. For any given node, its execution status can include executed, in progress, or not executed. In practice, the execution status of a node can be updated in real time during its execution. Furthermore, the execution result of a node can represent the data output after execution. For example, when the node is a message node, its execution result can include the message data that needs to be output during the node's execution; when the node is a branch node, its execution result can include the node's decision result. In practice, the execution results of each node can be stored in real time, and the execution results of a node can be output to its subsequent nodes, or a branch path can be selected based on the execution result of the node.

[0034] In implementation, as each node in the target workflow is executed layer by layer, each node in each layer can be executed concurrently or in parallel. Furthermore, each node in each layer can include nodes from multiple branch paths, meaning that multiple branch paths can be executed in parallel.

[0035] Specifically, when the current layer node is a first-layer node, it can include the starting node of the target workflow. When the current layer node is not a first-layer node, it can include the successor nodes of the preceding layer nodes in some or all of the branch paths of the target workflow. For any given node, its successor nodes can include nodes that are adjacent to it in execution order and executed after it. It can be understood that the current layer node can include the successor nodes of every preceding layer node, and can also include some of the successor nodes of each preceding layer node. Furthermore, for any preceding layer node, the current layer node can include all or some of the successor nodes of that preceding layer node. In other words, the current layer node can be dynamically determined based on the topological relationships between nodes in the target workflow using a breadth-first search method. This effectively reduces the consumption of program stack space, thereby improving the parallel execution capability of the multi-branch chain of the target workflow, and thus effectively improving the execution efficiency of the target workflow.

[0036] In implementation, the current layer node can be determined based on the topological relationships between nodes in the target workflow, as well as the execution status and / or execution results of each node. For example, when the current layer node is a first-layer node, the starting node can be determined based on the topological relationships between nodes. For any starting node, if its execution status is not executed, it can be used as the current layer node. Specifically, nodes without predecessor nodes can be used as starting nodes based on the topological relationships between nodes. For any given node, its predecessor nodes can include nodes that are adjacent to it in execution order and executed before it.

[0037] When the current layer node is a node other than the first layer node, all subsequent nodes of each previous layer node can be determined based on the topological relationship between nodes. Then, based on the execution status and / or execution result of each node, the current layer node can be determined from among the subsequent nodes. Specifically, for any given subsequent node, if there are no branch nodes among its preceding nodes, the decision to designate it as the current layer node can be made based on the execution status of the subsequent node and the execution status of each of its preceding nodes. For example, the subsequent node can be designated as the current layer node if its execution status is "not executed" and all of its preceding nodes are in execution or in progress. Conversely, the subsequent node cannot be designated as the current layer node if its execution status is "executed" or in progress, and / or if at least one of its preceding nodes is in execution "not executed".

[0038] Furthermore, when a branch node exists among the preceding nodes of the subsequent node, the execution result of the branch node can be used to determine the branch path to be executed. Based on the positional relationship between the subsequent node and the branch path to be executed, the execution status of the subsequent node, and the execution status of each preceding node, it can be determined whether to designate the subsequent node as the current-level node. For example, if the first, second, and third conditions are all met, the subsequent node is designated as the current-level node; if at least one of the first, second, and third conditions is not met, the subsequent node is not designated as the current-level node. The first condition may include the subsequent node being located within the branch path to be executed; the second condition may include the execution status of the subsequent node being "not executed"; and the third condition may include the execution status of each preceding node being "executed" or "in progress."

[0039] Therefore, by combining the topological relationships between nodes and the real-time execution status and / or execution results of each node to determine the current layer node, it can be ensured that the determined current layer node is more accurate and is the node that needs to be executed at the moment. This can effectively improve the execution efficiency of the target workflow while ensuring the correct execution of the target workflow.

[0040] S202. When the current layer node is not empty, each current layer node is executed based on the target attribute information of each current layer node.

[0041] Specifically, when the current layer node is not empty, it indicates that there are nodes to be executed in the target workflow. At this time, each current layer node can be executed separately based on its target attribute information. For any given node, its target attribute information can be used to determine the node's execution priority, execution timing, and the start time of the next layer node. For example, the target attribute information may include the attribute value of at least one of the following: predetermined execution duration, number of dependent nodes, target response rate, execution status of dependent nodes, target timeout duration, and redundancy identification information.

[0042] In the process of executing each current-layer node based on its target attribute information, the current-layer nodes can be executed concurrently or in parallel, or in a specific order, or at a specific execution time. When executing the current layers in a specific order, the same execution sequence can include multiple concurrently executed current-layer nodes, or only one current-layer node. By comprehensively considering the different attribute information of the current-layer nodes, the execution efficiency of the target workflow can be further improved while ensuring the effective execution of each current-layer node.

[0043] In some embodiments, determining the current layer node based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node includes:

[0044] Based on the topological relationship between nodes in the target workflow, determine the successor node of each preceding node;

[0045] Based on the execution status of each of the subsequent nodes and the execution status of the preceding nodes of each of the subsequent nodes, candidate nodes are determined from the subsequent nodes;

[0046] The current layer node is determined from the candidate nodes based on the type of the predecessor node of each candidate node.

[0047] Specifically, based on the topological relationship between nodes in the target workflow, the successor node of each preceding node can be determined. For example, for any preceding node, the node connected to the preceding node in the topological relationship and whose execution order is after the preceding node can be taken as the successor node of the preceding node.

[0048] Candidate nodes can be determined from among the subsequent nodes based on their execution status and the execution status of their preceding nodes. For example, for any given subsequent node, it can be considered a candidate node if its execution status is "not executed" and the execution status of all its preceding nodes meets the target condition. The target condition can include the execution status being "in execution" or "executed." It is understood that if the execution status of a subsequent node is "executed" or "in execution," and / or if at least one of its preceding nodes does not meet the target condition, the subsequent node will not be considered a candidate node.

[0049] Optionally, for any node, the target condition corresponding to that node can be pre-configured as either "executed" or "in execution." This can be determined based on the node's predetermined execution duration. For example, if the node's predetermined execution duration exceeds a threshold, the target condition can be configured as "in execution," and if the predetermined execution duration is less than or equal to the threshold, the target condition can be configured as "executed." Alternatively, the target condition can also be determined based on the number of dependent nodes in the node's subsequent nodes. For example, if the number of dependent nodes is greater than 0, the target condition can be configured as "executed," and if the number of dependent nodes is 0, the target condition can be configured as "in execution." It is understood that for any node, its dependent nodes can include nodes that depend on the execution result of that node during execution.

[0050] For any candidate node, the current layer node can be determined from among the candidate nodes based on the types of its preceding nodes. The type of any node can include branch nodes, message nodes, etc. In implementation, whether to use a candidate node as the current layer node can be determined based on whether the types of its preceding nodes include branch nodes. This ensures that the determined current layer node is more accurate and is the node that must be executed at the moment. Therefore, while ensuring the correct execution of the target workflow, the execution efficiency of the target workflow can be effectively improved.

[0051] In some embodiments, determining the current layer node from the candidate nodes based on the type of the predecessor node of each candidate node includes:

[0052] Based on the type of each predecessor node of the candidate node, determine whether the predecessor nodes of the candidate node include branch nodes;

[0053] When the predecessor node of the candidate node includes a branch node, the execution result of the branch node is used to determine the branch path to be executed, and the positional relationship between the candidate node and the branch path to be executed is used to determine whether to use the candidate node as the current layer node.

[0054] When the predecessor node of the candidate node does not include a branch node, the candidate node is taken as the current layer node.

[0055] Specifically, for any candidate node, it can be determined whether there are branch nodes among the candidate node's predecessor nodes based on the types of the candidate node's predecessor nodes. Specifically, for any node, if it is connected to multiple branch paths whose execution order follows that node, then that node can be considered a branch node.

[0056] Branch nodes can be used for conditional judgments. For example, based on the execution result of the preceding node and predetermined judgment conditions, a conditional judgment can be made to select the branch path to be executed from the branch paths connected to the node. Additionally, branch nodes can be used for decision-making. For instance, based on the execution result of the preceding node and a pre-configured decision method, a decision can be made to select the branch path to be executed from the branch paths connected to the node. Furthermore, based on the execution result of the preceding node, a decision can be made through the larger model connected to the branch node, and the larger model can perform semantic extraction and decision analysis on the execution result of the preceding node to select the branch path to be executed.

[0057] When the preceding node of a candidate node includes a branch node, the execution result of that branch node can be used to determine the branch path to be executed. The branch path to be executed is the branch path connected by that branch node and whose execution order follows that branch node; it is the branch path that needs to be executed currently. In implementation, the positional relationship between the candidate node and the branch path to be executed can be used to determine whether to use the candidate node as the current-level node. The positional relationship between the candidate node and the branch path to be executed can include being located on the branch path to be executed and not being located on the branch path to be executed. The candidate node can be used as the current-level node when it is located on the branch path to be executed, and not when it is not located on the branch path to be executed. It is understood that when the preceding node of a candidate node includes multiple branch nodes, the candidate node can be used as the current-level node when it is located on the branch path to be executed corresponding to any branch node, and not when the candidate node does not exist in any of the branch paths to be executed corresponding to any branch node.

[0058] Additionally, if the predecessor node of a candidate node does not include a branch node, the candidate node can be used as the current layer node.

[0059] Therefore, the solution in this embodiment can ensure that the current layer node is more accurate and is the node that needs to be executed at the moment. This can effectively improve the execution efficiency of the target workflow while ensuring its correct execution.

[0060] In some embodiments, executing each current layer node based on the target attribute information of each current layer node includes:

[0061] When there are multiple current layer nodes, the execution priority of each current layer node is determined based on the target attribute information of each current layer node;

[0062] Each current layer node is executed based on its execution priority.

[0063] Specifically, when there are multiple nodes in the current layer, the execution priority of each current layer node can be determined based on its target attribute information. It can be understood that the target attribute information can include the value of one target attribute, or it can include the values ​​of multiple target attributes.

[0064] Specifically, when the target attribute information includes the attribute value of a single target attribute, the execution priority of each current-layer node can be determined based on the attribute value of each current-layer node under that target attribute and the predetermined correspondence between the attribute value and the execution priority. When the target attribute information includes the attribute values ​​of multiple target attributes, the execution priority of each current-layer node under each target attribute can be obtained separately, and the final execution priority of each current-layer node can be determined based on the weight coefficient corresponding to each target attribute and the execution priority of each current-layer node under each target attribute. For example, for any given current-layer node, the final execution priority of that current-layer node can be obtained by weighted summing the execution priorities of that current-layer node under each target attribute based on the weight coefficient corresponding to each target attribute.

[0065] For any target attribute, the predetermined correspondence between the attribute value and execution priority can include a positive correlation between execution priority and the attribute value, i.e., the larger the attribute value, the higher the execution priority, and the smaller the attribute value, the lower the execution priority. Alternatively, the predetermined correspondence can include a negative correlation between execution priority and the attribute value, i.e., the larger the attribute value, the lower the execution priority, and the smaller the attribute value, the higher the execution priority. Furthermore, the predetermined correspondence between the attribute value and execution priority can also include a one-to-one correspondence between the execution priority and each candidate attribute value of the target attribute.

[0066] In practice, for any target attribute, the attribute values ​​of each current layer node under the target attribute can be sorted, and the execution priority of each current layer node under the target attribute can be determined based on the sorting results and the corresponding predetermined correspondence. Alternatively, the attribute values ​​of each current layer node under the target attribute can be matched with the candidate attribute values ​​in the corresponding predetermined correspondence, and the execution priority of each current layer node under the target attribute can be determined based on the matching results. This allows for the rapid and accurate determination of the execution priority of each current layer node under the target attribute.

[0067] After determining the final execution priority of each current-layer node, each current-layer node can be executed based on its final execution priority. For example, each current-layer node can be executed concurrently via coroutines based on its final execution priority, or it can be executed in parallel via multi-threading based on its final execution priority. This effectively improves the execution efficiency of the target workflow while ensuring that critical nodes are executed first.

[0068] It is understandable that when executing each current layer node in parallel through multi-threading, if the number of allocable threads is greater than or equal to the number of current layer nodes, a thread can be allocated to each current layer node to execute the corresponding current layer node. Each thread can execute the corresponding current layer node based on the target execution time of the corresponding current layer node, thereby further improving the execution efficiency of the target workflow while ensuring the effective execution of each current layer node.

[0069] Furthermore, when there is only one node in the current layer, execution resources can be directly allocated to that node, and the node can be executed using the allocated resources based on its target attribute information. For example, the target execution timing of the current layer node can be determined based on its target attribute information, and when the target execution timing is reached, the node can be executed using the allocated resources, thus ensuring the effective execution of the current layer node.

[0070] In some embodiments, the target attribute information includes the attribute value of at least one of the following: predetermined execution duration, number of dependent nodes, target response rate, and execution status of the dependent nodes.

[0071] Specifically, for any current-layer node, its target attribute information can include the predetermined execution duration. The predetermined execution duration characterizes the theoretical execution time of the current-layer node. In implementation, the predetermined execution duration of each node in the target workflow can be pre-configured. For any node in the target workflow, its predetermined execution duration can be determined based on its historical execution data. For example, multiple historical execution durations of the node can be obtained, and the target statistical results of each historical execution duration can be used as the predetermined execution duration of the node. The target statistical results of each historical execution duration can include the mean, median, maximum, and minimum values ​​of each historical execution duration, which can be set according to actual needs. The multiple historical execution durations of the node can include historical execution durations under multiple different execution conditions. Different execution conditions can include different execution modes, such as concurrent execution mode, parallel execution mode, and serial execution mode. For historical execution durations under the same execution mode, historical execution durations under different resource allocation conditions can also be included, thereby effectively improving the accuracy of determining the predetermined execution duration of each node in the target workflow.

[0072] In implementation, after determining the current layer nodes, their execution priorities can be determined based on their predetermined execution durations. The execution priority can be positively correlated with the predetermined execution duration; that is, for any given current layer node, the longer its predetermined execution duration, the higher its execution priority, and vice versa. Therefore, by prioritizing the execution of current layer nodes with longer predetermined execution durations, during the execution of the next layer node, the subsequent nodes of that current layer node in the next layer can execute promptly based on the execution status and / or results of the current layer node. This reduces the waiting time of the subsequent nodes of that current layer node in the next layer, effectively reducing the overall execution time of the target workflow and thus significantly improving its execution efficiency.

[0073] The target attribute information of the current layer node may also include the number of dependent nodes of the current layer node. The dependent nodes of the current layer node may include nodes that depend on the execution result of the current layer node during execution. In implementation, the dependent nodes of each node in the target workflow can be pre-configured so that the number of dependent nodes of each node can be quickly and effectively determined during the execution of the target workflow.

[0074] In implementation, after determining the current layer nodes, the execution priority of each current layer node can be determined based on the number of its dependent nodes. The execution priority can be positively correlated with the number of dependent nodes; that is, for any given current layer node, the more dependent nodes it has, the higher its execution priority, and vice versa. Therefore, by prioritizing the execution of current layer nodes with a larger number of dependent nodes, the execution of those dependent nodes can be timely based on their execution results, thus reducing the waiting time of their dependent nodes. This effectively reduces the overall execution time of the target workflow, thereby significantly improving its execution efficiency.

[0075] The target attribute information of the current layer node can also include the target response rate of the current layer node. The target response rate of the current layer node can include the time required for the current layer node to complete execution and output the execution result from receiving input data or an execution trigger signal. In implementation, the target response rates of predetermined nodes in the target workflow can be pre-configured to quickly and effectively determine the target response rates of corresponding nodes during the execution of the target workflow. The predetermined nodes can include nodes in the target workflow that have high response rate requirements during execution, such as message nodes. Message nodes can be used to output message data to the user during execution. A higher response rate can more efficiently respond to user input questions or requests, thereby effectively improving the user experience. Therefore, the target response rate of message nodes can be pre-configured so that the execution priority of the message node can be determined based on its target response rate during its execution, enabling streaming message output and real-time message interaction with the user.

[0076] In implementation, after determining the current layer nodes, their execution priorities can be determined based on their target response rates. The execution priority can be positively correlated with the target response rate; that is, for any given current layer node, the higher its target response rate, the higher its execution priority, and vice versa. It can be understood that for current layer nodes without a configured target response rate, the execution priority corresponding to that target response rate can be the lowest possible level. Therefore, during the execution of the target workflow, nodes with higher response rate requirements can be prioritized, thereby improving both the overall execution efficiency of the target workflow and the user experience.

[0077] The target attribute information of the current layer node may also include the execution status of the nodes that the current layer node depends on. The execution status of the nodes that the current layer node depends on can be "in execution" or "executed". It can be understood that for any node in the target workflow, if the execution status of the node that the node depends on is "not executed", then the node needs to be removed from the current layer nodes, that is, the node is not executed in the current layer.

[0078] In implementation, after determining the current layer node, its execution priority can be determined based on the execution status of the nodes it depends on. For example, the execution priority can be determined based on a predetermined correspondence between execution status and execution priority. For instance, the execution priority of a current layer node whose dependent node is already executed can be higher than that of a current layer node whose dependent node is currently executing. Therefore, during the execution of a current layer node, nodes whose dependent nodes have already completed execution can be executed first, thereby effectively improving the overall execution efficiency of the target workflow while ensuring its correct execution.

[0079] Furthermore, after determining the current layer node, the execution timing of the current layer node can be determined based on the execution status of the nodes it depends on. For example, if the execution status of the node the current layer node depends on is "in execution," the execution timing of the current layer node can be determined based on the completion time of the execution of the node it depends on. If the execution status of the node the current layer node depends on is "already executed," the execution timing of the current layer node can be determined based on the moment the current layer node receives input data (e.g., the execution result of the node it depends on) or an execution trigger signal. This allows for the effective improvement of the overall execution efficiency of the target workflow while ensuring its correct execution.

[0080] In some embodiments, the target attribute information includes the target timeout duration;

[0081] The step of executing each current layer node based on the target attribute information of each current layer node includes:

[0082] When the timeout duration of the target node reaches the target timeout duration, the step of determining the current layer node is repeated. The target node includes the node with the longest predetermined execution time among the current layer nodes.

[0083] Specifically, during the execution of the target workflow, there are usually time-consuming nodes, such as nodes connected to the larger model. If all subsequent nodes wait for these time-consuming nodes to finish before executing, the overall time consumption of the target workflow will increase significantly.

[0084] In this embodiment, for any current layer node, the target attribute information of the current layer node may further include the target timeout duration of the current layer node. The target timeout duration can be used to characterize the maximum duration during which the current layer node is allowed to exceed the target duration during the execution of each current layer node in the target workflow. The target duration can be used to characterize the expected execution duration at the current layer during the execution of the target workflow. In practice, the target duration can be determined based on the predetermined execution duration of each current layer node. For example, the minimum execution duration among the predetermined execution durations of each current layer node can be used as the target duration; the average or median of the predetermined execution durations of each current layer node can also be used as the target duration; or the average, median, or maximum of the predetermined execution durations of each current layer node other than the current layer node with the longest predetermined execution duration can also be used as the target duration.

[0085] In implementation, after determining each current layer node, the target duration and target nodes within each current layer node can also be determined, and the target timeout duration of the target node can be determined based on the target duration. The target node can include the node with the longest predetermined execution time among all current layer nodes. It is understood that for each current layer node other than the target node, it is not necessary to determine its target timeout duration.

[0086] In determining the target timeout duration of a target node based on a target duration, the target timeout duration can be determined by the difference between the duration difference and a predetermined threshold. The duration difference is the difference between the predetermined execution duration of the target node and the target duration. For example, when the difference between the duration difference and the predetermined threshold is greater than or equal to 0, the difference can be used as the target timeout duration of the target node. When the difference is less than 0, any value within the target duration range can be used as the target timeout duration of the target node. The upper limit of the target duration range can be the duration difference, and the lower limit can be 0.

[0087] During the execution of a target node, its timeout duration can be obtained in real time. This timeout duration includes the time difference between the current moment and a specified moment, which can be the sum of the start time of the target workflow at the current layer and the target duration. When the target node's timeout duration reaches the target timeout duration, the process can jump to the next layer and update the next layer to the current layer, repeating the steps for determining the current layer node. That is, during the execution of a current layer node, for nodes with a predetermined execution duration that are relatively long, execution can continue during the execution of the next layer node without waiting for it to finish and output its results. This effectively reduces the waiting time of nodes in the next layer that do not depend on the execution result of the current layer node, thereby significantly reducing the overall execution time of the target workflow and effectively improving its execution efficiency.

[0088] It is understandable that for nodes in the next layer that depend on the execution result of this node, they need to wait for this node to finish executing before executing, so as to ensure the effective execution of each node in the target workflow.

[0089] In some embodiments, the target attribute information includes redundancy identification information; the redundancy identification information is used to characterize the redundant branch path of the branch path in which the current layer node is located;

[0090] The step of executing each current layer node based on the target attribute information of each current layer node includes:

[0091] When the redundancy identification information of the current layer node indicates that there is a redundant branch path in the branch path where the current layer node is located, the execution result of the redundant branch path is obtained;

[0092] If there is an execution result for the redundant branch path, then the execution result of the redundant branch path shall be used as the execution result of the branch path in which the current layer node is located.

[0093] If there is no execution result for the redundant branch path, then the current layer node is executed.

[0094] Specifically, for any current-layer node, its target attribute information may also include redundancy identification information. Redundancy identification information can be used to characterize redundant branch paths within the branch path where the current-layer node is located. Specifically, for any branch path in the target workflow, redundant branch paths may include those branch paths in the target workflow that have the same execution result as that branch path. In implementation, during the construction of the graph model of the target workflow, redundancy identification information can be added to each node in the corresponding branch path to mark its corresponding redundant branch path. It is understood that for branch paths without redundant branch paths, the redundancy identification information of each node in that branch path can be empty.

[0095] During the execution of the current layer node, for any given current layer node, it can be determined whether there is a redundant branch path in the branch path where the current layer node is located, based on the redundancy identification information of the current layer node. If not, the current layer node can be executed directly. If it exists, the execution result of the redundant branch path can be obtained.

[0096] If the execution result of the redundant branch path exists, that is, the redundant branch path has been completed, then there is no need to continue executing the branch path where the current layer node is located, and the execution result of its redundant branch path is used as the execution result of the branch path, thereby improving the overall execution efficiency of the target workflow.

[0097] If there is no execution result for the redundant branch path, that is, the redundant branch path has not yet been completed, the current layer node can be executed directly to ensure the effective execution of the target workflow.

[0098] In some embodiments, it also includes:

[0099] When the current layer node is empty, the execution of the target workflow is determined to be completed.

[0100] Specifically, when the current layer node is empty, it indicates that there are no nodes to be executed in the target workflow. At this time, the target workflow can be directly controlled to end execution, thereby ensuring the effective execution of the target workflow.

[0101] The implementation process of the workflow scheduling method of this application is illustrated below through an optional implementation method. See [link to documentation]. Figure 2 As shown, the method includes:

[0102] S201. Obtain the workflow protocol of the target workflow;

[0103] S202. Determine the starting node of the target workflow based on the workflow protocol, and construct the topological relationship between each node in the target workflow;

[0104] S203. Add the start node of the target workflow to the current layer node list; where each node in the current layer node list is the current layer node.

[0105] S204. Determine if the current layer node list is empty; if it is empty, proceed to step S209; if it is not empty, proceed to step S205.

[0106] S205. Based on the target attribute information of each node in the current layer node list, execute each node in the current layer node list and save the execution result of each node to the variable pool.

[0107] S206. Determine whether the conditions for jumping to the next level node are met. If they are met, proceed to step S207. If not, repeat step S206. The method for determining whether the conditions for jumping to the next level node are met may include: the timeout duration of the target node in the current level node list reaches the target timeout duration.

[0108] S207. Based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node, determine the list of nodes at the next level;

[0109] S208. Assign the next level node list to the current level node list and execute step S204.

[0110] S209, Control target workflow ends execution.

[0111] Corresponding to the workflow scheduling method described above, this application also provides a workflow scheduling device, see [link to relevant documentation]. Figure 3 As shown, the device includes:

[0112] The first data processing module 301 is used to determine the current layer node based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow.

[0113] The second data processing module 302 is used to execute each current layer node based on the target attribute information of each current layer node when the current layer node is not empty.

[0114] In one possible implementation, the first data processing module 301 is specifically used for:

[0115] Based on the topological relationship between nodes in the target workflow, determine the successor node of each preceding node;

[0116] Based on the execution status of each of the subsequent nodes and the execution status of the preceding nodes of each of the subsequent nodes, candidate nodes are determined from the subsequent nodes;

[0117] The current layer node is determined from the candidate nodes based on the type of the predecessor node of each candidate node.

[0118] In one possible implementation, the first data processing module 301 is specifically used for:

[0119] Based on the type of each predecessor node of the candidate node, determine whether the predecessor nodes of the candidate node include branch nodes;

[0120] When the predecessor node of the candidate node includes a branch node, the execution result of the branch node is used to determine the branch path to be executed, and the positional relationship between the candidate node and the branch path to be executed is used to determine whether to use the candidate node as the current layer node.

[0121] When the predecessor node of the candidate node does not include a branch node, the candidate node is taken as the current layer node.

[0122] In one possible implementation, the second data processing module 302 is specifically used for:

[0123] When there are multiple current layer nodes, the execution priority of each current layer node is determined based on the target attribute information of each current layer node;

[0124] Each current layer node is executed based on its execution priority.

[0125] In one possible implementation, the target attribute information includes the attribute value of at least one of the following: predetermined execution duration, number of dependent nodes, target response rate, and execution status of the dependent nodes.

[0126] In one possible implementation, the target attribute information includes the target timeout duration;

[0127] The second data processing module 302 is specifically used for:

[0128] When the timeout duration of the target node reaches the target timeout duration, the step of determining the current layer node is repeated. The target node includes the node with the longest predetermined execution time among the current layer nodes.

[0129] In one possible implementation, the target attribute information includes redundancy identification information; the redundancy identification information is used to characterize the redundant branch path of the branch path in which the current layer node is located;

[0130] The second data processing module 302 is specifically used for:

[0131] When the redundancy identification information of the current layer node indicates that there is a redundant branch path in the branch path where the current layer node is located, the execution result of the redundant branch path is obtained;

[0132] If there is an execution result for the redundant branch path, then the execution result of the redundant branch path shall be used as the execution result of the branch path in which the current layer node is located.

[0133] If there is no execution result for the redundant branch path, then the current layer node is executed.

[0134] In one possible implementation, the second data processing module 302 is further configured to:

[0135] When the current layer node is empty, the execution of the target workflow is determined to be completed.

[0136] The workflow scheduling device provided in this embodiment belongs to the same concept as the workflow scheduling method provided in the above embodiments of this application. It can execute the workflow scheduling method provided in any of the above embodiments of this application and has the corresponding functional modules and beneficial effects for executing the workflow scheduling method. Technical details not described in detail in this embodiment can be found in the specific processing content of the workflow scheduling method provided in the above embodiments of this application, and will not be repeated here.

[0137] The functions implemented by the above modules can be implemented by the same or different processors, and this application embodiment does not limit this.

[0138] It should be understood that the modules in the above device can be implemented by a processor calling software. For example, the device includes a processor connected to a memory containing instructions. The processor calls the instructions stored in the memory to implement any of the above methods or to implement the functions of each unit in the device. The processor can be a general-purpose processor, such as a CPU or microprocessor, and the memory can be internal or external to the device. Alternatively, the units in the device can be implemented as hardware circuits. By designing the hardware circuits, some or all of the unit functions can be implemented. The hardware circuit can be understood as one or more processors. For example, in one implementation, the hardware circuit is an ASIC, and the functions of some or all of the above units are implemented by designing the logical relationships between the components within the circuit. In another implementation, the hardware circuit can be implemented using a PLD, such as an FPGA, which can include a large number of logic gates. The connection relationships between the logic gates are configured through configuration files to implement the functions of some or all of the above units. All units in the above device can be implemented entirely by a processor calling software, entirely by hardware circuits, or partially by a processor calling software with the remaining parts implemented by hardware circuits.

[0139] In this application embodiment, a processor is a circuit with signal processing capabilities. In one implementation, the processor can be a circuit with instruction reading and execution capabilities, such as a CPU, microprocessor, GPU, or DSP. In another implementation, the processor can implement certain functions through the logical relationships of hardware circuits. These logical relationships are fixed or reconfigurable. For example, the processor may be a hardware circuit implemented as an ASIC or PLD, such as an FPGA. In a reconfigurable hardware circuit, the process of the processor loading a configuration document and configuring the hardware circuit can be understood as the processor loading instructions to implement the functions of some or all of the above units. Furthermore, it can also be a hardware circuit designed for artificial intelligence, which can be understood as an ASIC, such as an NPU, TPU, or DPU.

[0140] As can be seen, each unit in the above device can be one or more processors (or processing circuits) configured to implement the above methods, such as: CPU, GPU, NPU, TPU, DPU, microprocessor, DSP, ASIC, FPGA, or a combination of at least two of these processor forms.

[0141] Furthermore, the units in the above devices can be integrated in whole or in part, or they can be implemented independently. In one implementation, these units are integrated together and implemented in the form of a System-on-Chip (SoC). The SoC may include at least one processor for implementing any of the above methods or implementing the functions of the units in the device. The at least one processor may be of different types, such as CPU and FPGA, CPU and artificial intelligence processor, CPU and GPU, etc.

[0142] This application also provides a workflow execution engine, which is configured to execute the workflow scheduling method described in any of the above embodiments of this specification.

[0143] This application also provides a workflow platform, which includes the workflow execution engine described in the above embodiments of this specification.

[0144] Another embodiment of this application also provides an electronic device, see [link to relevant documentation] Figure 4 As shown, the electronic device includes:

[0145] Memory 200 and processor 210;

[0146] The memory 200 is connected to the processor 210 and is used to store programs;

[0147] The processor 210 is configured to implement the workflow scheduling method described in any of the above embodiments of this specification by running the program stored in the memory 200.

[0148] Specifically, the aforementioned electronic device may also include: a bus, a communication interface 220, an input device 230, and an output device 240.

[0149] The processor 210, memory 200, communication interface 220, input device 230, and output device 240 are interconnected via a bus. Among them:

[0150] A bus can include a pathway for transmitting information between various components of a computer system.

[0151] The processor 210 can be a general-purpose processor, such as a general-purpose central processing unit (CPU), a microprocessor, etc., or an application-specific integrated circuit (ASIC), or one or more integrated circuits used to control the execution of the program of the present invention. It can also be a digital signal processor (DSP), an application-specific integrated circuit (ASIC), an off-the-shelf programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components.

[0152] Processor 210 may include a main processor, as well as a baseband chip, modem, etc.

[0153] The memory 200 stores a program that executes the technical solution of this invention, and may also store an operating system and other key business functions. Specifically, the program may include program code, which includes computer operation instructions. More specifically, the memory 200 may include read-only memory (ROM), other types of static storage devices capable of storing static information and instructions, random access memory (RAM), other types of dynamic storage devices capable of storing information and instructions, disk storage, flash memory, etc.

[0154] Input device 230 may include a device for receiving user input data and information, such as a keyboard, mouse, camera, scanner, light pen, voice input device, touch screen, pedometer, or gravity sensor.

[0155] Output device 240 may include devices that allow information to be output to a user, such as a display screen, printer, speaker, etc.

[0156] The communication interface 220 may include a device that uses any transceiver to communicate with other devices or communication networks, such as Ethernet, Radio Access Network (RAN), Wireless Local Area Network (WLAN), etc.

[0157] The processor 210 executes the program stored in the memory 200 and calls other devices, which can be used to implement the various steps of any workflow scheduling method provided in the above embodiments of this application.

[0158] The methods in this application can be implemented, in whole or in part, by software, hardware, firmware, or any combination thereof. When implemented in software, they can be implemented, in whole or in part, as a computer program product. This computer program product includes one or more computer programs or instructions that, when loaded and executed on a computer, perform, in whole or in part, the processes or functions described in this application. The computer can be a general-purpose computer, a special-purpose computer, a computer network, network equipment, user equipment, core network equipment, OAM (Operational Information Management), or other programmable devices.

[0159] The computer program product can be written in any combination of one or more programming languages ​​to perform the operations of the embodiments of this application. The programming languages ​​include object-oriented programming languages ​​such as Java and C++, as well as conventional procedural programming languages ​​such as C or similar languages. The program code can be executed entirely on the user's computing device, partially on the user's computing device, as a standalone software package, partially on the user's computing device and partially on a remote computing device, or entirely on a remote computing device or server.

[0160] The computer program or instructions may be stored in a computer-readable storage medium or transferred from one computer-readable storage medium to another. For example, the computer program or instructions may be transferred from one website, computer, server, or data center to another website, computer, server, or data center via wired or wireless means. The computer-readable storage medium may be any available medium that a computer can access, or a data storage device such as a server or data center that integrates one or more available media. The available medium may be a magnetic medium, such as a floppy disk, hard disk, or magnetic tape; or an optical medium, such as a digital video optical disc; or a semiconductor medium, such as a solid-state drive. The computer-readable storage medium may be a volatile or non-volatile storage medium, or may include both volatile and non-volatile types of storage media.

[0161] Furthermore, embodiments of this application may also be storage media storing a computer program, which is executed by a processor using the steps of the workflow scheduling method described in any of the above embodiments of this specification, specifically implementing the following steps:

[0162] S101. Based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node, determine the current layer node; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow;

[0163] S102. When the current layer node is not empty, each current layer node is executed based on the target attribute information of each current layer node.

[0164] For the foregoing method embodiments, in order to simplify the description, they are all described as a series of actions. However, those skilled in the art should understand that this application is not limited to the described order of actions, because according to this application, some steps can be performed in other orders or simultaneously. Furthermore, those skilled in the art should also understand that the embodiments described in the specification are all preferred embodiments, and the actions and modules involved are not necessarily essential to this application.

[0165] It should be noted that the various embodiments in this specification are described in a progressive manner, with each embodiment focusing on the differences from other embodiments. Similar or identical parts between embodiments can be referred to interchangeably. For apparatus embodiments, since they are basically similar to method embodiments, the description is relatively simple; relevant parts can be referred to the descriptions in the method embodiments.

[0166] The steps in the methods of the various embodiments of this application can be adjusted, combined, or deleted according to actual needs, and the technical features described in each embodiment can be replaced or combined. The modules and sub-modules in the devices and terminals of the various embodiments of this application can be combined, divided, or deleted according to actual needs.

[0167] It should be understood that the disclosed terminals, devices, and methods can be implemented in other ways, given the several embodiments provided in this application. For example, the terminal embodiments described above are merely illustrative. For instance, the division of modules or sub-modules is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple sub-modules or modules may be combined or integrated into another module, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be indirect coupling or communication connection through some interfaces, devices, or modules, and may be electrical, mechanical, or other forms.

[0168] The modules or submodules described as separate components may or may not be physically separate. The components that constitute a module or submodule may or may not be physical modules or submodules; that is, they may be located in one place or distributed across multiple network modules or submodules. Some or all of the modules or submodules can be selected to achieve the purpose of this embodiment's solution, depending on actual needs.

[0169] Furthermore, the functional modules or sub-modules in the various embodiments of this application can be integrated into one processing module, or each module or sub-module can exist physically separately, or two or more modules or sub-modules can be integrated into one module. The integrated modules or sub-modules described above can be implemented in hardware or in the form of software functional modules or sub-modules.

[0170] Those skilled in the art will further recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, the components and steps of the various examples have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0171] The steps of the methods or algorithms described in conjunction with the embodiments disclosed herein can be implemented directly by hardware, a software unit executed by a processor, or a combination of both. The software unit can be located in random access memory (RAM), main memory, read-only memory (ROM), electrically programmable ROM, electrically erasable programmable ROM, registers, hard disk, removable disk, CD-ROM, or any other form of storage medium known in the art.

[0172] Finally, it should be noted that in this document, relational terms such as "first" and "second" are used only to distinguish one entity or operation from another, and do not necessarily require or imply any such actual relationship or order between these entities or operations. Furthermore, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes said element.

[0173] The above description of the disclosed embodiments enables those skilled in the art to make or use this application. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be implemented in other embodiments without departing from the spirit or scope of this application. Therefore, this application is not to be limited to the embodiments shown herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

Claims

1. A workflow scheduling method, characterized in that, include: Based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node, determine the nodes of the current layer; The current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow; Determining the current layer node based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node includes: determining the successor node of each preceding layer node based on the topological relationships between nodes in the target workflow; determining candidate nodes from the successor nodes based on the execution status of each successor node and the execution status of the predecessor node of each successor node; and determining the current layer node from the candidate nodes based on the type of the predecessor node of each candidate node. When the current layer node is not empty, each current layer node is executed based on its target attribute information.

2. The method according to claim 1, characterized in that, The step of determining the current layer node from the candidate nodes based on the type of the predecessor node of each candidate node includes: Based on the type of each predecessor node of the candidate node, determine whether the predecessor nodes of the candidate node include branch nodes; When the predecessor node of the candidate node includes a branch node, the execution result of the branch node is used to determine the branch path to be executed, and the positional relationship between the candidate node and the branch path to be executed is used to determine whether to use the candidate node as the current layer node. When the predecessor node of the candidate node does not include a branch node, the candidate node is taken as the current layer node.

3. The method according to claim 1, characterized in that, The step of executing each current layer node based on the target attribute information of each current layer node includes: When there are multiple current layer nodes, the execution priority of each current layer node is determined based on the target attribute information of each current layer node. Each current layer node is executed based on its execution priority.

4. The method according to claim 1, characterized in that, The target attribute information includes the attribute value of at least one of the following: predetermined execution time, number of dependent nodes, target response rate, and execution status of the dependent nodes.

5. The method according to claim 1, characterized in that, The target attribute information includes the target timeout duration; The step of executing each current layer node based on the target attribute information of each current layer node includes: When the timeout duration of the target node reaches the target timeout duration, the step of determining the current layer node is repeated. The target node includes the node with the longest predetermined execution time among all the current layer nodes.

6. The method according to claim 1, characterized in that, The target attribute information includes redundancy identification information; the redundancy identification information is used to characterize the redundant branch path of the branch path in which the current layer node is located; The step of executing each current layer node based on the target attribute information of each current layer node includes: When the redundancy identification information of the current layer node indicates that there is a redundant branch path in the branch path where the current layer node is located, the execution result of the redundant branch path is obtained; If there is an execution result for the redundant branch path, then the execution result of the redundant branch path shall be used as the execution result of the branch path in which the current layer node is located. If there is no execution result for the redundant branch path, then the current layer node is executed.

7. The method according to any one of claims 1 to 6, characterized in that, Also includes: When the current layer node is empty, the execution of the target workflow is determined to be completed.

8. A workflow scheduling device, characterized in that, include: The first data processing module is used to determine the current layer node based on the topological relationship between nodes in the target workflow and the execution status and / or execution result of each node; the current layer node includes the starting node of the target workflow or the subsequent node of the previous layer node in each branch path of the target workflow; Determining the current layer node based on the topological relationships between nodes in the target workflow and the execution status and / or execution results of each node includes: determining the successor node of each preceding layer node based on the topological relationships between nodes in the target workflow; determining candidate nodes from the successor nodes based on the execution status of each successor node and the execution status of the predecessor node of each successor node; and determining the current layer node from the candidate nodes based on the type of the predecessor node of each candidate node. The second data processing module is used to execute each current layer node based on the target attribute information of each current layer node when the current layer node is not empty.

9. A workflow execution engine, characterized in that, The workflow execution engine is configured to execute the workflow scheduling method as described in any one of claims 1 to 7.

10. An electronic device, characterized in that, include: Memory and processor; The memory is connected to the processor and is used to store programs; The processor is configured to implement the workflow scheduling method as described in any one of claims 1 to 7 by running a program in the memory.

11. A computer program product, characterized in that, It includes computer program instructions that, when executed by a processor, cause the processor to perform the workflow scheduling method as described in any one of claims 1 to 7.