Set Variable 任务
Set Variable 是 Taskflow 中的一个重要控制流任务,用于在工作流执行过程中动态设置和管理工作流变量。它提供了一种灵活的方式来处理工作流状态和数据传递。
核心特性
变量管理
- 动态变量设置
- 作用域控制
- 类型安全处理
数据转换
- 值类型转换
- 复杂对象处理
- 表达式计算
状态维护
- 工作流上下文
- 变量生命周期
- 并发访问控制
任务参数
参数 | 描述 | 必需/可选 |
---|---|---|
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}"
}
}
}
}
最佳实践
变量命名
- 使用描述性名称
- 遵循命名规范
- 避免保留字冲突
数据类型
- 保持类型一致性
- 处理类型转换
- 验证数据格式
作用域管理
- 合理使用作用域
- 控制变量可见性
- 及时清理无用变量
性能考虑
内存使用
- 控制变量大小
- 避免冗余数据
- 及时清理临时变量
计算开销
- 优化表达式计算
- 减少复杂运算
- 缓存重复结果
调试技巧
变量检查
{ "variables": { "debug": { "varName": "${workflow.variables.someVar}", "varType": "${typeof workflow.variables.someVar}", "timestamp": "${system.currentTimeMillis}" } } }
状态追踪
{ "variables": { "audit": { "previousValue": "${workflow.variables.someVar}", "newValue": "${workflow.input.newValue}", "changedBy": "${workflow.input.userId}", "timestamp": "${system.currentTimeMillis}" } } }
错误处理
常见错误
类型错误
- 类型不匹配
- 格式无效
- 转换失败
作用域错误
- 变量未定义
- 作用域冲突
- 访问权限问题
值错误
- 空值处理
- 边界情况
- 格式验证
错误响应
{
"status": "FAILED",
"error": "VARIABLE_ERROR",
"message": "Failed to set variable",
"details": {
"variableName": "someVar",
"expectedType": "number",
"actualType": "string",
"value": "invalid_value"
}
}
UI 配置指南
基本设置
- 变量名定义
- 值类型选择
- 作用域配置
高级选项
- 表达式编辑器
- 类型验证器
- 依赖检查器
监控视图
- 变量历史记录
- 值变化追踪
- 使用统计分析