|
|
|
@@ -3,6 +3,7 @@ import time |
|
|
|
from collections.abc import Mapping, Sequence |
|
|
|
from datetime import UTC, datetime |
|
|
|
from typing import Any, Optional, Union, cast |
|
|
|
from uuid import uuid4 |
|
|
|
|
|
|
|
from sqlalchemy.orm import Session |
|
|
|
|
|
|
|
@@ -80,38 +81,38 @@ class WorkflowCycleManage: |
|
|
|
|
|
|
|
inputs[f"sys.{key.value}"] = value |
|
|
|
|
|
|
|
inputs = WorkflowEntry.handle_special_values(inputs) |
|
|
|
|
|
|
|
triggered_from = ( |
|
|
|
WorkflowRunTriggeredFrom.DEBUGGING |
|
|
|
if self._application_generate_entity.invoke_from == InvokeFrom.DEBUGGER |
|
|
|
else WorkflowRunTriggeredFrom.APP_RUN |
|
|
|
) |
|
|
|
|
|
|
|
# handle special values |
|
|
|
inputs = WorkflowEntry.handle_special_values(inputs) |
|
|
|
|
|
|
|
# init workflow run |
|
|
|
workflow_run = WorkflowRun() |
|
|
|
workflow_run_id = self._workflow_system_variables[SystemVariableKey.WORKFLOW_RUN_ID] |
|
|
|
if workflow_run_id: |
|
|
|
workflow_run.id = workflow_run_id |
|
|
|
workflow_run.tenant_id = self._workflow.tenant_id |
|
|
|
workflow_run.app_id = self._workflow.app_id |
|
|
|
workflow_run.sequence_number = new_sequence_number |
|
|
|
workflow_run.workflow_id = self._workflow.id |
|
|
|
workflow_run.type = self._workflow.type |
|
|
|
workflow_run.triggered_from = triggered_from.value |
|
|
|
workflow_run.version = self._workflow.version |
|
|
|
workflow_run.graph = self._workflow.graph |
|
|
|
workflow_run.inputs = json.dumps(inputs) |
|
|
|
workflow_run.status = WorkflowRunStatus.RUNNING.value |
|
|
|
workflow_run.created_by_role = ( |
|
|
|
CreatedByRole.ACCOUNT.value if isinstance(self._user, Account) else CreatedByRole.END_USER.value |
|
|
|
) |
|
|
|
workflow_run.created_by = self._user.id |
|
|
|
with Session(db.engine, expire_on_commit=False) as session: |
|
|
|
workflow_run = WorkflowRun() |
|
|
|
system_id = self._workflow_system_variables[SystemVariableKey.WORKFLOW_RUN_ID] |
|
|
|
workflow_run.id = system_id or str(uuid4()) |
|
|
|
workflow_run.tenant_id = self._workflow.tenant_id |
|
|
|
workflow_run.app_id = self._workflow.app_id |
|
|
|
workflow_run.sequence_number = new_sequence_number |
|
|
|
workflow_run.workflow_id = self._workflow.id |
|
|
|
workflow_run.type = self._workflow.type |
|
|
|
workflow_run.triggered_from = triggered_from.value |
|
|
|
workflow_run.version = self._workflow.version |
|
|
|
workflow_run.graph = self._workflow.graph |
|
|
|
workflow_run.inputs = json.dumps(inputs) |
|
|
|
workflow_run.status = WorkflowRunStatus.RUNNING |
|
|
|
workflow_run.created_by_role = ( |
|
|
|
CreatedByRole.ACCOUNT if isinstance(self._user, Account) else CreatedByRole.END_USER |
|
|
|
) |
|
|
|
workflow_run.created_by = self._user.id |
|
|
|
workflow_run.created_at = datetime.now(UTC).replace(tzinfo=None) |
|
|
|
|
|
|
|
db.session.add(workflow_run) |
|
|
|
db.session.commit() |
|
|
|
db.session.refresh(workflow_run) |
|
|
|
db.session.close() |
|
|
|
session.add(workflow_run) |
|
|
|
session.commit() |
|
|
|
|
|
|
|
return workflow_run |
|
|
|
|