142 lines
4.2 KiB
Python
142 lines
4.2 KiB
Python
# components/task_components.py
|
||
"""
|
||
任务组件
|
||
"""
|
||
from typing import Dict, Any, Optional
|
||
from core.component import Component, ComponentFactory
|
||
from core.exceptions import ComponentError
|
||
|
||
@ComponentFactory.register("cache_data")
|
||
class CacheDataComponent(Component):
|
||
"""缓存数据组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
key = self.resolve_param("key")
|
||
value = self.resolve_param("value")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["key"])
|
||
|
||
# 缓存数据
|
||
cache_key = f"cache_{key}"
|
||
self.context.set_variable(cache_key, value)
|
||
|
||
result = {"key": key}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result
|
||
|
||
@ComponentFactory.register("clear_cache_data")
|
||
class ClearCacheDataComponent(Component):
|
||
"""清除缓存数据组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
key = self.resolve_param("key")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["key"])
|
||
|
||
# 清除缓存数据
|
||
cache_key = f"cache_{key}"
|
||
if cache_key in self.context.variables:
|
||
del self.context.variables[cache_key]
|
||
|
||
result = {"success": True}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result
|
||
|
||
@ComponentFactory.register("get_cache_data")
|
||
class GetCacheDataComponent(Component):
|
||
"""获取缓存数据组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
key = self.resolve_param("key")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["key"])
|
||
|
||
# 获取缓存数据
|
||
cache_key = f"cache_{key}"
|
||
value = self.context.get_variable(cache_key)
|
||
|
||
result = {"value": value}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result
|
||
|
||
@ComponentFactory.register("set_task_status")
|
||
class SetTaskStatusComponent(Component):
|
||
"""设置任务状态组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
status = self.resolve_param("status")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["status"])
|
||
|
||
# 设置任务状态
|
||
self.context.set_task_status(status)
|
||
|
||
result = {"status": status}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result
|
||
|
||
# components/task_components.py (继续)
|
||
@ComponentFactory.register("jump_to_block")
|
||
class JumpToBlockComponent(Component):
|
||
"""跳到某个块组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
target_block_id = self.resolve_param("target_block_id")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["target_block_id"])
|
||
|
||
# 注意:实际的跳转逻辑需要在工作流执行器中实现
|
||
# 这里只是记录跳转意图
|
||
result = {
|
||
"target_block_id": target_block_id,
|
||
"jump_requested": True
|
||
}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result
|
||
|
||
@ComponentFactory.register("get_task_input_param")
|
||
class GetTaskInputParamComponent(Component):
|
||
"""获取任务的输入参数组件"""
|
||
|
||
def execute(self) -> Dict[str, Any]:
|
||
# 获取参数
|
||
task_instance_id = self.resolve_param("task_instance_id")
|
||
param_name = self.resolve_param("param_name")
|
||
|
||
# 验证必要参数
|
||
self.validate_required_params(["param_name"])
|
||
|
||
# 获取输入参数
|
||
# 如果指定了任务实例ID,则需要从数据库或其他存储中获取
|
||
# 这里简化为直接从当前任务的输入参数中获取
|
||
if task_instance_id and task_instance_id != self.context.task_id:
|
||
# 实际实现中,这里应该查询数据库获取指定任务的输入参数
|
||
param_value = None
|
||
else:
|
||
param_value = self.context.task_inputs.get(param_name)
|
||
|
||
result = {"inputParamValue": param_value}
|
||
|
||
# 存储结果
|
||
self.store_result(result)
|
||
return result |