> ## Documentation Index
> Fetch the complete documentation index at: https://manuals.autolibrary.kenanzhu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 可视化编排器

> AutoScript 可视化编排器 - 通过图形界面构建条件判断与变量操作，无需手写代码

可视化编排器让你通过图形界面构建 AutoScript 脚本，无需了解 Lua 语法。编排器会根据你的配置自动生成代码。

<img src="https://mintcdn.com/none-50cb40a8/Pn349Kjv2aPizMYp/images/v1.4.0/autoscript-orchestrator.png?fit=max&auto=format&n=Pn349Kjv2aPizMYp&q=85&s=86dd3096b6d4b6113d3a137a27918d17" alt="AutoScript 可视化编排器" width="801" height="789" data-path="images/v1.4.0/autoscript-orchestrator.png" />

## 编排器结构

编排器由多个判断块（Conditional Block）堆叠组成，从上到下依次执行。每个判断块包含条件判断和操作步骤两部分。

### 判断块类型

每个判断块可以设置为以下三种类型之一：

| 类型          | 触发条件       | 说明           |
| ----------- | ---------- | ------------ |
| **IF**      | 第一个判断块     | 始终为 IF，不可更改  |
| **ELSE IF** | 上方条件均不满足   | 添加额外的条件分支    |
| **ELSE**    | 上方所有条件均不满足 | 默认分支，不需要设置条件 |

<Info>
  在一个 IF 后可以添加多个 ELSE IF，但只能有一个 ELSE 块。
  添加 ELSE 块后，不能再添加 ELSE IF 或 ELSE 块。
</Info>

## 添加判断块

点击 \[**+ 添加判断块**] 按钮添加新的判断块。新块的类型默认为 ELSE IF。

## 配置条件

每个判断块可包含一个或多个条件行，多个条件之间用 `and` 或 `or` 连接。

### 条件行配置项

| 配置项   | 说明                                    |
| ----- | ------------------------------------- |
| 逻辑运算符 | 与上一条件行的关系：`and`（且）或 `or`（或）。第一行不显示此选项 |
| 左变量   | 选择要比较的目标变量，或直接使用 `true`/`false` 布尔值   |
| 比较运算符 | `==` `~=` `>` `<` `>=` `<=`           |
| 比较方式  | 与固定值比较 / 与另一个变量比较                     |
| 右值    | 根据变量类型提供对应的输入控件                       |

### 特殊规则

* **布尔变量**：当左侧选择布尔类型变量（如 `USER_ENABLE`）时，比较运算符和右值自动隐藏，
  条件直接判断该布尔值是否为真
* 可以点击 \[**+**] 按钮添加更多条件行，或点击 \[**x**] 按钮删除某个条件行

## 配置操作步骤

每个判断块内可包含一个或多个操作步骤（Action Step），当该块的条件满足时，所有操作步骤按顺序执行。

### 操作类型

| 操作      | 说明        | 示例                                             |
| ------- | --------- | ---------------------------------------------- |
| **set** | 将变量设置为指定值 | `RESERVE_DATE = dateadd(datenow(), 1)`         |
| **add** | 在变量当前值上增加 | `RESERVE_BEGIN_TIME = RESERVE_BEGIN_TIME + 30` |
| **sub** | 在变量当前值上减去 | `RESERVE_END_TIME = RESERVE_END_TIME - 60`     |

### 值来源

| 来源  | 说明         |
| --- | ---------- |
| 固定值 | 手动输入或选择具体值 |
| 变量  | 从其他目标变量读取值 |

### 日期和时间特殊处理

对于日期和时间类型变量，输入控件提供以下便捷选项：

| 变量类型 | 便捷选项                 |
| ---- | -------------------- |
| Date | 今天、明天、后天、指定日期（日历选择器） |
| Time | 当前时间、指定时间（时间选择器）     |

<Note>
  当选择相对日期选项（如"明天"）时，编排器会生成相应的工具函数调用（如 `dateadd(datenow(), 1)`），
  确保脚本在运行时动态计算正确的日期。
</Note>

## 生成代码

配置完成后，点击 \[**确认**] 按钮，编排器将把所有判断块转换为 Lua 代码并插入到代码编辑器中。

例如，以下编排配置：

* IF `USER_ENABLE` → set `RESERVE_DATE` 为明天，set `RESERVE_BEGIN_TIME` 为 09:00
* ELSE → set `USER_ENABLE` 为 false

将生成：

```lua theme={null}
if USER_ENABLE then
    RESERVE_DATE = dateadd(datenow(), 1)
    RESERVE_BEGIN_TIME = time(9, 0)
else
    USER_ENABLE = false
end
```
