Skip to content

Set Variable 任务

Set Variable 是 Taskflow 中的一个重要控制流任务,用于在工作流执行过程中动态设置和管理工作流变量。它提供了一种灵活的方式来处理工作流状态和数据传递。

核心特性

  1. 变量管理

    • 动态变量设置
    • 作用域控制
    • 类型安全处理
  2. 数据转换

    • 值类型转换
    • 复杂对象处理
    • 表达式计算
  3. 状态维护

    • 工作流上下文
    • 变量生命周期
    • 并发访问控制

任务参数

参数描述必需/可选
variables要设置的变量映射。键为变量名,值为变量值。必需
scope变量作用域。支持的值:WORKFLOW(工作流级别)、TASK(任务级别)。可选,默认为 WORKFLOW
propagateToSubWorkflow是否将变量传播到子工作流。仅当 scope 为 WORKFLOW 时有效。可选,默认为 false

配置示例

1. 基础变量设置

{
  "name": "set_workflow_vars",
  "taskReferenceName": "set_vars_ref",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "userId": "${workflow.input.userId}",
      "timestamp": "${system.currentTimeMillis}",
      "status": "ACTIVE"
    }
  }
}

2. 复杂对象设置

{
  "name": "set_complex_vars",
  "taskReferenceName": "set_complex_ref",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "user": {
        "id": "${workflow.input.userId}",
        "profile": {
          "name": "${workflow.input.userName}",
          "email": "${workflow.input.userEmail}",
          "role": "${workflow.input.userRole}"
        }
      },
      "metadata": {
        "createdAt": "${system.currentTimeMillis}",
        "source": "user_service",
        "version": "1.0"
      }
    }
  }
}

3. 条件变量设置

{
  "name": "set_conditional_vars",
  "taskReferenceName": "set_conditional_ref",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "status": "${workflow.input.amount > 1000 ? 'HIGH_VALUE' : 'NORMAL'}",
      "priority": "${workflow.input.isUrgent ? 'HIGH' : 'NORMAL'}",
      "processingType": "${workflow.input.type == 'VIP' ? 'PREMIUM' : 'STANDARD'}"
    }
  }
}

使用场景

1. 状态追踪

{
  "name": "track_status",
  "taskReferenceName": "status_tracker",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "currentState": "${workflow.input.state}",
      "lastUpdated": "${system.currentTimeMillis}",
      "history": "${workflow.variables.history || []} + [${workflow.input.state}]"
    }
  }
}

2. 配置管理

{
  "name": "set_config",
  "taskReferenceName": "config_setter",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "config": {
        "retryCount": 3,
        "timeout": 30000,
        "features": {
          "logging": true,
          "monitoring": true,
          "alerting": false
        }
      }
    }
  }
}

3. 数据聚合

{
  "name": "aggregate_data",
  "taskReferenceName": "data_aggregator",
  "type": "SET_VARIABLE",
  "inputParameters": {
    "variables": {
      "totalAmount": "${workflow.variables.amount1 + workflow.variables.amount2}",
      "averageScore": "${(workflow.variables.score1 + workflow.variables.score2) / 2}",
      "summary": {
        "count": "${workflow.variables.count + 1}",
        "total": "${workflow.variables.total + workflow.input.value}"
      }
    }
  }
}

最佳实践

  1. 变量命名

    • 使用描述性名称
    • 遵循命名规范
    • 避免保留字冲突
  2. 数据类型

    • 保持类型一致性
    • 处理类型转换
    • 验证数据格式
  3. 作用域管理

    • 合理使用作用域
    • 控制变量可见性
    • 及时清理无用变量

性能考虑

  1. 内存使用

    • 控制变量大小
    • 避免冗余数据
    • 及时清理临时变量
  2. 计算开销

    • 优化表达式计算
    • 减少复杂运算
    • 缓存重复结果

调试技巧

  1. 变量检查

    {
      "variables": {
     "debug": {
       "varName": "${workflow.variables.someVar}",
       "varType": "${typeof workflow.variables.someVar}",
       "timestamp": "${system.currentTimeMillis}"
     }
      }
    }
  2. 状态追踪

    {
      "variables": {
     "audit": {
       "previousValue": "${workflow.variables.someVar}",
       "newValue": "${workflow.input.newValue}",
       "changedBy": "${workflow.input.userId}",
       "timestamp": "${system.currentTimeMillis}"
     }
      }
    }

错误处理

常见错误

  1. 类型错误

    • 类型不匹配
    • 格式无效
    • 转换失败
  2. 作用域错误

    • 变量未定义
    • 作用域冲突
    • 访问权限问题
  3. 值错误

    • 空值处理
    • 边界情况
    • 格式验证

错误响应

{
  "status": "FAILED",
  "error": "VARIABLE_ERROR",
  "message": "Failed to set variable",
  "details": {
    "variableName": "someVar",
    "expectedType": "number",
    "actualType": "string",
    "value": "invalid_value"
  }
}

UI 配置指南

  1. 基本设置

    • 变量名定义
    • 值类型选择
    • 作用域配置
  2. 高级选项

    • 表达式编辑器
    • 类型验证器
    • 依赖检查器
  3. 监控视图

    • 变量历史记录
    • 值变化追踪
    • 使用统计分析

飞流云