Skip to content

Dynamic 任务

Dynamic 任务是 Taskflow 中的一个高级控制流任务,允许在工作流执行过程中动态生成任务。它提供了极大的灵活性,使工作流能够根据运行时条件和数据动态调整执行路径。

核心特性

  1. 动态任务生成

    • 运行时任务创建
    • 参数动态配置
    • 类型动态选择
  2. 条件执行

    • 基于数据的决策
    • 动态分支控制
    • 上下文感知
  3. 灵活集成

    • 多任务类型支持
    • 参数传递机制
    • 状态管理

任务参数

参数描述必需/可选
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}"
    }
  }
}

最佳实践

  1. 任务命名

    • 使用清晰的命名规则
    • 避免特殊字符
    • 保持一致性
  2. 参数传递

    • 验证必需参数
    • 设置默认值
    • 处理空值情况
  3. 错误处理

    • 实现重试机制
    • 记录错误信息
    • 提供回退策略

性能考虑

  1. 任务生成开销

    • 控制生成频率
    • 优化参数大小
    • 缓存常用配置
  2. 资源管理

    • 限制并发任务数
    • 监控资源使用
    • 实施限流策略

调试技巧

  1. 任务追踪

    {
      "dynamicTaskInputParameters": {
     "debug": {
       "taskName": "${workflow.input.taskType}",
       "timestamp": "${system.currentTimeMillis}",
       "context": "${workflow.input}"
     }
      }
    }
  2. 错误诊断

    {
      "dynamicTaskConfig": {
     "debug": true,
     "logLevel": "DEBUG",
     "traceId": "${workflow.workflowId}"
      }
    }

监控建议

  1. 性能指标

    • 任务生成时间
    • 执行成功率
    • 资源使用情况
  2. 错误监控

    • 失败原因分析
    • 重试统计
    • 异常模式识别

安全考虑

  1. 访问控制

    • 任务类型限制
    • 参数验证
    • 权限检查
  2. 数据安全

    • 敏感数据处理
    • 参数加密
    • 审计日志

UI 配置指南

  1. 基本设置

    • 选择任务类型
    • 配置输入参数
    • 设置执行条件
  2. 高级选项

    • 重试策略配置
    • 超时设置
    • 错误处理
  3. 监控面板

    • 执行状态查看
    • 性能指标分析
    • 错误日志查询

飞流云