本文详细介绍了 Reflex 项的定义结构。
注释
反射也称为激活器。
概述
Reflex(激活器)项定义一组流式处理数据规则。 它监视事件流,并在满足特定条件时生成通知或作。 定义结构描述构成处理流事件的管道的数据源、对象模型、属性和规则。
支持的格式
反射项支持格式 json 。
定义部件
Reflex 项的定义包含以下部分:
| 定义部件路径 | 类型 | 必选 | Description |
|---|---|---|---|
ReflexEntities.json |
反射实体 (JSON) | 是 | 包含完整的激活器配置,包括容器、数据源、对象、属性和规则 |
.platform |
平台元数据 | 假 | 包含 Fabric 平台元数据信息 |
反射实体结构
部件 ReflexEntities.json 包含定义完整激活器配置的实体对象的数组。 每个实体表示流式处理数据管道中的组件。
实体类型
反射定义支持以下实体类型:
| 类型 | Description |
|---|---|
container-v1 |
组织相关组件的顶级容器 |
simulatorSource-v1 |
用于测试和演示的模拟数据源 |
kqlSource-v1 |
基于 KQL 查询的数据源连接到 Eventhouse |
realTimeHubSource-v1 |
工作区事件的实时中心数据源 |
eventstreamSource-v1 |
连接到 Fabric 事件流的事件流数据源 |
fabricItemAction-v1 |
可由规则调用的构造项作 |
timeSeriesView-v1 |
定义事件、对象、属性或规则的核心构建基块 |
通用实体属性
所有实体共享这些通用属性:
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
uniqueIdentifier |
字符串 | 是 | 实体的唯一标识符 |
payload |
对象 | 是 | 特定于实体的配置数据 |
type |
字符串 | 是 | 实体类型(例如, container-v1timeSeriesView-v1) |
容器实体 (container-v1)
容器组织相关组件并提供分层结构。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 容器的显示名称 |
type |
字符串 | 是 | 容器类型(例如, samples) kqlQueries |
数据源实体
数据源实体定义项连接到的数据源,以及从中接收其数据的数据源。
模拟器源 (simulatorSource-v1)
生成用于测试的模拟流数据。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 数据源的显示名称 |
runSettings |
对象 | 假 | 执行配置 |
runSettings.startTime |
字符串 (ISO 8601) | 假 | 何时开始生成数据 |
runSettings.stopTime |
字符串 (ISO 8601) | 假 | 何时停止生成数据 |
version |
字符串 | 假 | 版本标识符(例如) V2_0 |
type |
字符串 | 是 | 模拟数据的类型(例如 PackageShipment) |
parentContainer |
对象 | 是 | 对父容器的引用 |
parentContainer.targetUniqueIdentifier |
字符串 | 是 | 父容器实体的唯一标识符 |
KQL 源 (kqlSource-v1)
连接到 KQL 数据库以查询流数据。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 数据源的显示名称 |
runSettings |
对象 | 假 | 查询执行设置 |
runSettings.executionIntervalInSeconds |
数字 | 假 | 执行查询的频率 |
query.queryString |
字符串 | 是 | 要执行的 KQL 查询 |
eventhouseItem |
对象 | 是 | 对 Eventhouse 项的引用 |
eventhouseItem.targetUniqueIdentifier |
字符串 | 是 | Eventhouse 项的唯一标识符 |
parentContainer |
对象 | 是 | 对父容器的引用 |
parentContainer.targetUniqueIdentifier |
字符串 | 是 | 父容器实体的唯一标识符 |
实时中心源 (realTimeHubSource-v1)
连接到用于监视工作区事件的实时中心数据源。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 数据源的显示名称 |
connection |
对象 | 是 | 实时中心连接配置 |
connection.scope |
字符串 | 是 | 事件范围(例如 Workspace) |
connection.tenantId |
字符串 | 是 | Azure 租户标识符 |
connection.workspaceId |
字符串 | 是 | Fabric 工作区标识符 |
connection.eventGroupType |
字符串 | 是 | 事件组的类型(例如 Microsoft.Fabric.WorkspaceEvents) |
filterSettings |
对象 | 是 | 事件筛选配置 |
filterSettings.eventTypes |
数组 | 是 | 要监视的事件类型的数组 |
filterSettings.eventTypes[].name |
字符串 | 是 | 事件类型名称(例如) Microsoft.Fabric.ItemCreateSucceeded |
filterSettings.filters |
数组 | 假 | 要应用的其他筛选器 |
parentContainer |
对象 | 是 | 对父容器的引用 |
parentContainer.targetUniqueIdentifier |
字符串 | 是 | 父容器实体的唯一标识符 |
事件流源 (eventstreamSource-v1)
连接到用于流式处理事件的 Fabric Eventstream 数据源。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 数据源的显示名称 |
metadata |
对象 | 是 | 事件流连接元数据 |
metadata.eventstreamArtifactId |
字符串 | 是 | Fabric 事件流项目的标识符 |
作实体
构造项作 (fabricItemAction-v1)
定义可按规则调用为作的 Fabric 项。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 作的显示名称 |
fabricItem |
对象 | 是 | 对要执行的 Fabric 项的引用 |
fabricItem.itemId |
字符串 | 是 | 结构项标识符 |
fabricItem.workspaceId |
字符串 | 是 | 包含项的工作区 |
fabricItem.itemType |
字符串 | 是 | Fabric 项的类型(例如 Pipeline) |
jobType |
字符串 | 是 | 要执行的作业类型(例如 Pipeline) |
parentContainer |
对象 | 是 | 对父容器的引用 |
parentContainer.targetUniqueIdentifier |
字符串 | 是 | 父容器实体的唯一标识符 |
时序视图实体 (timeSeriesView-v1)
时序视图是定义数据流经激活器管道的核心构建基块。 它们可以表示 事件、 对象、 属性或 规则。
常见时序视图属性
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
name |
字符串 | 是 | 视图的显示名称 |
parentContainer |
对象 | 是 | 对父容器的引用 |
parentContainer.targetUniqueIdentifier |
字符串 | 是 | 父容器实体的唯一标识符 |
definition |
对象 | 是 | 定义视图的行为和逻辑 |
definition.type |
字符串 | 是 | 视图类型:Event、、ObjectAttribute或Rule |
definition.instance |
字符串 | 假 | 包含特定于模板的配置的 JSON 字符串 |
事件视图
事件视图筛选和转换流数据以创建新的事件流。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
definition.type |
字符串 | 是 | 必须是 Event |
definition.instance |
字符串 | 是 | 事件处理模板的 JSON 配置 |
常见事件模板:
-
SourceEvent:从数据源中选择事件 -
SplitEvent:按对象标识拆分每个对象处理的事件
对象视图
对象视图定义要监视的实体(例如包、传感器、用户)。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
definition.type |
字符串 | 是 | 必须是 Object |
属性视图
属性视图从事件中提取和计算属性,定义要监视的数据。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
definition.type |
字符串 | 是 | 必须是 Attribute |
definition.instance |
字符串 | 是 | 属性提取和计算的 JSON 配置 |
parentObject |
对象 | 是 | 对此属性所属的父对象的引用 |
parentObject.targetUniqueIdentifier |
字符串 | 是 | 父对象实体的唯一标识符 |
常见属性模板:
-
IdentityPartAttribute:定义对象的标识的一部分 -
IdentityTupleAttribute:将标识部件合并为完整的对象标识符 -
BasicEventAttribute:从事件中提取简单值
规则视图
规则视图定义满足条件时执行的触发器和作。
| 资产 | 类型 | 必选 | Description |
|---|---|---|---|
definition.type |
字符串 | 是 | 必须是 Rule |
definition.instance |
字符串 | 是 | 触发器逻辑和作的 JSON 配置 |
definition.settings |
对象 | 假 | 规则执行设置 |
definition.settings.shouldRun |
布尔 | 假 | 规则当前是否处于活动状态 |
definition.settings.shouldApplyRuleOnUpdate |
布尔 | 假 | 是否将规则应用于历史数据 |
parentObject |
对象 | 假 | 对父对象的引用(对于对象范围规则) |
parentObject.targetUniqueIdentifier |
字符串 | 假 | 父对象实体的唯一标识符 |
常见规则模板:
-
EventTrigger:特定事件的触发器 -
AttributeTrigger:基于属性值或更改的触发器
规则作类型
触发时,规则可以执行不同类型的作:
- TeamsMessage:通过 Microsoft Teams 发送通知
- EmailMessage:发送电子邮件通知
- FabricItemInvocation:使用可选参数执行 Fabric 项(例如管道、Notebook)
通知作配置
Teams 和电子邮件通知作共享类似的配置参数:
TeamsMessage 配置:
-
messageLocale:邮件的语言/区域设置 -
recipients:收件人电子邮件地址或 Teams 用户的数组 -
headline:主邮件标题/主题 -
optionalMessage:其他消息内容 -
additionalInformation:额外的上下文信息
EmailMessage 配置:
-
messageLocale:电子邮件的语言/区域设置(例如en-us) -
sentTo:主要收件人电子邮件地址数组 -
copyTo:抄送收件人电子邮件地址数组 -
bCCTo:密件抄送收件人电子邮件地址的数组 -
subject:电子邮件主题行 -
headline:主消息内容 -
optionalMessage:其他消息正文内容 -
additionalInformation:额外的上下文信息
父引用
实体使用以下结构引用其父级:
| 资产 | 类型 | Description |
|---|---|---|
parentContainer.targetUniqueIdentifier |
字符串 | 引用容器实体 |
parentObject.targetUniqueIdentifier |
字符串 | 引用对象实体 |
模板实例
该 instance 属性包含 JSON 编码的模板配置。 这些模板定义用于处理事件、提取属性或触发作的特定逻辑。 常见模板类型包括:
-
事件模板:
SourceEventSplitEvent -
属性模板:
IdentityPartAttribute、、IdentityTupleAttribute、BasicEventAttribute -
规则模板:
EventTriggerAttributeTrigger
每个模板都有自己的特定架构,用于配置步骤、参数和处理逻辑。 规则可以引用 fabricItemAction-v1 其 FabricItemInvocation 作中的实体,以使用派生自触发事件的参数执行 Fabric 项。
从 Base64 解码 ReflexEntities.json 内容的示例
此示例显示了包含各种触发器和通知的包传递监视系统:
[
{
"uniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668",
"payload": {
"name": "Package delivery sample",
"type": "samples"
},
"type": "container-v1"
},
{
"uniqueIdentifier": "85693be9-e8ed-49b3-b792-9dcb6750a49a",
"payload": {
"name": "Package delivery",
"runSettings": {
"startTime": "2025-10-21T12:03:31.9271568Z",
"stopTime": "2025-11-04T15:03:31.03Z"
},
"version": "V2_0",
"type": "PackageShipment",
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
}
},
"type": "simulatorSource-v1"
},
{
"uniqueIdentifier": "c4a451a0-6b1e-4cc7-b5b8-93d58816a85b",
"payload": {
"name": "Package delivery events",
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
},
"definition": {
"type": "Event",
"instance": "{\"templateId\":\"SourceEvent\",\"templateVersion\":\"1.1\",\"steps\":[{\"name\":\"SourceEventStep\",\"id\":\"c5b4fdfd-559a-4bf7-912f-705617cd1d86\",\"rows\":[{\"name\":\"SourceSelector\",\"kind\":\"SourceReference\",\"arguments\":[{\"name\":\"entityId\",\"type\":\"string\",\"value\":\"85693be9-e8ed-49b3-b792-9dcb6750a49a\"}]}]}]}"
}
},
"type": "timeSeriesView-v1"
},
{
"uniqueIdentifier": "a18d312c-c855-4e76-bb75-ce473ae59e8c",
"payload": {
"name": "Package",
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
},
"definition": {
"type": "Object"
}
},
"type": "timeSeriesView-v1"
},
{
"uniqueIdentifier": "47f2a2ab-e2e9-4dc1-88f7-953f3b5cfd37",
"payload": {
"name": "PackageId",
"parentObject": {
"targetUniqueIdentifier": "a18d312c-c855-4e76-bb75-ce473ae59e8c"
},
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
},
"definition": {
"type": "Attribute",
"instance": "{\"templateId\":\"IdentityPartAttribute\",\"templateVersion\":\"1.1\",\"steps\":[{\"name\":\"IdPartStep\",\"id\":\"ce6358bf-e1e4-4f16-8453-181b58ec0a4d\",\"rows\":[{\"name\":\"TypeAssertion\",\"kind\":\"TypeAssertion\",\"arguments\":[{\"name\":\"op\",\"type\":\"string\",\"value\":\"Text\"},{\"name\":\"format\",\"type\":\"string\",\"value\":\"\"}]}]}]}"
}
},
"type": "timeSeriesView-v1"
},
{
"uniqueIdentifier": "07564441-30f5-4a67-8df2-4f13ba85a2da",
"payload": {
"name": "Temperature (°C)",
"parentObject": {
"targetUniqueIdentifier": "a18d312c-c855-4e76-bb75-ce473ae59e8c"
},
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
},
"definition": {
"type": "Attribute",
"instance": "{\"templateId\":\"BasicEventAttribute\",\"templateVersion\":\"1.1\",\"steps\":[{\"name\":\"EventSelectStep\",\"id\":\"f986dac6-a843-43c4-9335-e5950148d41e\",\"rows\":[{\"name\":\"EventSelector\",\"kind\":\"Event\",\"arguments\":[{\"kind\":\"EventReference\",\"type\":\"complex\",\"arguments\":[{\"name\":\"entityId\",\"type\":\"string\",\"value\":\"f9c9e86e-0389-4128-bcd8-65cbe2352d75\"}],\"name\":\"event\"}]},{\"name\":\"EventFieldSelector\",\"kind\":\"EventField\",\"arguments\":[{\"name\":\"fieldName\",\"type\":\"string\",\"value\":\"Temperature\"}]}]},{\"name\":\"EventComputeStep\",\"id\":\"10553199-f8bc-4275-80a8-7996a255f6a3\",\"rows\":[{\"name\":\"TypeAssertion\",\"kind\":\"TypeAssertion\",\"arguments\":[{\"name\":\"op\",\"type\":\"string\",\"value\":\"Number\"},{\"name\":\"format\",\"type\":\"string\",\"value\":\"\"}]}]}]}"
}
},
"type": "timeSeriesView-v1"
},
{
"uniqueIdentifier": "2b587dc3-5dfc-4838-ad4c-35e1586c58d5",
"payload": {
"name": "Too hot for medicine",
"parentObject": {
"targetUniqueIdentifier": "a18d312c-c855-4e76-bb75-ce473ae59e8c"
},
"parentContainer": {
"targetUniqueIdentifier": "c845c472-8d8e-498d-bdf4-9e12ab456668"
},
"definition": {
"type": "Rule",
"instance": "{\"templateId\":\"AttributeTrigger\",\"templateVersion\":\"1.1\",\"steps\":[{\"name\":\"ScalarSelectStep\",\"id\":\"a63dcd75-3149-452b-a49c-ab4973c3dd82\",\"rows\":[{\"name\":\"AttributeSelector\",\"kind\":\"Attribute\",\"arguments\":[{\"kind\":\"AttributeReference\",\"type\":\"complex\",\"arguments\":[{\"name\":\"entityId\",\"type\":\"string\",\"value\":\"07564441-30f5-4a67-8df2-4f13ba85a2da\"}],\"name\":\"attribute\"}]},{\"name\":\"NumberSummary\",\"kind\":\"NumberSummary\",\"arguments\":[{\"name\":\"op\",\"type\":\"string\",\"value\":\"Average\"},{\"kind\":\"TimeDrivenWindowSpec\",\"type\":\"complex\",\"arguments\":[{\"name\":\"width\",\"type\":\"timeSpan\",\"value\":600000.0},{\"name\":\"hop\",\"type\":\"timeSpan\",\"value\":600000.0}],\"name\":\"window\"}]}]},{\"name\":\"ScalarDetectStep\",\"id\":\"a1bc1c0c-6651-46ac-976f-9a1fcb42a269\",\"rows\":[{\"name\":\"NumberBecomes\",\"kind\":\"NumberBecomes\",\"arguments\":[{\"name\":\"op\",\"type\":\"string\",\"value\":\"BecomesGreaterThan\"},{\"name\":\"value\",\"type\":\"number\",\"value\":20.0}]},{\"name\":\"OccurrenceOption\",\"kind\":\"EachTime\",\"arguments\":[]}]},{\"name\":\"DimensionalFilterStep\",\"id\":\"9445c334-ebd3-47b7-b958-198f7e53f53e\",\"rows\":[{\"name\":\"AttributeSelector\",\"kind\":\"Attribute\",\"arguments\":[{\"kind\":\"AttributeReference\",\"type\":\"complex\",\"arguments\":[{\"name\":\"entityId\",\"type\":\"string\",\"value\":\"25079a06-01f7-4dd9-a72c-761684ce0d37\"}],\"name\":\"attribute\"}]},{\"name\":\"TextValueCondition\",\"kind\":\"TextValueCondition\",\"arguments\":[{\"name\":\"op\",\"type\":\"string\",\"value\":\"IsEqualTo\"},{\"name\":\"value\",\"type\":\"string\",\"value\":\"Medicine\"}]}]},{\"name\":\"ActStep\",\"id\":\"3dec7f63-ab86-411d-b35c-cce1db9f124e\",\"rows\":[{\"name\":\"TeamsBinding\",\"kind\":\"TeamsMessage\",\"arguments\":[{\"name\":\"messageLocale\",\"type\":\"string\",\"value\":\"\"},{\"name\":\"recipients\",\"type\":\"array\",\"values\":[{\"type\":\"string\",\"value\":\"user@example.com\"}]},{\"name\":\"headline\",\"type\":\"array\",\"values\":[{\"type\":\"string\",\"value\":\"Package too hot for medicine\"}]},{\"name\":\"optionalMessage\",\"type\":\"array\",\"values\":[{\"type\":\"string\",\"value\":\"This temperature-sensitive package containing medicine has exceeded the allowed threshold.\"}]},{\"name\":\"additionalInformation\",\"type\":\"array\",\"values\":[]}]}]}]}",
"settings": {
"shouldRun": false,
"shouldApplyRuleOnUpdate": false
}
}
},
"type": "timeSeriesView-v1"
}
]
定义示例
{
"format": "json",
"parts": [
{
"path": "ReflexEntities.json",
"payload": "W3sKICAidW5pcXVlSWRlbnRpZmllciI6ICJjODQ1YzQ3Mi04ZDhlLTQ5OGQtYmRmNC05ZTEyYWI0NTY2NjgiLAogICJwYXlsb2FkIjogewogICAgIm5hbWUiOiAiUGFja2FnZSBkZWxpdmVyeSBzYW1wbGUiLAogICAgInR5cGUiOiAic2FtcGxlcyIKICB9LAogICJ0eXBlIjogImNvbnRhaW5lci12MSIKfV0=",
"payloadType": "InlineBase64"
},
{
"path": ".platform",
"payload": "ZG90UGxhdGZvcm1CYXNlNjRTdHJpbmc=",
"payloadType": "InlineBase64"
}
]
}