feat:工作流支持事件触发

This commit is contained in:
jxxghp
2025-07-22 20:23:53 +08:00
parent 2f1e55fa1e
commit e39a130306
9 changed files with 311 additions and 18 deletions
+17
View File
@@ -18,6 +18,12 @@ class Workflow(Base):
description = Column(String)
# 定时器
timer = Column(String)
# 触发类型:timer-定时触发 event-事件触发 manual-手动触发
trigger_type = Column(String, default='timer')
# 事件类型(当trigger_type为event时使用)
event_type = Column(String)
# 事件条件(JSON格式,用于过滤事件)
event_conditions = Column(JSON, default=dict)
# 状态:W-等待 R-运行中 P-暂停 S-成功 F-失败
state = Column(String, nullable=False, index=True, default='W')
# 已执行动作(,分隔)
@@ -47,6 +53,17 @@ class Workflow(Base):
def get_enabled_workflows(db):
return db.query(Workflow).filter(Workflow.state != 'P').all()
@staticmethod
@db_query
def get_event_triggered_workflows(db):
"""获取事件触发的工作流"""
return db.query(Workflow).filter(
and_(
Workflow.trigger_type == 'event',
Workflow.state != 'P'
)
).all()
@staticmethod
@db_query
def get_by_name(db, name: str):
+6
View File
@@ -37,6 +37,12 @@ class WorkflowOper(DbOper):
"""
return Workflow.get_enabled_workflows(self._db)
def get_event_triggered_workflows(self) -> List[Workflow]:
"""
获取事件触发的工作流列表
"""
return Workflow.get_event_triggered_workflows(self._db)
def get_by_name(self, name: str) -> Workflow:
"""
按名称获取工作流