| # sender: app, kwargs: published_workflow | # sender: app, kwargs: published_workflow | ||||
| app_published_workflow_was_updated = signal('app-published-workflow-was-updated') | app_published_workflow_was_updated = signal('app-published-workflow-was-updated') | ||||
| # sender: app, kwargs: synced_draft_workflow | |||||
| app_draft_workflow_was_synced = signal('app-draft-workflow-was-synced') |
| from .create_site_record_when_app_created import handle | from .create_site_record_when_app_created import handle | ||||
| from .deduct_quota_when_messaeg_created import handle | from .deduct_quota_when_messaeg_created import handle | ||||
| from .delete_installed_app_when_app_deleted import handle | from .delete_installed_app_when_app_deleted import handle | ||||
| from .delete_tool_parameters_cache_when_sync_draft_workflow import handle | |||||
| from .update_app_dataset_join_when_app_model_config_updated import handle | from .update_app_dataset_join_when_app_model_config_updated import handle | ||||
| from .update_app_dataset_join_when_app_published_workflow_updated import handle | from .update_app_dataset_join_when_app_published_workflow_updated import handle | ||||
| from .update_provider_last_used_at_when_messaeg_created import handle | from .update_provider_last_used_at_when_messaeg_created import handle |
| from core.tools.tool_manager import ToolManager | |||||
| from core.tools.utils.configuration import ToolParameterConfigurationManager | |||||
| from core.workflow.entities.node_entities import NodeType | |||||
| from core.workflow.nodes.tool.entities import ToolEntity | |||||
| from events.app_event import app_draft_workflow_was_synced | |||||
| @app_draft_workflow_was_synced.connect | |||||
| def handle(sender, **kwargs): | |||||
| app = sender | |||||
| for node_data in kwargs.get('synced_draft_workflow').graph_dict.get('nodes', []): | |||||
| if node_data.get('data', {}).get('type') == NodeType.TOOL.value: | |||||
| tool_entity = ToolEntity(**node_data["data"]) | |||||
| tool_runtime = ToolManager.get_tool_runtime( | |||||
| provider_type=tool_entity.provider_type, | |||||
| provider_name=tool_entity.provider_id, | |||||
| tool_name=tool_entity.tool_name, | |||||
| tenant_id=app.tenant_id, | |||||
| ) | |||||
| manager = ToolParameterConfigurationManager( | |||||
| tenant_id=app.tenant_id, | |||||
| tool_runtime=tool_runtime, | |||||
| provider_name=tool_entity.provider_name, | |||||
| provider_type=tool_entity.provider_type, | |||||
| ) | |||||
| manager.delete_tool_parameters_cache() |
| from core.workflow.entities.node_entities import NodeType | from core.workflow.entities.node_entities import NodeType | ||||
| from core.workflow.errors import WorkflowNodeRunFailedError | from core.workflow.errors import WorkflowNodeRunFailedError | ||||
| from core.workflow.workflow_engine_manager import WorkflowEngineManager | from core.workflow.workflow_engine_manager import WorkflowEngineManager | ||||
| from events.app_event import app_published_workflow_was_updated | |||||
| from events.app_event import app_draft_workflow_was_synced, app_published_workflow_was_updated | |||||
| from extensions.ext_database import db | from extensions.ext_database import db | ||||
| from models.account import Account | from models.account import Account | ||||
| from models.model import App, AppMode | from models.model import App, AppMode | ||||
| # commit db session changes | # commit db session changes | ||||
| db.session.commit() | db.session.commit() | ||||
| # trigger app workflow events | |||||
| app_draft_workflow_was_synced.send(app_model, synced_draft_workflow=workflow) | |||||
| # return draft workflow | # return draft workflow | ||||
| return workflow | return workflow | ||||