自定义操作 Custom Operations

自定义操作允许您为流程创建新类型的步骤。

扩展入口点

您的操作有两个入口点。 App 入口点是 app 文件,API 入口点是扩展包的 src/ 文件夹中的 api 文件。 了解有关操作的更多信息

应用入口点

App 入口点导出一个配置对象,其中包含用于配置操作外观的选项。 加载您的操作时,此对象由 Directus App 主机导入。

入口点示例:

js
export default {
  id: 'custom',
  name: 'Custom',
  icon: 'box',
  description: 'This is my custom operation!',
  overview: ({ text }) => [
    {
      label: 'Text',
      text,
    },
  ],
  options: [
    {
      field: 'text',
      name: 'Text',
      type: 'string',
      meta: {
        width: 'full',
        interface: 'input',
      },
    },
  ],
}

#### 可用选项

  • id — 此操作的唯一键。 使用作者前缀来限定专有操作的范围是一种很好的做法。
  • name — 此操作的人类可读名称。
  • icon — 来自 material icon set 的图标名称,或 Directus 自定义图标的扩展列表。
  • description — 应用程序中显示的此操作的简短描述(<80 个字符)。
  • overview — 将显示在操作的磁贴上的概述。 可以是接收操作选项并返回包含“标签”和“文本”的对象数组的函数,也可以是专用的 Vue 组件。
  • options — 操作的选项。 可以是选项对象或专用的 Vue 组件。

API入口点

API 入口点导出一个配置对象,其中包含用于配置操作行为的选项。 加载操作时,此对象由 Directus API 主机导入。

入口点示例:

js
export default {
  id: 'custom',
  handler: ({ text }) => {
    console.log(text)
  },
}

可用选项

  • id — 此操作的唯一键。 使用作者前缀来限定专有操作的范围是一种很好的做法。
  • handler — 操作的处理函数。

扩展 ID
两个入口点的扩展 ID 必须相同,以便 Directus 将它们识别为同一扩展的一部分。

处理函数

只要执行操作连接到的流,就会调用 API 端点内定义的处理函数。 要触发连接到“resolve”锚点的操作,处理函数必须返回一个值。 要触发连接到“拒绝”锚点的操作,处理函数必须抛出一个值。 然后,此值将添加到 流对象

处理函数接收两个参数“options”和“context”。 options 是一个对象,它以操作的选项作为属性及其各自的已插值。 context 是具有以下属性的对象:

  • services — 所有 API 内部服务。
  • exceptions — 可用于抛出“适当”错误的 API 异常对象。
  • database — 连接到当前数据库的 Knex 实例。
  • getSchema — 读取服务中使用的完整可用模式的异步函数
  • env — 解析的环境变量。
  • loggerPino 实例。
  • data — 包含先前操作返回的原始数据的对象。
  • accountability — 触发器收到的有关当前用户的信息。