mirror of
https://github.com/langgenius/dify.git
synced 2025-12-25 01:00:42 -05:00
Refactor: Rename triggers to events in trigger-related entities and services
- Updated class and variable names from 'triggers' to 'events' across multiple files to improve clarity and consistency. - Adjusted related data structures and methods to reflect the new naming convention, including changes in API entities, service methods, and trigger management logic. - Ensured all references to triggers are replaced with events to align with the updated terminology.
This commit is contained in:
@@ -264,9 +264,9 @@ class TriggerValidateProviderCredentialsResponse(BaseModel):
|
||||
|
||||
|
||||
class TriggerDispatchResponse:
|
||||
triggers: list[str]
|
||||
events: list[str]
|
||||
response: Response
|
||||
|
||||
def __init__(self, triggers: list[str], response: Response):
|
||||
self.triggers = triggers
|
||||
def __init__(self, events: list[str], response: Response):
|
||||
self.events = events
|
||||
self.response = response
|
||||
|
||||
@@ -28,8 +28,8 @@ class PluginTriggerManager(BasePluginClient):
|
||||
for provider in json_response.get("data", []):
|
||||
declaration = provider.get("declaration", {}) or {}
|
||||
provider_id = provider.get("plugin_id") + "/" + provider.get("provider")
|
||||
for trigger in declaration.get("triggers", []):
|
||||
trigger["identity"]["provider"] = provider_id
|
||||
for event in declaration.get("events", []):
|
||||
event["identity"]["provider"] = provider_id
|
||||
|
||||
return json_response
|
||||
|
||||
@@ -45,8 +45,8 @@ class PluginTriggerManager(BasePluginClient):
|
||||
provider.declaration.identity.name = f"{provider.plugin_id}/{provider.declaration.identity.name}"
|
||||
|
||||
# override the provider name for each trigger to plugin_id/provider_name
|
||||
for trigger in provider.declaration.triggers:
|
||||
trigger.identity.provider = provider.declaration.identity.name
|
||||
for event in provider.declaration.events:
|
||||
event.identity.provider = provider.declaration.identity.name
|
||||
|
||||
return response
|
||||
|
||||
@@ -58,8 +58,8 @@ class PluginTriggerManager(BasePluginClient):
|
||||
def transformer(json_response: dict[str, Any]) -> dict:
|
||||
data = json_response.get("data")
|
||||
if data:
|
||||
for trigger in data.get("declaration", {}).get("triggers", []):
|
||||
trigger["identity"]["provider"] = str(provider_id)
|
||||
for event in data.get("declaration", {}).get("events", []):
|
||||
event["identity"]["provider"] = str(provider_id)
|
||||
|
||||
return json_response
|
||||
|
||||
@@ -74,8 +74,8 @@ class PluginTriggerManager(BasePluginClient):
|
||||
response.declaration.identity.name = str(provider_id)
|
||||
|
||||
# override the provider name for each trigger to plugin_id/provider_name
|
||||
for trigger in response.declaration.triggers:
|
||||
trigger.identity.provider = str(provider_id)
|
||||
for event in response.declaration.events:
|
||||
event.identity.provider = str(provider_id)
|
||||
|
||||
return response
|
||||
|
||||
@@ -184,7 +184,7 @@ class PluginTriggerManager(BasePluginClient):
|
||||
|
||||
for resp in response:
|
||||
return TriggerDispatchResponse(
|
||||
triggers=resp.triggers,
|
||||
events=resp.events,
|
||||
response=deserialize_response(binascii.unhexlify(resp.raw_http_response.encode())),
|
||||
)
|
||||
|
||||
|
||||
@@ -7,11 +7,11 @@ from core.entities.provider_entities import ProviderConfig
|
||||
from core.plugin.entities.plugin_daemon import CredentialType
|
||||
from core.tools.entities.common_entities import I18nObject
|
||||
from core.trigger.entities.entities import (
|
||||
EventDescription,
|
||||
EventIdentity,
|
||||
EventParameter,
|
||||
SubscriptionConstructor,
|
||||
TriggerCreationMethod,
|
||||
TriggerDescription,
|
||||
TriggerIdentity,
|
||||
TriggerParameter,
|
||||
)
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ class TriggerProviderSubscriptionApiEntity(BaseModel):
|
||||
|
||||
class TriggerApiEntity(BaseModel):
|
||||
name: str = Field(description="The name of the trigger")
|
||||
identity: TriggerIdentity = Field(description="The identity of the trigger")
|
||||
description: TriggerDescription = Field(description="The description of the trigger")
|
||||
parameters: list[TriggerParameter] = Field(description="The parameters of the trigger")
|
||||
identity: EventIdentity = Field(description="The identity of the trigger")
|
||||
description: EventDescription = Field(description="The description of the trigger")
|
||||
parameters: list[EventParameter] = Field(description="The parameters of the trigger")
|
||||
output_schema: Optional[Mapping[str, Any]] = Field(description="The output schema of the trigger")
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ class TriggerProviderApiEntity(BaseModel):
|
||||
default_factory=list,
|
||||
description="The subscription schema of the trigger provider",
|
||||
)
|
||||
triggers: list[TriggerApiEntity] = Field(description="The triggers of the trigger provider")
|
||||
events: list[TriggerApiEntity] = Field(description="The events of the trigger provider")
|
||||
|
||||
|
||||
class SubscriptionBuilderApiEntity(BaseModel):
|
||||
|
||||
@@ -16,7 +16,7 @@ from core.plugin.entities.parameters import (
|
||||
from core.tools.entities.common_entities import I18nObject
|
||||
|
||||
|
||||
class TriggerParameterType(StrEnum):
|
||||
class EventParameterType(StrEnum):
|
||||
"""The type of the parameter"""
|
||||
|
||||
STRING = "string"
|
||||
@@ -39,14 +39,14 @@ class TriggerParameterType(StrEnum):
|
||||
return cast_parameter_value(self, value)
|
||||
|
||||
|
||||
class TriggerParameter(BaseModel):
|
||||
class EventParameter(BaseModel):
|
||||
"""
|
||||
The parameter of the trigger
|
||||
The parameter of the event
|
||||
"""
|
||||
|
||||
name: str = Field(..., description="The name of the parameter")
|
||||
label: I18nObject = Field(..., description="The label presented to the user")
|
||||
type: TriggerParameterType = Field(..., description="The type of the parameter")
|
||||
type: EventParameterType = Field(..., description="The type of the parameter")
|
||||
auto_generate: Optional[PluginParameterAutoGenerate] = Field(
|
||||
default=None, description="The auto generate of the parameter"
|
||||
)
|
||||
@@ -79,36 +79,36 @@ class TriggerProviderIdentity(BaseModel):
|
||||
tags: list[str] = Field(default_factory=list, description="The tags of the trigger provider")
|
||||
|
||||
|
||||
class TriggerIdentity(BaseModel):
|
||||
class EventIdentity(BaseModel):
|
||||
"""
|
||||
The identity of the trigger
|
||||
The identity of the event
|
||||
"""
|
||||
|
||||
author: str = Field(..., description="The author of the trigger")
|
||||
name: str = Field(..., description="The name of the trigger")
|
||||
label: I18nObject = Field(..., description="The label of the trigger")
|
||||
provider: Optional[str] = Field(default=None, description="The provider of the trigger")
|
||||
author: str = Field(..., description="The author of the event")
|
||||
name: str = Field(..., description="The name of the event")
|
||||
label: I18nObject = Field(..., description="The label of the event")
|
||||
provider: Optional[str] = Field(default=None, description="The provider of the event")
|
||||
|
||||
|
||||
class TriggerDescription(BaseModel):
|
||||
class EventDescription(BaseModel):
|
||||
"""
|
||||
The description of the trigger
|
||||
The description of the event
|
||||
"""
|
||||
|
||||
human: I18nObject = Field(..., description="Human readable description")
|
||||
llm: I18nObject = Field(..., description="LLM readable description")
|
||||
|
||||
|
||||
class TriggerEntity(BaseModel):
|
||||
class EventEntity(BaseModel):
|
||||
"""
|
||||
The configuration of a trigger
|
||||
The configuration of an event
|
||||
"""
|
||||
|
||||
identity: TriggerIdentity = Field(..., description="The identity of the trigger")
|
||||
parameters: list[TriggerParameter] = Field(default=[], description="The parameters of the trigger")
|
||||
description: TriggerDescription = Field(..., description="The description of the trigger")
|
||||
identity: EventIdentity = Field(..., description="The identity of the event")
|
||||
parameters: list[EventParameter] = Field(default=[], description="The parameters of the event")
|
||||
description: EventDescription = Field(..., description="The description of the event")
|
||||
output_schema: Optional[Mapping[str, Any]] = Field(
|
||||
default=None, description="The output schema that this trigger produces"
|
||||
default=None, description="The output schema that this event produces"
|
||||
)
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ class SubscriptionConstructor(BaseModel):
|
||||
The subscription constructor of the trigger provider
|
||||
"""
|
||||
|
||||
parameters: list[TriggerParameter] = Field(
|
||||
parameters: list[EventParameter] = Field(
|
||||
default_factory=list, description="The parameters schema of the subscription constructor"
|
||||
)
|
||||
|
||||
@@ -158,7 +158,7 @@ class TriggerProviderEntity(BaseModel):
|
||||
subscription_constructor: SubscriptionConstructor = Field(
|
||||
description="The subscription constructor of the trigger provider",
|
||||
)
|
||||
triggers: list[TriggerEntity] = Field(default=[], description="The triggers of the trigger provider")
|
||||
events: list[EventEntity] = Field(default=[], description="The events of the trigger provider")
|
||||
|
||||
|
||||
class Subscription(BaseModel):
|
||||
@@ -262,7 +262,7 @@ class TriggerEventData(BaseModel):
|
||||
"""Event data dispatched to trigger sessions."""
|
||||
|
||||
subscription_id: str
|
||||
triggers: list[str]
|
||||
events: list[str]
|
||||
request_id: str
|
||||
timestamp: float
|
||||
|
||||
@@ -293,18 +293,18 @@ class TriggerCreationMethod(StrEnum):
|
||||
|
||||
# Export all entities
|
||||
__all__ = [
|
||||
"EventDescription",
|
||||
"EventEntity",
|
||||
"EventIdentity",
|
||||
"EventParameter",
|
||||
"EventParameterType",
|
||||
"OAuthSchema",
|
||||
"RequestLog",
|
||||
"Subscription",
|
||||
"SubscriptionBuilder",
|
||||
"TriggerCreationMethod",
|
||||
"TriggerDescription",
|
||||
"TriggerEntity",
|
||||
"TriggerEventData",
|
||||
"TriggerIdentity",
|
||||
"TriggerInputs",
|
||||
"TriggerParameter",
|
||||
"TriggerParameterType",
|
||||
"TriggerProviderEntity",
|
||||
"TriggerProviderIdentity",
|
||||
"Unsubscription",
|
||||
|
||||
@@ -17,11 +17,11 @@ from core.plugin.entities.request import (
|
||||
from core.plugin.impl.trigger import PluginTriggerManager
|
||||
from core.trigger.entities.api_entities import TriggerApiEntity, TriggerProviderApiEntity
|
||||
from core.trigger.entities.entities import (
|
||||
EventEntity,
|
||||
ProviderConfig,
|
||||
Subscription,
|
||||
SubscriptionConstructor,
|
||||
TriggerCreationMethod,
|
||||
TriggerEntity,
|
||||
TriggerProviderEntity,
|
||||
TriggerProviderIdentity,
|
||||
Unsubscription,
|
||||
@@ -100,15 +100,15 @@ class PluginTriggerProviderController:
|
||||
subscription_constructor=subscription_constructor,
|
||||
subscription_schema=self.entity.subscription_schema,
|
||||
supported_creation_methods=supported_creation_methods,
|
||||
triggers=[
|
||||
events=[
|
||||
TriggerApiEntity(
|
||||
name=trigger.identity.name,
|
||||
identity=trigger.identity,
|
||||
description=trigger.description,
|
||||
parameters=trigger.parameters,
|
||||
output_schema=trigger.output_schema,
|
||||
name=event.identity.name,
|
||||
identity=event.identity,
|
||||
description=event.description,
|
||||
parameters=event.parameters,
|
||||
output_schema=event.output_schema,
|
||||
)
|
||||
for trigger in self.entity.triggers
|
||||
for event in self.entity.events
|
||||
],
|
||||
)
|
||||
|
||||
@@ -117,24 +117,24 @@ class PluginTriggerProviderController:
|
||||
"""Get provider identity"""
|
||||
return self.entity.identity
|
||||
|
||||
def get_triggers(self) -> list[TriggerEntity]:
|
||||
def get_events(self) -> list[EventEntity]:
|
||||
"""
|
||||
Get all triggers for this provider
|
||||
Get all events for this provider
|
||||
|
||||
:return: List of trigger entities
|
||||
:return: List of event entities
|
||||
"""
|
||||
return self.entity.triggers
|
||||
return self.entity.events
|
||||
|
||||
def get_trigger(self, trigger_name: str) -> Optional[TriggerEntity]:
|
||||
def get_event(self, event_name: str) -> Optional[EventEntity]:
|
||||
"""
|
||||
Get a specific trigger by name
|
||||
Get a specific event by name
|
||||
|
||||
:param trigger_name: Trigger name
|
||||
:return: Trigger entity or None
|
||||
:param event_name: Event name
|
||||
:return: Event entity or None
|
||||
"""
|
||||
for trigger in self.entity.triggers:
|
||||
if trigger.identity.name == trigger_name:
|
||||
return trigger
|
||||
for event in self.entity.events:
|
||||
if event.identity.name == event_name:
|
||||
return event
|
||||
return None
|
||||
|
||||
def get_subscription_default_properties(self) -> Mapping[str, Any]:
|
||||
@@ -161,7 +161,7 @@ class PluginTriggerProviderController:
|
||||
:return: Validation response
|
||||
"""
|
||||
# First validate against schema
|
||||
for config in self.entity.subscription_constructor.credentials_schema:
|
||||
for config in self.entity.subscription_constructor.credentials_schema or []:
|
||||
if config.required and config.name not in credentials:
|
||||
raise TriggerProviderCredentialValidationError(f"Missing required credential field: {config.name}")
|
||||
|
||||
@@ -210,7 +210,7 @@ class PluginTriggerProviderController:
|
||||
)
|
||||
if credential_type == CredentialType.API_KEY:
|
||||
return (
|
||||
subscription_constructor.credentials_schema.copy()
|
||||
subscription_constructor.credentials_schema.copy() or []
|
||||
if subscription_constructor and subscription_constructor.credentials_schema
|
||||
else []
|
||||
)
|
||||
|
||||
@@ -15,8 +15,8 @@ from core.plugin.entities.request import Event, TriggerInvokeResponse
|
||||
from core.plugin.impl.exc import PluginInvokeError
|
||||
from core.plugin.impl.trigger import PluginTriggerManager
|
||||
from core.trigger.entities.entities import (
|
||||
EventEntity,
|
||||
Subscription,
|
||||
TriggerEntity,
|
||||
Unsubscription,
|
||||
)
|
||||
from core.trigger.provider import PluginTriggerProviderController
|
||||
@@ -116,7 +116,7 @@ class TriggerManager:
|
||||
return cls.list_plugin_trigger_providers(tenant_id)
|
||||
|
||||
@classmethod
|
||||
def list_triggers_by_provider(cls, tenant_id: str, provider_id: TriggerProviderID) -> list[TriggerEntity]:
|
||||
def list_triggers_by_provider(cls, tenant_id: str, provider_id: TriggerProviderID) -> list[EventEntity]:
|
||||
"""
|
||||
List all triggers for a specific provider
|
||||
|
||||
@@ -125,20 +125,8 @@ class TriggerManager:
|
||||
:return: List of trigger entities
|
||||
"""
|
||||
provider = cls.get_trigger_provider(tenant_id, provider_id)
|
||||
return provider.get_triggers()
|
||||
|
||||
@classmethod
|
||||
def get_trigger(cls, tenant_id: str, provider_id: TriggerProviderID, trigger_name: str) -> Optional[TriggerEntity]:
|
||||
"""
|
||||
Get a specific trigger
|
||||
|
||||
:param tenant_id: Tenant ID
|
||||
:param provider_id: Provider ID
|
||||
:param trigger_name: Trigger name
|
||||
:return: Trigger entity or None
|
||||
"""
|
||||
return cls.get_trigger_provider(tenant_id, provider_id).get_trigger(trigger_name)
|
||||
|
||||
return provider.get_events()
|
||||
|
||||
@classmethod
|
||||
def invoke_trigger(
|
||||
cls,
|
||||
@@ -165,7 +153,7 @@ class TriggerManager:
|
||||
:return: Trigger execution result
|
||||
"""
|
||||
provider = cls.get_trigger_provider(tenant_id, provider_id)
|
||||
trigger = provider.get_trigger(trigger_name)
|
||||
trigger = provider.get_event(trigger_name)
|
||||
if not trigger:
|
||||
raise ValueError(f"Trigger {trigger_name} not found in provider {provider_id}")
|
||||
try:
|
||||
|
||||
@@ -75,7 +75,7 @@ class TriggerDebugService:
|
||||
cls,
|
||||
tenant_id: str,
|
||||
subscription_id: str,
|
||||
triggers: list[str],
|
||||
events: list[str],
|
||||
request_id: str,
|
||||
timestamp: int,
|
||||
) -> int:
|
||||
@@ -86,15 +86,15 @@ class TriggerDebugService:
|
||||
).model_dump_json()
|
||||
|
||||
dispatched = 0
|
||||
if len(triggers) > 10:
|
||||
if len(events) > 10:
|
||||
logger.warning(
|
||||
"Too many triggers to dispatch at once: %d triggers tenant: %s subscription: %s",
|
||||
len(triggers),
|
||||
"Too many events to dispatch at once: %d events tenant: %s subscription: %s",
|
||||
len(events),
|
||||
tenant_id,
|
||||
subscription_id,
|
||||
)
|
||||
|
||||
for trigger_name in triggers:
|
||||
for trigger_name in events:
|
||||
try:
|
||||
dispatched += redis_client.eval(
|
||||
cls.LUA_DISPATCH,
|
||||
|
||||
@@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from core.plugin.entities.plugin_daemon import CredentialType
|
||||
from core.plugin.utils.http_parser import deserialize_request, serialize_request
|
||||
from core.trigger.entities.entities import TriggerEntity
|
||||
from core.trigger.entities.entities import EventEntity
|
||||
from core.trigger.trigger_manager import TriggerManager
|
||||
from core.workflow.enums import NodeType
|
||||
from core.workflow.nodes.trigger_schedule.exc import TenantOwnerNotFoundError
|
||||
@@ -70,7 +70,7 @@ class TriggerService:
|
||||
|
||||
@classmethod
|
||||
def dispatch_triggered_workflows(
|
||||
cls, subscription: TriggerSubscription, trigger: TriggerEntity, request_id: str
|
||||
cls, subscription: TriggerSubscription, trigger: EventEntity, request_id: str
|
||||
) -> int:
|
||||
"""Process triggered workflows.
|
||||
|
||||
@@ -191,7 +191,7 @@ class TriggerService:
|
||||
user_id=subscription.user_id, request=request, subscription=subscription.to_entity()
|
||||
)
|
||||
|
||||
if dispatch_response.triggers:
|
||||
if dispatch_response.events:
|
||||
request_id = f"trigger_request_{uuid.uuid4().hex}"
|
||||
serialized_request = serialize_request(request)
|
||||
storage.save(f"triggers/{request_id}", serialized_request)
|
||||
@@ -204,7 +204,7 @@ class TriggerService:
|
||||
provider_id=subscription.provider_id,
|
||||
subscription_id=subscription.id,
|
||||
timestamp=timestamp,
|
||||
triggers=list(dispatch_response.triggers),
|
||||
events=list(dispatch_response.events),
|
||||
request_id=request_id,
|
||||
)
|
||||
dispatch_data = plugin_trigger_dispatch_data.model_dump(mode="json")
|
||||
@@ -212,7 +212,7 @@ class TriggerService:
|
||||
|
||||
logger.info(
|
||||
"Queued async dispatching for %d triggers on endpoint %s with request_id %s",
|
||||
len(dispatch_response.triggers),
|
||||
len(dispatch_response.events),
|
||||
endpoint_id,
|
||||
request_id,
|
||||
)
|
||||
|
||||
@@ -65,7 +65,7 @@ class PluginTriggerDispatchData(BaseModel):
|
||||
provider_id: str
|
||||
subscription_id: str
|
||||
timestamp: int
|
||||
triggers: list[str]
|
||||
events: list[str]
|
||||
request_id: str
|
||||
|
||||
|
||||
|
||||
@@ -48,14 +48,14 @@ def dispatch_triggered_workflows_async(
|
||||
provider_id = dispatch_params.provider_id
|
||||
subscription_id = dispatch_params.subscription_id
|
||||
timestamp = dispatch_params.timestamp
|
||||
triggers = dispatch_params.triggers
|
||||
events = dispatch_params.events
|
||||
request_id = dispatch_params.request_id
|
||||
|
||||
try:
|
||||
logger.info(
|
||||
"Starting async trigger dispatching for endpoint=%s, triggers=%s, request_id=%s, timestamp=%s",
|
||||
"Starting async trigger dispatching for endpoint=%s, events=%s, request_id=%s, timestamp=%s",
|
||||
endpoint_id,
|
||||
triggers,
|
||||
events,
|
||||
request_id,
|
||||
timestamp,
|
||||
)
|
||||
@@ -85,13 +85,13 @@ def dispatch_triggered_workflows_async(
|
||||
|
||||
# Dispatch each trigger
|
||||
dispatched_count = 0
|
||||
for trigger in triggers:
|
||||
for event_name in events:
|
||||
try:
|
||||
trigger = controller.get_trigger(trigger)
|
||||
trigger = controller.get_event(event_name)
|
||||
if trigger is None:
|
||||
logger.error(
|
||||
"Trigger '%s' not found in provider '%s'",
|
||||
trigger,
|
||||
event_name,
|
||||
provider_id,
|
||||
)
|
||||
continue
|
||||
@@ -105,7 +105,7 @@ def dispatch_triggered_workflows_async(
|
||||
except Exception:
|
||||
logger.exception(
|
||||
"Failed to dispatch trigger '%s' for subscription %s",
|
||||
trigger,
|
||||
event_name,
|
||||
subscription_id,
|
||||
)
|
||||
# Continue processing other triggers even if one fails
|
||||
@@ -117,7 +117,7 @@ def dispatch_triggered_workflows_async(
|
||||
debug_dispatched = TriggerDebugService.dispatch_debug_event(
|
||||
tenant_id=subscription.tenant_id,
|
||||
subscription_id=subscription_id,
|
||||
triggers=triggers,
|
||||
events=events,
|
||||
timestamp=timestamp,
|
||||
request_id=request_id,
|
||||
)
|
||||
@@ -128,7 +128,7 @@ def dispatch_triggered_workflows_async(
|
||||
logger.info(
|
||||
"Completed async trigger dispatching: processed %d/%d triggers",
|
||||
dispatched_count,
|
||||
len(triggers),
|
||||
len(events),
|
||||
)
|
||||
|
||||
# Note: Stored request is not deleted here. It should be handled by:
|
||||
@@ -138,7 +138,7 @@ def dispatch_triggered_workflows_async(
|
||||
|
||||
return {
|
||||
"status": "completed",
|
||||
"total_count": len(triggers),
|
||||
"total_count": len(events),
|
||||
"dispatched_count": dispatched_count,
|
||||
"debug_dispatched_count": debug_dispatched,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user