Commit 4630f9c7 authored by takatost's avatar takatost

add workflow_app_log codes

parent ba66beb4
......@@ -32,7 +32,15 @@ from core.workflow.entities.node_entities import NodeRunMetadataKey, SystemVaria
from extensions.ext_database import db
from models.account import Account
from models.model import EndUser
from models.workflow import Workflow, WorkflowNodeExecution, WorkflowRun, WorkflowRunStatus, WorkflowRunTriggeredFrom
from models.workflow import (
Workflow,
WorkflowAppLog,
WorkflowAppLogCreatedFrom,
WorkflowNodeExecution,
WorkflowRun,
WorkflowRunStatus,
WorkflowRunTriggeredFrom,
)
logger = logging.getLogger(__name__)
......@@ -142,7 +150,7 @@ class WorkflowAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
)
# save workflow app log
self._save_workflow_app_log()
self._save_workflow_app_log(workflow_run)
response = {
'task_id': self._application_generate_entity.task_id,
......@@ -261,7 +269,7 @@ class WorkflowAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
yield self._yield_response(replace_response)
# save workflow app log
self._save_workflow_app_log()
self._save_workflow_app_log(workflow_run)
workflow_run_response = {
'event': 'workflow_finished',
......@@ -448,12 +456,34 @@ class WorkflowAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
return workflow_run
def _save_workflow_app_log(self) -> None:
def _save_workflow_app_log(self, workflow_run: WorkflowRun) -> None:
"""
Save workflow app log.
:return:
"""
pass # todo
invoke_from = self._application_generate_entity.invoke_from
if invoke_from == InvokeFrom.SERVICE_API:
created_from = WorkflowAppLogCreatedFrom.SERVICE_API
elif invoke_from == InvokeFrom.EXPLORE:
created_from = WorkflowAppLogCreatedFrom.INSTALLED_APP
elif invoke_from == InvokeFrom.WEB_APP:
created_from = WorkflowAppLogCreatedFrom.WEB_APP
else:
# not save log for debugging
return
workflow_app_log = WorkflowAppLog(
tenant_id=workflow_run.tenant_id,
app_id=workflow_run.app_id,
workflow_id=workflow_run.workflow_id,
workflow_run_id=workflow_run.id,
created_from=created_from.value,
created_by_role=('account' if isinstance(self._user, Account) else 'end_user'),
created_by=self._user.id,
)
db.session.add(workflow_app_log)
db.session.commit()
db.session.close()
def _handle_chunk(self, text: str) -> dict:
"""
......
......@@ -433,6 +433,29 @@ class WorkflowNodeExecution(db.Model):
def execution_metadata_dict(self):
return self.execution_metadata if not self.execution_metadata else json.loads(self.execution_metadata)
class WorkflowAppLogCreatedFrom(Enum):
"""
Workflow App Log Created From Enum
"""
SERVICE_API = 'service-api'
WEB_APP = 'web-app'
INSTALLED_APP = 'installed-app'
@classmethod
def value_of(cls, value: str) -> 'WorkflowAppLogCreatedFrom':
"""
Get value of given mode.
:param value: mode value
:return: mode
"""
for mode in cls:
if mode.value == value:
return mode
raise ValueError(f'invalid workflow app log created from value {value}')
class WorkflowAppLog(db.Model):
"""
Workflow App execution log, excluding workflow debugging records.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment