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:
Harry
2025-09-30 20:10:00 +08:00
parent 1bfa8e6662
commit 32f4d1af8b
10 changed files with 92 additions and 104 deletions

View File

@@ -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

View File

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

View File

@@ -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):

View File

@@ -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",

View File

@@ -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 []
)

View File

@@ -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:

View File

@@ -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,

View File

@@ -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,
)

View File

@@ -65,7 +65,7 @@ class PluginTriggerDispatchData(BaseModel):
provider_id: str
subscription_id: str
timestamp: int
triggers: list[str]
events: list[str]
request_id: str

View File

@@ -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,
}