Dynamic 任务
Dynamic 任务是 Taskflow 中的一个高级控制流任务,允许在工作流执行过程中动态生成任务。它提供了极大的灵活性,使工作流能够根据运行时条件和数据动态调整执行路径。
核心特性
动态任务生成
- 运行时任务创建
- 参数动态配置
- 类型动态选择
条件执行
- 基于数据的决策
- 动态分支控制
- 上下文感知
灵活集成
- 多任务类型支持
- 参数传递机制
- 状态管理
任务参数
参数 | 描述 | 必需/可选 |
---|---|---|
dynamicTaskName | 要生成的任务名称。可以是任何有效的任务类型。 | 必需 |
dynamicTaskInputParameters | 传递给动态生成任务的输入参数。 | 必需 |
dynamicTaskConfig | 动态任务的配置参数。包括重试策略、超时设置等。 | 可选 |
配置示例
1. 基础动态任务
{
"name": "dynamic_task",
"taskReferenceName": "dynamic_ref",
"type": "DYNAMIC",
"inputParameters": {
"dynamicTaskName": "${workflow.input.taskType}",
"dynamicTaskInputParameters": {
"param1": "${workflow.input.param1}",
"param2": "${workflow.input.param2}"
}
}
}
2. 条件动态任务
{
"name": "conditional_dynamic",
"taskReferenceName": "conditional_dynamic_ref",
"type": "DYNAMIC",
"inputParameters": {
"dynamicTaskName": "${workflow.input.amount > 1000 ? 'PREMIUM_PROCESS' : 'STANDARD_PROCESS'}",
"dynamicTaskInputParameters": {
"amount": "${workflow.input.amount}",
"customerId": "${workflow.input.customerId}",
"priority": "${workflow.input.amount > 1000 ? 'HIGH' : 'NORMAL'}"
},
"dynamicTaskConfig": {
"retryCount": 3,
"retryLogic": "FIXED",
"retryDelaySeconds": 60
}
}
}
3. 复杂动态任务
{
"name": "complex_dynamic",
"taskReferenceName": "complex_dynamic_ref",
"type": "DYNAMIC",
"inputParameters": {
"dynamicTaskName": "${workflow.input.processType}_${workflow.input.region}",
"dynamicTaskInputParameters": {
"processData": {
"type": "${workflow.input.processType}",
"region": "${workflow.input.region}",
"parameters": "${workflow.input.parameters}",
"context": {
"userId": "${workflow.input.userId}",
"timestamp": "${system.currentTimeMillis}"
}
},
"configuration": "${workflow.input.config}"
}
}
}
使用场景
1. 服务路由
{
"name": "service_router",
"taskReferenceName": "service_router_ref",
"type": "DYNAMIC",
"inputParameters": {
"dynamicTaskName": "${workflow.input.serviceType}_TASK",
"dynamicTaskInputParameters": {
"serviceId": "${workflow.input.serviceId}",
"operation": "${workflow.input.operation}",
"payload": "${workflow.input.payload}"
}
}
}
2. 处理策略选择
{
"name": "process_selector",
"taskReferenceName": "process_selector_ref",
"type": "DYNAMIC",
"inputParameters": {
"dynamicTaskName": "${workflow.input.dataSize > 1000000 ? 'BATCH_PROCESS' : 'DIRECT_PROCESS'}",
"dynamicTaskInputParameters": {
"data": "${workflow.input.data}",
"batchSize": "${workflow.input.dataSize > 1000000 ? 1000 : 100}"
}
}
}
最佳实践
任务命名
- 使用清晰的命名规则
- 避免特殊字符
- 保持一致性
参数传递
- 验证必需参数
- 设置默认值
- 处理空值情况
错误处理
- 实现重试机制
- 记录错误信息
- 提供回退策略
性能考虑
任务生成开销
- 控制生成频率
- 优化参数大小
- 缓存常用配置
资源管理
- 限制并发任务数
- 监控资源使用
- 实施限流策略
调试技巧
任务追踪
{ "dynamicTaskInputParameters": { "debug": { "taskName": "${workflow.input.taskType}", "timestamp": "${system.currentTimeMillis}", "context": "${workflow.input}" } } }
错误诊断
{ "dynamicTaskConfig": { "debug": true, "logLevel": "DEBUG", "traceId": "${workflow.workflowId}" } }
监控建议
性能指标
- 任务生成时间
- 执行成功率
- 资源使用情况
错误监控
- 失败原因分析
- 重试统计
- 异常模式识别
安全考虑
访问控制
- 任务类型限制
- 参数验证
- 权限检查
数据安全
- 敏感数据处理
- 参数加密
- 审计日志
UI 配置指南
基本设置
- 选择任务类型
- 配置输入参数
- 设置执行条件
高级选项
- 重试策略配置
- 超时设置
- 错误处理
监控面板
- 执行状态查看
- 性能指标分析
- 错误日志查询