使用处理器

Yao 提供一组数据原子操作、网络请求、流程控制等一系列的处理器。这些处理器可以在命令行、Widget、Script、云函数和 Studio 脚本中使用。

处理器支持自定义,可以通过编写 Flow、Script、 GRPC 插件或自定义 Widget 方式扩展。

约定

  1. 示例中约定应用根目录为 /data/app, 实际编写时需替换为应用根目录。
  2. 示例中约定服务器地址为 http://127.0.0.1:5099, 实际编写时需自行替换。
  3. 示例中约定 Studio 服务器地址为 http://127.0.0.1:5077, 实际编写时需自行替换。
  4. 使用 <> 标识自行替换的内容。 例如: icon-<图标名称>, 实际编写时应替换为: icon-foo, icon-bar ...

处理器

处理器由名称、参数表和返回值构成。可以理解为是一个功能函数 ProcessName( ...args:Any[] ) Any,

名称: <命名空间>.<名称>

参数表: [...Args]

返回值: Any

处理器清单:

处理器说明
models.*数据模型原子操作 查看文档
schemas.*数据表结构操作 查看文档
stores.*数据存储 查看文档
fs.*文件系统 查看文档
http.*HTTP 请求 查看文档
session.*会话数据 查看文档
encoding.*编码解码 查看文档
crypto.*加密解密 查看文档
ssl.*签名校验 查看文档
utils.*一组实用程序 查看文档
flows.*使用 Flow 编写的处理器 查看文档
scripts.*使用 Script 脚本编写的处理器 查看文档
plugins.*使用 GRPC 插件编写处理器 查看文档
widgets.*自定义 Widget 导出的的处理器 查看文档

内建 Widgets 的处理器:

Widget处理器说明
Appyao.app.*App Widget 处理器 查看文档
Loginyao.login.*Login Widget 处理器 查看文档
Tableyao.table.*Table Widget 处理器 查看文档
Formyao.form.*Form Widget 处理器 查看文档
Chartyao.chart.*Chart Widget 处理器 查看文档
Importimports.*Import Widget 数据导入处理器 查看文档
Tasktasks.*Task Widget 并发任务处理器 查看文档
Scheduleschedules.*Schedule Widget 异步任务处理器 查看文档

查看处理器手册

使用方式

在命令行中使用

可以使用 run 命令,运行处理器 yao run <process> [args...]

yao run models.product.Paginate '::{}' 1 2

在 DSL 中使用

可在 YAO DSL (API, Flow, Table, Chart 等) 中使用处理器, 可参考对应 Widget 手册。

查看 Widget 手册

在 API DSL 中使用

{
// ...
"paths": [
{
"path": "/search",
"method": "GET",
"process": "models.product.Paginate",
"in": [":query-param", "$query.page", "$quey.pagesize"], // 参数表
"out": { "status": 200, "type": "application/json" }
}
]
// ...
}

在 Flow DSL 中使用

{
// ...
"nodes": [
{
"name": "宠物",
"process": "models.product.Find",
"args": [1, { "select": ["id", "name"] }]
},
{
"name": "打印",
"process": "utils.fmt.Print",
"args": ["{{$res.宠物}}"]
}
]
// ...
}

在 Table DSL 中使用

{
// ...
"action": {
"bind": { "table": "product" },
"search": {
"guard": "-",
"process": "scripts.product.Search",
"default": [null, 1, 2]
},
"save": {
"guard": "bearer-jwt,scripts.product.Guard"
},
"after:search": "scripts.hook.BeforeSearch",
"after:search": "scripts.hook.AfterSearch"
}
// ...
}

在脚本中使用

可以在 Script, 云函数, Stuido 脚本中,使用 Process(name, ...args) 函数,调用处理器

在 Script 中使用

/data/app/scripts/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao run scripts.demo.GetProduct 1

在云函数中使用

/data/app/services/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao run utils.jwt.Make 1 '::{"id":1, "name":"Admin"}' '::{"issuer":"yao"}'
curl -X POST http://127.0.0.1:5099/api/__yao/app/service/demo \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <JWT>' \
-d '{ "method":"GetProduct", "args":[1]}'

在 Studio 中使用

/data/app/studio/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao studio run demo.GetProduct 1
# Studio JWT 可以通过管理后台, 管理员登录接口获取
curl -X POST http://127.0.0.1:5077/service/demo \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Studio JWT>' \
-d '{ "method":"GetProduct", "args":[1]}'

附: 如何获取 Studio Token

管理员登录

获取 Studio Token

使用处理器

