.cml
文件包含一个具有以下键的 json5 对象字面量。
如果需要字符串值,则通常记录有效值列表。 以下字符串值类型可重复使用,并且必须遵循特定规则。
.cml
文件会被编译为 FIDL 传输格式 (.cm
) 文件。
字符串类型
姓名
功能和组件的子项都会命名。名称字符串可以
由以下一个或多个字符组成:A-Z
、a-z
、0-9
、
_
、.
、-
。名称不得超过 255 个字符,且不能以
与 .
或 -
共享。
路径
路径是由 /
字符分隔的一系列名称。一条路径
长度不得超过 4095 个字符。在整个文档中,
- 相对路径不能以
/
字符开头。 - 命名空间和传出目录路径必须以
/
字符开头。
参考文档
引用字符串采用 #<name>
的形式,其中 <name>
是指子项的名称:
顶级键
include
string
数组(可选)
可选的 include
属性描述了零个或多个其他组件清单
要合并到此组件清单中的文件。例如:
include: [ "syslog/client.shard.cml" ]
在上面给出的示例中,组件清单包含来自
清单分片上提供了 syslog
库提供的清单文件,从而确保
组件在运行时正常运行(如果它尝试写入 syslog
)。修改者
按照惯例,此类文件称为“清单分片”并以 .shard.cml
结尾。
前缀为 //
的包含路径是相对于紫红色的源根的
结账。不过,请添加前缀不带 //
的路径,如示例所示
通过导出//sdk/lib
组件清单分片。
作为参考,在 Fuchsia 结账中,这两个包含路径分别是 等效:
syslog/client.shard.cml
//sdk/lib/syslog/client.shard.cml
您可以查看将任何和所有 include 文件合并到组件中的结果 创建清单文件:
fx cmc include cml_file --includeroot $FUCHSIA_DIR --includepath $FUCHSIA_DIR/sdk/lib
“包含”可以应对重复的 use
、offer
、expose
或 capabilities
引用同一 capability 的声明(只要属性相同即可)。例如:
// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
{
protocol: [
"fuchsia.logger.LogSink",
"fuchsia.posix.socket.Provider",
],
},
],
// syslog.client.shard.cml
use: [
{ protocol: "fuchsia.logger.LogSink" },
],
在本例中,合并文件的内容将与 my_component.cml 相同,--
已对 fuchsia.logger.LogSink
进行去重处理。
不过,这样将无法编译:
// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
{
protocol: "fuchsia.logger.LogSink",
// properties for fuchsia.logger.LogSink don't match
from: "#archivist",
},
],
// syslog.client.shard.cml
use: [
{ protocol: "fuchsia.logger.LogSink" },
],
此限制条件的例外情况是 availability
属性。如果两个路由声明
但其中一个产品的供应情况优于另一个,那么其
“已推广”设置为较大的值(如果缺少 availability
,则默认为 required
)。
例如:
// my_component.cml
include: [ "syslog.client.shard.cml" ]
use: [
{
protocol: [
"fuchsia.logger.LogSink",
"fuchsia.posix.socket.Provider",
],
availability: "optional",
},
],
// syslog.client.shard.cml
use: [
{
protocol: "fuchsia.logger.LogSink"
availability: "required", // This is the default
},
],
会变为:
use: [
{
protocol: "fuchsia.posix.socket.Provider",
availability: "optional",
},
{
protocol: "fuchsia.logger.LogSink",
availability: "required",
},
],
include 具有传递性,这意味着分片可以有自己的 include。
include 路径可以包含菱形依赖项。例如,这是有效的: A 包括 B,A 包括 C,B 包括 D,C 包括 D。 在这种情况下,A 将间接包括 B、C 和 D。
包含路径不能包含循环。例如,以下代码无效: A 包含 B,B 包含 A。 诸如上述的循环会导致编译时错误。
disable
object
(可选)
disable
部分用于停用特定 CML 中的某些功能,
否则由 cmc 强制执行。
must_offer_protocol
:(可选的string
数组)列出具有“--must-offer-protocol”选项的协议已停用。must_use_protocol
:(string
的可选数组):列出选项为“--must-use-protocol”的协议已停用。
示例:
disable: {
must_offer_protocol: [ "fuchsia.logger.LogSink", "fuchsia.component.Binder" ],
must_use_protocol: [ "fuchsia.logger.LogSink" ],
}
program
object
(可选)
可执行的组件包含 program
部分。program
部分必须设置 runner
属性以选择要运行的运行程序
组件。program
部分其余部分的格式由
特定跑步者。
精灵跑步者
如果组件使用 ELF 运行程序,program
必须包含以下内容
属性。
runner
:必须设置为"elf"
binary
:可执行二进制文件的相对软件包路径args
(可选):参数列表
示例:
program: {
runner: "elf",
binary: "bin/hippo",
args: [ "Hello", "hippos!" ],
},
如需查看完整的属性列表,请参阅 ELF Runner
其他跑步者
如果组件使用自定义运行程序,则 program
节中的其他值
而 runner
则特定于运行程序。运行程序以
键值对的字典。指用于查询的特定运行程序
确定预期接收哪些键以及如何解读这些键。
children
object
数组(可选)
children
部分声明了子组件实例,如
子组件实例。
name
:(string
) 子组件实例的名称,是一个由 1 组成的字符串 以下一个或多个字符:a-z
、0-9
、_
、.
、-
。名称 在引用中使用时用于标识此组件。url
:(string
) 子组件实例的组件网址。startup
:(string
) 组件实例的启动模式。以下各项之一: <ph type="x-smartling-placeholder">- </ph>
lazy
(默认):仅当有另一个组件实例时,才启动该组件实例 组件实例绑定到该容器。eager
:及其父级组件实例立即启动组件实例 。
on_terminate
:(可选string
)确定此组件终止时要应用的故障恢复政策。none
(默认):不执行任何操作。reboot
:如果组件针对以下时间终止,则正常重新启动系统 任何原因。这是一项特殊功能,仅供一小部分 组件;如需了解详情,请参阅终止政策 信息。
environment
:(可选string
)要分配给子组件实例的环境的名称(如果存在) 共environments
页。如果省略,子级将继承相同的环境 所有资源
示例:
children: [
{
name: "logger",
url: "fuchsia-pkg://fuchsia.com/logger#logger.cm",
},
{
name: "pkg_cache",
url: "fuchsia-pkg://fuchsia.com/pkg_cache#meta/pkg_cache.cm",
startup: "eager",
},
{
name: "child",
url: "#meta/child.cm",
}
],
collections
object
数组(可选)
collections
部分声明了集合,如
组件集合。
name
:(string
) 组件集合的名称,是一个为 1 或 更多字符:a-z
、0-9
、_
、.
、-
。名称 在 reference 中使用时标识此集合。durability
:(string
) 集合中子组件实例的时长。transient
:实例会一直存在,直到其父级停止或停止 明确销毁。single_run
:在创建和销毁实例时启动实例 调用。
environment
:(可选string
)如果存在,则将被 分配给此集合中的实例,则environments
。如果省略,则此集合中的实例 将继承分配给该组件的相同环境allowed_offers
:(可选string
)对定位此集合中组件的动态优惠的限制。 调用fuchsia.component.Realm/CreateChild
时指定动态优惠。static_only
:仅限此.cml
文件中指定的那些项。没有动态优惠。 这是默认值。static_and_dynamic
:静态优惠和运行时指定的优惠 包含CreateChild
。
allow_long_names
:(可选bool
)允许子名称的长度上限为 1024 个字符,而通常上限为 255 个字符。 默认值为 false。persistent_storage
:(可选bool
)如果设置为true
,则是指动态子实例和动态子级实例使用的隔离存储空间中的数据 在实例销毁后,其后代仍将保留。新的子实例 将使用与先前实例相同的存储路径。
示例:
collections: [
{
name: "tests",
durability: "transient",
},
],
environments
object
数组(可选)
environments
部分声明了环境,如
环境。
name
:(string
) 环境的名称,它是一个或多个 以下字符:a-z
、0-9
、_
、.
、-
。该名称用于标识 环境(在引用中使用时)。extends
:(可选string
)环境应如何扩展此领域的环境。realm
:沿用此组件环境中的所有属性。none
:从空环境开始,不继承任何内容。
runners
:(object
的可选数组)在环境中注册的运行程序。对象的数组 具有以下属性:runner
:(string
) 运行程序功能的名称,其来源在from
中指定。from
:(string
) 运行程序功能的来源,为以下项之一:parent
:组件的父级。self
:此组件。#<child-name>
:对子组件的引用 实例。
as
:(可选string
)运行程序的明确名称,将在 环境。如果省略,则默认为runner
。
resolvers
:(object
的可选数组)在环境中注册的解析器。一组 对象具有以下属性:debug
:(object
的可选数组)获取的此环境中任何组件可用的调试协议 直到use from debug
。protocol
:(可选string or array of strings
)要提供的协议的名称。from
:(string
) capability 的来源,可以是以下几项之一:parent
:组件的父级。self
:此组件。#<child-name>
:对子组件的引用 实例。
as
:(可选string
)如果指定,则应为protocol
中的功能设置的名称 可供客户使用如果protocol
是数组,则禁止使用。
__stop_timeout_ms
:(可选number
)向此环境中的组件发出通知后等待的毫秒数 应该先终止,然后才能强制终止它。如果环境 从none
扩展。
示例:
environments: [
{
name: "test-env",
extends: "realm",
runners: [
{
runner: "gtest-runner",
from: "#gtest",
},
],
resolvers: [
{
resolver: "full-resolver",
from: "parent",
scheme: "fuchsia-pkg",
},
],
},
],
capabilities
object
数组(可选)
capabilities
部分定义了此组件提供的功能。
必须声明从 self
中提供或公开的功能
此处。
功能字段
它支持以下功能键。您只能设置以下其中一项:
protocol
:(可选string or array of strings
)service
:(可选string or array of strings
)directory
:(可选string
)storage
:(选填string
)runner
:(选填string
)resolver
:(选填string
)event_stream
:(选填string or array of strings
)dictionary
:(选填string
)config
:(选填string
)
其他字段
它支持以下附加字段:
path
:(可选string
)组件的传出目录中的路径。 来获得该能力对于
protocol
和service
,默认值为/svc/${protocol}
,否则为必需项。对于
protocol
,路径目标必须是渠道,并且该路径通常采用 与此功能的名称匹配的协议。对于
service
和directory
,路径目标必须是目录。对于
runner
,路径目标必须是通道,且必须读出fuchsia.component.runner.ComponentRunner
协议。对于
resolver
,路径目标必须是通道,且必须读出fuchsia.component.resolution.Resolver
协议。rights
:(可选array of string
)(仅限directory
)可以设置的最大目录权限 。from
:(可选string
)(仅限storage
)支持此项的现有目录功能的源组件 存储容量,可选的值有:parent
:组件的父级。self
:此组件。#<child-name>
:对子组件的引用 实例。
extends
:(可选string
)(仅限dictionary
,可选)用于初始化字典的内容。以下各项之一:parent/<relative_path>
:指向parent
提供的字典的路径。#<child-name>/<relative_path>
:#<child-name>
公开的字典的路径。self/<relative_path>
:此组件定义的字典的路径。program/<relative_path>
:此组件的程序提供的字典的路径。是程序的传出目录中的路径,指向某个 fuchsia.component.sandbox/DictionaryGetter 协议结合使用。 <relative_path>
可以是标识字典功能的名称,或者 包含多个部分的路径,标识一个嵌套的字典。
backing_dir
:(可选string
)(仅限storage
)支持存储空间的目录功能的名称。通过 功能必须可通过from
中引用的组件提供。subdir
:(可选string
)(仅限storage
)backing_dir
中的子目录,其中每个组件进行了隔离存储 创建目录时storage_id
:(可选string
)(仅限storage
)用于隔离组件存储空间的标识符,可选的值包括:static_instance_id
:使用组件 ID 索引中的实例 ID 用作组件存储的键。未列出的组件 组件 ID 索引将无法使用此存储空间。static_instance_id_or_moniker
:如果组件列在 组件 ID 索引,则实例 ID 会用作组件的 storage。否则,将使用存储中组件的名称。 功能。
type
:(可选string
)(仅限configuration
)配置的类型,可选的值包括:bool
:布尔值类型。uint8
:无符号 8 位类型。uint16
:无符号 16 位类型。uint32
:无符号 32 位类型。uint64
:无符号 64 位类型。int8
:有符号的 8 位类型。int16
:有符号的 16 位类型。int32
:有符号的 32 位类型。int64
:有符号的 64 位类型。string
:ASCII 字符串类型。vector
:矢量类型。如需了解矢量内的元素类型,请参阅element
。
max_size
:(可选non-zero number
)(仅限configuration
)仅当此配置type
为“string”时受支持。 这是字符串的大小上限。max_count
:(可选non-zero number
)(仅限configuration
)仅当此配置type
为“vector”时,才支持此属性。 这是矢量中的元素数上限。element
:(可选object
)(仅限configuration
)仅当此配置type
为“vector”时,才支持此属性。 这是配置矢量中元素的类型。示例(简单类型):
{ type: "uint8" }
示例(字符串类型):
{ type: "string", max_size: 100, }
value
:(可选any
)(仅限configuration
)配置的值。delivery
:(可选string
)(仅限protocol
)指定框架在何时打开协议 从该组件的传出目录中 功能。允许的值有:eager
:(默认)框架将在设置完毕后立即打开相应 capability 一些使用方组件会请求它on_readable
:当服务器触发时,框架将打开该 capability 端点流水线。
use
object
数组(可选)
对于可执行组件,声明此
运行时为其命名空间提供必需的参数。
除非另有指定,否则 capability 从 parent
进行路由。
并且每个功能都必须有一条通过所有组件之间的有效路由,
以及功能的来源
功能字段
它支持以下功能键。您只能设置以下其中一项:
service
:(选填string or array of strings
)directory
:(选填string
)protocol
:(选填string or array of strings
)dictionary
:(可选string
)storage
:(选填string
)event_stream
:(选填string or array of strings
)runner
:(选填string
)config
:(可选string
)
其他字段
它支持以下附加字段:
from
:(可选string
) capability 的来源。默认值为parent
。以下各项之一:parent
:组件的父级。debug
:debug_capabilities
分配给该组件的环境。framework
:组件框架运行时。self
:此组件。#<capability-name>
:另一个功能的名称,其中 请求的功能。#<child-name>
:对子组件的引用 实例。
[fidl-environment-decl]:/reference/fidl/fuchsia.component.decl#Environment
path
:(可选string
)在组件命名空间中安装功能的路径。对于协议 默认为/svc/${protocol}
。对于directory
和storage
是必需的。此属性为 不允许用于功能名称数组声明和运行程序功能。rights
:(可选array of string
)(仅限directory
)要应用的最大目录权限 组件命名空间中的目录subdir
:(可选string
)(directory
仅限)目录内的子目录, 该组件的命名空间。scope
:(可选string or array of strings
)(仅限event_stream
)定义后,事件流将仅包含以下事件: 所有组件filter
:(可选object
)(仅限event_stream
)功能请求的事件流需要指定过滤器 表示事件流中的事件所适用的协议。该 过滤条件将为从“name”映射的对象映射附加到“协议名称”中dependency
:(可选string
)来源和之间的依赖项类型 以下组件之一:strong
:强依赖项,用于确定关停 排序。组件管理器必须在 来源。这是默认值。weak
:安全系数低的依赖项,在关停期间会被忽略。组件管理器 停止父级领域,那么来源可能会在客户端之前停止。安全系数低的客户 依赖项必须能够处理这些依赖项变得不可用的情况。 运行程序功能不允许使用此属性,因为这些功能始终是strong
依赖项。
availability
:(可选string
)有关此功能可用性的预期。一个 /required
(默认):必需的依赖项,此组件无法执行其 在没有此功能的情况下运行。optional
:可选的依赖项,则组件在没有此依赖项的情况下也能正常运行 功能(但如果功能不可用,则一些功能可能 停用)。transitional
:来源可以完全省略路由,甚至不必进行路由void
起。用于引入新功能的软过渡。 对于运行程序功能(始终为required
),不允许使用此属性。
有关详情,请参阅 availability [库存状况] 文档。
key
:(可选string
)(仅限config
)组件的config
块中的配置键,此功能可用于 。type
:(可选string
)(仅限config
)配置的类型,可选的值包括:bool
:布尔值类型。uint8
:无符号 8 位类型。uint16
:无符号 16 位类型。uint32
:无符号 32 位类型。uint64
:无符号 64 位类型。int8
:有符号的 8 位类型。int16
:有符号的 16 位类型。int32
:有符号的 32 位类型。int64
:有符号的 64 位类型。string
:ASCII 字符串类型。vector
:矢量类型。如需了解矢量中的元素类型,请参阅element
max_size
:(可选non-zero number
)(仅限configuration
)仅当此配置type
为“string”时受支持。 这是字符串的大小上限。max_count
:(可选non-zero number
)(仅限configuration
)仅当此配置type
为“vector”时,才支持此属性。 这是矢量中的元素数上限。element
:(可选object
)(仅限configuration
)仅当此配置type
为“vector”时,才支持此属性。 这是配置矢量中元素的类型。示例(简单类型):
{ type: "uint8" }
示例(字符串类型):
{ type: "string", max_size: 100, }
default
:(可选any
)(仅限configuration
)此配置的默认值。 如果 capability 是可选的,并且从void
路由,系统会使用默认值。 仅当availability
不为required
时,此属性才受支持。
示例:
use: [
{
protocol: [
"fuchsia.ui.scenic.Scenic",
"fuchsia.accessibility.Manager",
]
},
{
directory: "themes",
path: "/data/themes",
rights: [ "r*" ],
},
{
storage: "persistent",
path: "/data",
},
{
event_stream: [
"started",
"stopped",
],
from: "framework",
},
{
runner: "own_test_runner".
from: "#test_runner",
},
],
expose
object
数组(可选)
声明可供父组件或
框架。对 self
或子组件的 expose
有效。
功能字段
它支持以下功能键。您只能设置以下其中一项:
service
:(选填string or array of strings
)protocol
:(选填string or array of strings
)directory
:(可选string
)runner
:(可选string
)resolver
:(可选string
)dictionary
:(选填string
)config
:(选填string
)
其他字段
它支持以下附加字段:
from
:(string or array of strings
)from
: capability 的来源,可为以下项:self
:此组件。需要相应的capability
声明。framework
:组件框架运行时。#<child-name>
:对子组件的引用 实例。
as
:(可选string
)目标将已知的功能名称。如果省略, 默认为原始名称。当一个数组包含多项功能时,不能使用as
名称。to
:(可选string
)功能目标。可以是parent
或framework
。默认设置为parent
。rights
:(可选array of string
)(仅限directory
)要应用的最大目录权限 公开目录功能subdir
:(可选string
)(仅限directory
)源目录中子目录的相对路径 路由功能event_stream
:(可选string or array of strings
)(仅限event_stream
)公开的事件流的名称。scope
:(可选string or array of strings
)(仅限event_stream
)所公开的事件流的范围。这用于 缩小事件流所涉及组件的范围,使其仅涉及 作用域中定义的组件。availability
:(可选string
)availability
(可选):有关此功能可用性的预期。影响 构建时和运行时路由验证。以下各项之一:required
(默认):必需的依赖项,来源必须存在并提供它。使用 当此公开的目标需要此功能正常运行时,将使用此方法。optional
:可选依赖项。在公开目标可以运行时使用此属性 。目标不得required
依赖 功能。此公开内容的最终来源必须是void
或实际组件。same_as_target
:此功能的可用性预期将与 目标。如果目标需要该功能,则将此字段设置为required
。 如果目标对 capability 有可选依赖项,则该字段将设置为optional
。transitional
:与optional
类似,但可以容忍缺少来源。使用此 只是为了避免在多步代码更改的过渡期间出现验证错误。
有关详情,请参阅 availability [库存状况] 文档。
source_availability
:(可选string
)此优惠的来源是否必须存在。以下各项之一:required
(默认):必须在此清单中定义来源 (from
)。unknown
:如果此商品的来源 (from
),则其来源将被重写为void
。
示例:
expose: [
{
directory: "themes",
from: "self",
},
{
protocol: "pkg.Cache",
from: "#pkg_cache",
as: "fuchsia.pkg.PackageCache",
},
{
protocol: [
"fuchsia.ui.app.ViewProvider",
"fuchsia.fonts.Provider",
],
from: "self",
},
{
runner: "web-chromium",
from: "#web_runner",
as: "web",
},
{
resolver: "full-resolver",
from: "#full-resolver",
},
],
offer
object
数组(可选)
功能字段
它支持以下功能键。您只能设置以下其中一项:
protocol
:(可选string or array of strings
)service
:(可选string or array of strings
)directory
:(可选string
)storage
:(选填string
)runner
:(选填string
)resolver
:(选填string
)event_stream
:(选填string or array of strings
)dictionary
:(选填string
)config
:(选填string
)
其他字段
它支持以下附加字段:
service
:(可选string or array of strings
)路由服务时,指服务功能的名称。protocol
:(可选string or array of strings
)路由协议时,协议功能的名称。directory
:(可选string or array of strings
)路由目录时,某个目录功能的名称。runner
:(可选string or array of strings
)路由运行程序时,运行程序功能的名称。resolver
:(可选string or array of strings
)路由解析器时,解析器功能的名称。storage
:(可选string or array of strings
)路由存储功能时,它是存储功能的名称。dictionary
:(可选string or array of strings
)路由字典时,字典功能的名称。config
:(可选string or array of strings
)在路由配置时,配置功能的名称。from
:(string or array of strings
)from
: capability 的来源,可为以下项:parent
:组件的父级。此来源可用于 功能类型。self
:此组件。需要相应的capability
声明。framework
:组件框架运行时。#<child-name>
:对子组件的引用 实例。此来源只能在提供协议、 目录或运行程序功能void
:有意省略了来源。仅当availability
为以下值时有效:optional
或transitional
。
to
:(string or array of strings
) 功能目标。以下各项之一: <ph type="x-smartling-placeholder">as
:(可选string
)功能的显式名称,目标将是该功能的名称。如果省略, 默认为原始名称。当包含多个名称的数组时,不能使用as
。dependency
:(可选string
)来源和之间的依赖项类型 目标,可以是:strong
:强依赖项,用于确定关停 排序。组件管理器必须在 来源。这是默认值。weak
:弱依赖项,在运行期间会被忽略 关闭。当组件管理器停止父域时,来源可能 在客户端之前停止。依赖项较弱的客户端必须能够 处理这些依赖项变得不可用的情况。
rights
:(可选array of string
)(仅限directory
)要应用的最大目录权限 提供的目录功能。subdir
:(可选string
)(仅限directory
)源目录中子目录的相对路径 路由功能event_stream
:(可选string or array of strings
)(仅限event_stream
)提供的事件流的名称。scope
:(可选string or array of strings
)(仅限event_stream
)定义后,事件流将仅包含以下事件: 所有组件availability
:(可选string
)availability
(可选):有关此功能可用性的预期。影响 构建时和运行时路由验证。以下各项之一:required
(默认):必需的依赖项,来源必须存在并提供它。使用 当此优惠的目标用户需要此功能时,此功能才会正常运行。optional
:可选依赖项。在优惠目标可以发挥作用时使用此项 。目标不得required
依赖 功能。此优惠的最终来源必须是void
或实际组件。same_as_target
:此功能的可用性预期将与 目标。如果目标需要该功能,则将此字段设置为required
。 如果目标对 capability 有可选依赖项,则该字段将设置为optional
。transitional
:与optional
类似,但可以容忍缺少来源。使用此 只是为了避免在多步代码更改的过渡期间出现验证错误。
有关详情,请参阅 availability [库存状况] 文档。
source_availability
:(可选string
)此优惠的来源是否必须存在。以下各项之一:required
(默认):必须在此清单中定义来源 (from
)。unknown
:如果此商品的来源 (from
),则其来源将被重写为void
。
示例:
offer: [
{
protocol: "fuchsia.logger.LogSink",
from: "#logger",
to: [ "#fshost", "#pkg_cache" ],
dependency: "weak",
},
{
protocol: [
"fuchsia.ui.app.ViewProvider",
"fuchsia.fonts.Provider",
],
from: "#session",
to: [ "#ui_shell" ],
dependency: "strong",
},
{
directory: "blobfs",
from: "self",
to: [ "#pkg_cache" ],
},
{
directory: "fshost-config",
from: "parent",
to: [ "#fshost" ],
as: "config",
},
{
storage: "cache",
from: "parent",
to: [ "#logger" ],
},
{
runner: "web",
from: "parent",
to: [ "#user-shell" ],
},
{
resolver: "full-resolver",
from: "parent",
to: [ "#user-shell" ],
},
{
event_stream: "stopped",
from: "framework",
to: [ "#logger" ],
},
],
facets
object
(可选)
包含组件可能会出于自身目的进行解读的元数据。组件 框架对该部分不强制执行任何架构,但第三方可能希望其详情 特定架构的
config
object
(可选)
由组件定义的配置架构。每个键代表一个字段 架构中。
配置字段是 JSON 对象,必须定义一个 type
,该字段可以是
以下字符串:
bool
、uint8
、int8
、uint16
、int16
、uint32
、int32
、uint64
、int64
string
、vector
示例:
config: {
debug_mode: {
type: "bool"
},
}
默认情况下,字段从组件包解析。为了能够更改
运行时需要提供 mutability
说明符。
示例:
config: {
verbose: {
type: "bool",
mutability: [ "parent" ],
},
},
目前 "parent"
是唯一受支持的可变性说明符。
字符串必须将 max_size
属性定义为非零整数。
示例:
config: {
verbosity: {
type: "string",
max_size: 20,
}
}
向量必须将 max_count
属性设置为非零整数。矢量还必须设置
element
属性转换为 JSON 对象,用于描述
矢量。向量可以包含布尔值、整数和字符串,但不能包含其他
进行训练。
示例:
config: {
tags: {
type: "vector",
max_count: 20,
element: {
type: "string",
max_size: 50,
}
}
}