You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gcgj-dify-1.7.0/api/core/workflow
xuzijie1995 db91643915 refactor(workflow): Rearchitect stream dependency logic for complex graphs
This commit addresses a critical issue where streaming output would fail in workflows with complex topologies, particularly those involving multiple conditional branches (if/else) that converge on a common node before the LLM and Answer nodes.

The root cause was twofold:
1. A bug in the branch pruning logic () that would incorrectly remove shared downstream nodes, leading to a premature emptying of the  list.
2. A flawed static dependency analysis () that could not correctly resolve dependencies for nodes that were part of multiple, mutually exclusive execution paths.

This refactor introduces a new, robust architecture for streaming dependency management based on the principle of "Static Pre-pruning + Dynamic Adjudication":

- **Fix**: The branch pruning logic in  is now non-recursive and conservative. It only prunes the immediate first node of an unreachable branch, preserving the integrity of shared downstream paths and join points.

- **Refactor**: The old static dependency analysis has been completely removed. This includes deleting the  attribute from the  entity and deleting the associated recursive dependency fetching methods (, ).

- **Feat**: A new method, , has been implemented in . This method performs a real-time, backward traversal of the graph from the streaming node, querying the runtime execution state () to dynamically validate if the *actual* dependency path has been successfully completed. This ensures that streaming decisions are based on the ground truth of the current execution, not a flawed static prediction.

- **Doc**: Added comprehensive docstrings and comments to the modified components to explain the new architecture and the rationale behind the changes.
8 months ago
..
callbacks update worklow events logs. (#19871) 9 months ago
entities minor code fix: remove duplicate type check branch (#22536) 8 months ago
graph_engine fix(workflow): Resolve streaming failure on conditional join points 8 months ago
nodes refactor(workflow): Rearchitect stream dependency logic for complex graphs 8 months ago
repositories feat(workflow_cycle_manager): Removes redundant repository methods and adds caching (#22597) 8 months ago
utils refactor: move structured output support outside LLM Node (#21565) 9 months ago
__init__.py
constants.py
conversation_variable_updater.py feat: Persist Variables for Enhanced Debugging Workflow (#20699) 9 months ago
enums.py refactor(api/core/workflow/enums): Rename WORKFLOW_RUN_ID to WORKFLOW_EXECUTION_ID (#20459) 10 months ago
errors.py refactor: decouple Node and NodeData (#22581) 8 months ago
system_variable.py refactor(api): Separate SegmentType for Integer/Float to Enable Pydantic Serialization (#22025) 8 months ago
variable_loader.py fix(api): adding variable to variable pool recursively while loading draft variables. (#21478) 9 months ago
workflow_cycle_manager.py Fix/replace datetime patterns with naive utc now (#22654) 8 months ago
workflow_engine_manager.py
workflow_entry.py refactor: decouple Node and NodeData (#22581) 8 months ago
workflow_type_encoder.py fix: drop dead code phase2 unused class (#22042) 8 months ago