跳到主要内容

定时调度

Graph Core 提供了本地定时执行图的基础类。ScheduleConfig 描述调度策略,ScheduledAgentTask 绑定 CompiledGraph 和调度配置,ScheduledAgentManager 管理已注册任务。

核心类型​

类型说明
ScheduleConfig定义调度模式、输入、运行配置、重试和生命周期监听器。
ScheduledAgentTask负责按调度策略执行 CompiledGraph。创建时会注册到全局 ScheduledAgentManager。
ScheduledAgentManager管理任务注册、注销、查询、活动任务统计和关闭。
DefaultScheduledAgentManager默认本地实现。
ScheduledAgentManagerFactory获取全局 manager 实例。
ScheduleLifecycleListener监听调度开始、停止、执行开始、执行完成和执行失败。

调度模式​

ScheduleConfig.ScheduleMode 当前包含以下模式:

模式配置入口说明
CRONcronExpression(String)使用 cron 表达式触发。
FIXED_DELAYfixedDelay(long)上一次执行完成后延迟指定毫秒再执行。
FIXED_RATEfixedRate(long)按固定频率执行。
ONE_TIMEinitialDelay(long)延迟指定毫秒后执行一次。
TRIGGERtrigger(Trigger)使用 Spring Trigger 自定义触发逻辑。

ScheduleConfig 根据设置的字段推断模式:cron 优先,其次是 fixed delay、fixed rate、initial delay 和 trigger。

创建定时任务​

import io.github.agentic.ai.graph.RunnableConfig;
import io.github.agentic.ai.graph.scheduling.ScheduleConfig;
import io.github.agentic.ai.graph.scheduling.ScheduledAgentTask;

import java.time.Duration;
import java.util.Map;

ScheduleConfig config = ScheduleConfig.builder()
.cronExpression("0 */5 * * * *")
.inputs(Map.of("input", "Run scheduled analysis"))
.runnableConfig(RunnableConfig.builder()
.threadId("scheduled-analysis")
.build())
.maxRetries(2)
.retryDelay(Duration.ofSeconds(10))
.build();

ScheduledAgentTask task = new ScheduledAgentTask(compiledGraph, config).start();

生命周期监听​

ScheduleLifecycleListener.ScheduleEvent 当前包含:

事件说明
STARTED调度任务已启动。
STOPPED调度任务已停止。
EXECUTION_STARTED单次图执行开始。
EXECUTION_COMPLETED单次图执行完成,回调数据为结果状态。
EXECUTION_FAILED单次图执行失败,回调数据为异常。
ScheduleConfig config = ScheduleConfig.builder()
.fixedRate(60_000)
.initialDelay(5_000)
.inputs(Map.of("input", "Collect metrics"))
.addListener((event, data) -> {
System.out.println("Schedule event: " + event);
})
.build();

管理任务​

import io.github.agentic.ai.graph.scheduling.ScheduledAgentManager;
import io.github.agentic.ai.graph.scheduling.ScheduledAgentManagerFactory;

ScheduledAgentManager manager = ScheduledAgentManagerFactory.getInstance().getManager();

String taskId = task.getTaskId();
int activeCount = manager.getActiveTaskCount();

manager.getTask(taskId).ifPresent(ScheduledAgentTask::stop);

ScheduledAgentTask.stop() 会取消底层 ScheduledFuture,并从 active manager 中注销任务。

ARGI(Agent Runtime and Graph Intelligence)是面向 Java 开发者的智能体运行时与工作流框架。