mirror of
https://github.com/langgenius/dify.git
synced 2026-03-04 23:36:20 +08:00
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""
|
|
NodeExecution entity representing a node's execution state.
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from dify_graph.enums import NodeState
|
|
|
|
|
|
@dataclass
|
|
class NodeExecution:
|
|
"""
|
|
Entity representing the execution state of a single node.
|
|
|
|
This is a mutable entity that tracks the runtime state of a node
|
|
during graph execution.
|
|
"""
|
|
|
|
node_id: str
|
|
state: NodeState = NodeState.UNKNOWN
|
|
retry_count: int = 0
|
|
execution_id: str | None = None
|
|
error: str | None = None
|
|
|
|
def mark_started(self, execution_id: str) -> None:
|
|
"""Mark the node as started with an execution ID."""
|
|
self.state = NodeState.TAKEN
|
|
self.execution_id = execution_id
|
|
|
|
def mark_taken(self) -> None:
|
|
"""Mark the node as successfully completed."""
|
|
self.state = NodeState.TAKEN
|
|
self.error = None
|
|
|
|
def mark_failed(self, error: str) -> None:
|
|
"""Mark the node as failed with an error."""
|
|
self.error = error
|
|
|
|
def mark_skipped(self) -> None:
|
|
"""Mark the node as skipped."""
|
|
self.state = NodeState.SKIPPED
|
|
|
|
def increment_retry(self) -> None:
|
|
"""Increment the retry count for this node."""
|
|
self.retry_count += 1
|