通过XXL-JOB调度Dify工作流

更新时间:

本文将介绍通过任务调度XXL-JOB调度Dify工作流的功能优势,并提供具体的接入步骤。

背景信息

Dify工作流具有广泛的业务应用场景,需要用到定时调度,例如:

  • 风险监控:每分钟扫描风险数据,通过大模型分析潜在风险事件,并及时发出报警。

  • 数据分析:每日拉取金融数据,通过大模型进行数据分析,为投资者提供决策建议。

  • 内容生成:每天自动总结工作内容,生成日报。

重要

Dify原生不支持定时调度功能,可以使用任务调度XXL-JOB作为工作流的调度和状态监控。

核心功能

通过XXL-JOB调度Dify工作流,有以下核心功能和优势:

  • Dify任务:支持调度自建的公网Dify工作流,以及阿里云自建的内网Dify工作流。

  • 灵活的定时配置:支持cronapifixed_ratefixed_delayone_time时间类型,自定义时区和日历。

  • 企业级报警监控。

    • 灵活的报警策略:任务级别失败报警、超时报警、成功通知。以及实例和应用级别的阈值报警。

    • 多渠道消息通知:短信、电话、Webhook、邮件。

  • 企业级可观测。

    • 调度大盘:可以查看实例和应用级别调度情况,包括调度、成功、失败曲线。

    • 执行历史:记录Dify工作流每次执行的历史记录,包括状态、基本信息、输入输出、耗时、Tokens消耗等。

    • 调度事件:记录Dify工作流每次调度的事件,包括工作流相关事件、节点相关事件。

    • 节点追踪:记录Dify工作流一次执行,所有节点的执行情况,支持循环、迭代、条件分支的下钻。

前提条件

接入步骤

1. (可选)Dify服务配置内网API服务器域名

  1. 登录容器服务管理控制台

  2. 在左侧导航栏的集群列表中,单击集群名称进入已部署Dify服务集群。

  3. 选择左侧导航栏的网络 > 服务,单击创建

  4. 服务类型选择负载均衡(LoadBalancer)访问方式选择私网访问。参考以下示例服务关联填入component组件选择proxy,填入其他配置项后,单击确定

    image

    image

  5. 创建完成后,将生成内网API服务器的地址。

    image

2. 创建Dify工作流任务

  1. 登录Dify控制台,单击右上角的工作室,选择从应用模板创建,创建一个工作流。

    image

  2. 登录MSE XXL-JOB控制台,并在顶部菜单栏选择地域。

  3. 在左侧导航栏,选择任务调度 > XXL-JOB

  4. 单击进入目标实例,在左侧导航栏的任务管理,单击创建任务任务类型选择Dify工作流。更多创建任务信息,请参见任务管理

    image

    1. Endpoint:Dify工作流的API服务器,登录Dify控制台,在访问 API页面右上角可获取API 服务器。如果使用阿里云自建Dify服务,推荐参考步骤一,将域名更改为内网地址。

      image

    2. API KEY:Dify工作流的API 密钥,不同的工作流有不同的密钥。单击访问 API页面右上角API密钥获取。

      image

    3. 输入:工作流的输入,对应Bodyinputs的值,格式为JSON。

      image

      inpus值示例如下:

      {"input_text": "what is your name"}

3. 测试验证

  1. 单击已创建任务操作列下的运行一次,手动测试。

    image

  2. 单击目标任务操作 > 更多下的调度记录,查看任务执行记录。

    image

  3. 单击执行任务操作列的详情,即可查看Dify工作流的基本信息输入输出和节点追踪

    • 基本信息。

      image

    • 输入输出。

      image

    • 追踪,如果是迭代器、循环分支,支持节点下钻。

      image

      image

通过OpenAPI操作

MSE XXL-JOB控制台的所有接口均提供OpenAPI。如果您希望通过API动态创建任务、运行工作流,监听状态以及获取执行结果,请参考以下步骤:

  1. 创建任务:CreateJob - 创建任务

  2. 运行任务:OperateExecuteJob - 运行一次任务

    1. 在请求时,InstanceParameters参数可用于填充新的输入,以替换XXL-JOB控制台任务管理中的输入。

    2. 执行成功后返回JobExecutionId(任务执行ID)。

  3. 根据JobExecutionId(任务执行ID)查询状态和结果:GetJobExecution - 获取任务执行的详细信息

    1. Result返回执行的结果。

    2. 返回参数Status=4,表示请求执行成功。