Yao 提供一组数据原子操作、网络请求、流程控制等一系列的处理器。这些处理器可以在命令行、Widget、Script、云函数和 Studio 脚本中使用。

处理器支持自定义,可以通过编写 Flow、Script、 GRPC 插件或自定义 Widget 方式扩展。

约定

  1. 示例中约定应用根目录为 /data/app, 实际编写时需替换为应用根目录。
  2. 示例中约定服务器地址为 http://127.0.0.1:5099, 实际编写时需自行替换。
  3. 示例中约定 Studio 服务器地址为 http://127.0.0.1:5077, 实际编写时需自行替换。
  4. 使用 <> 标识自行替换的内容。 例如: icon-<图标名称>, 实际编写时应替换为: icon-foo, icon-bar ...

处理器

处理器由名称、参数表和返回值构成。可以理解为是一个功能函数 ProcessName( ...args:Any[] ) Any,

名称: <命名空间>.<名称>

参数表: [...Args]

返回值: Any

处理器清单:

处理器说明
models.*数据模型原子操作 查看文档
schemas.*数据表结构操作 查看文档
stores.*数据存储 查看文档
fs.*文件系统 查看文档
http.*HTTP 请求 查看文档
session.*会话数据 查看文档
encoding.*编码解码 查看文档
crypto.*加密解密 查看文档
ssl.*签名校验 查看文档
utils.*一组实用程序 查看文档
flows.*使用 Flow 编写的处理器 查看文档
scripts.*使用 Script 脚本编写的处理器 查看文档
plugins.*使用 GRPC 插件编写处理器 查看文档
widgets.*自定义 Widget 导出的的处理器 查看文档

内建 Widgets 的处理器:

Widget处理器说明
Appyao.app.*App Widget 处理器 查看文档
Loginyao.login.*Login Widget 处理器 查看文档
Tableyao.table.*Table Widget 处理器 查看文档
Formyao.form.*Form Widget 处理器 查看文档
Chartyao.chart.*Chart Widget 处理器 查看文档
Importimports.*Import Widget 数据导入处理器 查看文档
Tasktasks.*Task Widget 并发任务处理器 查看文档
Scheduleschedules.*Schedule Widget 异步任务处理器 查看文档

查看处理器手册

使用方式

在命令行中使用

可以使用 run 命令,运行处理器 yao run <process> [args...]

yao run models.product.Paginate '::{}' 1 2

在 DSL 中使用

可在 YAO DSL (API, Flow, Table, Chart 等) 中使用处理器, 可参考对应 Widget 手册。

查看 Widget 手册

在 API DSL 中使用

{
// ...
"paths": [
{
"path": "/search",
"method": "GET",
"process": "models.product.Paginate",
"in": [":query-param", "$query.page", "$quey.pagesize"], // 参数表
"out": { "status": 200, "type": "application/json" }
}
]
// ...
}

在 Flow DSL 中使用

{
// ...
"nodes": [
{
"name": "宠物",
"process": "models.product.Find",
"args": [1, { "select": ["id", "name"] }]
},
{
"name": "打印",
"process": "utils.fmt.Print",
"args": ["{{$res.宠物}}"]
}
]
// ...
}

在 Table DSL 中使用

{
// ...
"action": {
"bind": { "table": "product" },
"search": {
"guard": "-",
"process": "scripts.product.Search",
"default": [null, 1, 2]
},
"save": {
"guard": "bearer-jwt,scripts.product.Guard"
},
"after:search": "scripts.hook.BeforeSearch",
"after:search": "scripts.hook.AfterSearch"
}
// ...
}

在脚本中使用

可以在 Script, 云函数, Stuido 脚本中,使用 Process(name, ...args) 函数,调用处理器

在 Script 中使用

/data/app/scripts/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao run scripts.demo.GetProduct 1

在云函数中使用

/data/app/services/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao run utils.jwt.Make 1 '::{"id":1, "name":"Admin"}' '::{"issuer":"yao"}'
curl -X POST http://127.0.0.1:5099/api/__yao/app/service/demo \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <JWT>' \
-d '{ "method":"GetProduct", "args":[1]}'

在 Studio 中使用

/data/app/studio/demo.js

function GetProduct(id) {
return Process("models.product.Find", id, { select: ["id", "name"] });
}

运行调试

yao studio run demo.GetProduct 1
# Studio JWT 可以通过管理后台, 管理员登录接口获取
curl -X POST http://127.0.0.1:5077/service/demo \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Studio JWT>' \
-d '{ "method":"GetProduct", "args":[1]}'

附: 如何获取 Studio Token

管理员登录

获取 Studio Token