Underground-Digital/Workflow-Engine
0
1from typing import Optional2 3from pydantic import BaseModel4 5from core.app.entities.app_invoke_entities import InvokeFrom6from core.workflow.nodes.base import BaseIterationState, BaseNode7from models.enums import UserFrom8from models.workflow import Workflow, WorkflowType9 10from .node_entities import NodeRunResult11from .variable_pool import VariablePool12 13 14class WorkflowNodeAndResult:15 node: BaseNode16 result: Optional[NodeRunResult] = None17 18 def __init__(self, node: BaseNode, result: Optional[NodeRunResult] = None):19 self.node = node20 self.result = result21 22 23class WorkflowRunState:24 tenant_id: str25 app_id: str26 workflow_id: str27 workflow_type: WorkflowType28 user_id: str29 user_from: UserFrom30 invoke_from: InvokeFrom31 32 workflow_call_depth: int33 34 start_at: float35 variable_pool: VariablePool36 37 total_tokens: int = 038 39 workflow_nodes_and_results: list[WorkflowNodeAndResult]40 41 class NodeRun(BaseModel):42 node_id: str43 iteration_node_id: str44 45 workflow_node_runs: list[NodeRun]46 workflow_node_steps: int47 48 current_iteration_state: Optional[BaseIterationState]49 50 def __init__(51 self,52 workflow: Workflow,53 start_at: float,54 variable_pool: VariablePool,55 user_id: str,56 user_from: UserFrom,57 invoke_from: InvokeFrom,58 workflow_call_depth: int,59 ):60 self.workflow_id = workflow.id61 self.tenant_id = workflow.tenant_id62 self.app_id = workflow.app_id63 self.workflow_type = WorkflowType.value_of(workflow.type)64 self.user_id = user_id65 self.user_from = user_from66 self.invoke_from = invoke_from67 self.workflow_call_depth = workflow_call_depth68 69 self.start_at = start_at70 self.variable_pool = variable_pool71 72 self.total_tokens = 073 74 self.workflow_node_steps = 175 self.workflow_node_runs = []76 self.current_iteration_state = None77 