Sfoglia il codice sorgente

fix: delete tool parameters cache when sync draft workflow for run workflow use new parameter change in draft workflow (#3637)

tags/0.6.4
xin.gao 1 anno fa
parent
commit
71cc0074ef
Nessun account collegato all'indirizzo email del committer

+ 3
- 0
api/events/app_event.py Vedi File



# 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')

+ 1
- 0
api/events/event_handlers/__init__.py Vedi File

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

+ 26
- 0
api/events/event_handlers/delete_tool_parameters_cache_when_sync_draft_workflow.py Vedi File

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()

+ 4
- 1
api/services/workflow_service.py Vedi File

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



Loading…
Annulla
Salva