本文将介绍通过任务调度XXL-JOB调度Dify工作流的功能优势,并提供具体的接入步骤。
背景信息
Dify工作流具有广泛的业务应用场景,需要用到定时调度,例如:
- 风险监控:每分钟扫描风险数据,通过大模型分析潜在风险事件,并及时发出报警。 
- 数据分析:每日拉取金融数据,通过大模型进行数据分析,为投资者提供决策建议。 
- 内容生成:每天自动总结工作内容,生成日报。 
Dify原生不支持定时调度功能,可以使用任务调度XXL-JOB作为工作流的调度和状态监控。
核心功能
通过XXL-JOB调度Dify工作流,有以下核心功能和优势:
- Dify任务:支持调度自建的公网Dify工作流,以及阿里云自建的内网Dify工作流。 
- 灵活的定时配置:支持 - cron、- api、- fixed_rate、- fixed_delay、- one_time时间类型,自定义时区和日历。
- 企业级报警监控。 - 灵活的报警策略:任务级别失败报警、超时报警、成功通知。以及实例和应用级别的阈值报警。 
- 多渠道消息通知:短信、电话、Webhook、邮件。 
 
- 企业级可观测。 - 调度大盘:可以查看实例和应用级别调度情况,包括调度、成功、失败曲线。 
- 执行历史:记录Dify工作流每次执行的历史记录,包括状态、基本信息、输入输出、耗时、Tokens消耗等。 
- 调度事件:记录Dify工作流每次调度的事件,包括工作流相关事件、节点相关事件。 
- 节点追踪:记录Dify工作流一次执行,所有节点的执行情况,支持循环、迭代、条件分支的下钻。 
 
前提条件
- 已部署Dify服务。具体操作,请参见部署ACK-Dify服务。 
- 已创建XXL-JOB实例(要求引擎版本大于2.2.0),已创建XXL-JOB应用。 
接入步骤
1. (可选)Dify服务配置内网API服务器域名
- 登录容器服务管理控制台。 
- 在左侧导航栏的集群列表中,单击集群名称进入已部署Dify服务集群。 
- 选择左侧导航栏的,单击创建。 
- 服务类型选择负载均衡(LoadBalancer),访问方式选择私网访问。参考以下示例服务关联填入 - component组件选择- proxy,填入其他配置项后,单击确定。  
- 创建完成后,将生成内网API服务器的地址。  
2. 创建Dify工作流任务
- 登录Dify控制台,单击右上角的工作室,选择从应用模板创建,创建一个工作流。  
- 登录MSE XXL-JOB控制台,并在顶部菜单栏选择地域。 
- 在左侧导航栏,选择。 
- 单击进入目标实例,在左侧导航栏的任务管理,单击创建任务。任务类型选择Dify工作流。更多创建任务信息,请参见任务管理。  - Endpoint:Dify工作流的API服务器,登录Dify控制台,在访问 API页面右上角可获取API 服务器。如果使用阿里云自建Dify服务,推荐参考步骤一,将域名更改为内网地址。  
- API KEY:Dify工作流的API 密钥,不同的工作流有不同的密钥。单击访问 API页面右上角API密钥获取。  
- 输入:工作流的输入,对应 - Body中- inputs的值,格式为JSON。 - inpus值示例如下:- {"input_text": "what is your name"}
 
3. 测试验证
- 单击已创建任务操作列下的运行一次,手动测试。  
- 单击目标任务下的调度记录,查看任务执行记录。  
- 单击执行任务操作列的详情,即可查看Dify工作流的基本信息、输入输出和节点追踪。 - 基本信息。  
- 输入输出。  
- 追踪,如果是迭代器、循环分支,支持节点下钻。   
 
通过OpenAPI操作
MSE XXL-JOB控制台的所有接口均提供OpenAPI。如果您希望通过API动态创建任务、运行工作流,监听状态以及获取执行结果,请参考以下步骤:
- 创建任务:CreateJob - 创建任务。 
- 运行任务:OperateExecuteJob - 运行一次任务。 - 在请求时, - InstanceParameters参数可用于填充新的输入,以替换XXL-JOB控制台任务管理中的输入。
- 执行成功后返回 - JobExecutionId(任务执行ID)。
 
- 根据 - JobExecutionId(任务执行ID)查询状态和结果:GetJobExecution - 获取任务执行的详细信息。- Result返回执行的结果。
- 返回参数 - Status=4,表示请求执行成功。