深入 Logic Apps Standard:Azure Tables 如何存储您的工作流

发布: (2026年1月15日 GMT+8 07:28)
9 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。

概述

Azure Logic Apps Standard 使用 Azure Table Storage 作为其主要持久层,用于:

  • 工作流状态
  • 执行历史
  • 运行时元数据

表类别

Logic Apps Standard 将数据组织为两个不同的表类别:

类别范围目的
Base TablesLogic App Resource跨所有工作流共享的运行时元数据
Flow TablesIndividual Workflow每个工作流的隔离执行数据

此分离实现了 工作流隔离水平扩展独立的生命周期管理

Source:

基础表(应用级)

基础表存储适用于整个 Logic App 资源的元数据。Logic App 中的所有工作流共享这些表。

表命名模式

flow{LAIdentifier}{suffix}
组件描述
LAIdentifierLogicAppNameMurmurHash64 前 15 个字符
suffix表类型标识符(见下表)

基础表类型

表后缀用途关键数据
flows主工作流注册表工作流定义、状态、CU 分配
flowruntimecontext运行时执行上下文流状态、执行集群类型、运行时配置
flowaccesskeys工作流访问密钥工作流 API 访问的主/次密钥
flowsubscriptions订阅注册租户注册、订阅状态
flowsubscriptionsummary工作流计数与摘要按状态(已启用/已禁用)的流计数
jobdefinitions作业调度器元数据执行状态、重试配置、重复计划

示例

对于名为 OrderProcessing 的 Logic App:

LAIdentifier = flow7365adc025615f3

生成的基础表:

flow7365adc025615f3flows
flow7365adc025615f3flowruntimecontext
flow7365adc025615f3flowaccesskeys
flow7365adc025615f3flowsubscriptions
flow7365adc025615f3flowsubscriptionsummary
flow7365adc025615f3jobdefinitions

Source:

流表(工作流级)

流表存储每个工作流特有的执行数据。每个工作流都有自己独立的一组表。

表命名模式

flow{LAIdentifier}{WFIdentifier}{suffix}
占位符描述
LAIdentifierMurmurHash64(LogicAppName) 的前 15 个字符
WFIdentifierMurmurHash64(WorkflowId) 的前 15 个字符
suffix表类型标识(例如 flowsruns 等)

流表类型

表后缀用途存储的关键数据
flows工作流定义缓存最新定义、参数、运行时上下文、CU
runs运行元数据运行状态、时间信息、触发器信息、关联 ID
histories触发历史触发次数、评估结果、输入/输出链接
actions操作执行操作状态、时间信息、输入/输出 Blob 链接
variables工作流变量变量名、数据类型、值链接
concurrentruns并发跟踪活动运行协调(当启用并发时)

带日期戳的表

与操作相关的表按日期分区,以提升可扩展性:

{WFIdentifier}yyyyMMddT000000Z{suffix}

示例: 1c859134ef297b720250114T000000Zactions

示例

对于 OrderProcessing 逻辑应用中的工作流 ProcessOrder

LAIdentifier = flow7365adc025615f3
WFIdentifier = 1c859134ef297b7

生成的表:

flow7365adc025615f31c859134ef297b7flows
flow7365adc025615f31c859134ef297b7runs
flow7365adc025615f31c859134ef297b7histories
flow7365adc025615f31c859134ef297b720250114T000000Zactions
flow7365adc025615f31c859134ef297b720250114T000000Zvariables

表关键字段

基础 Flows 表(主注册表)

字段描述
FlowId唯一工作流标识符(GUID)
FlowName工作流名称
Kind工作流类型(Stateful / Stateless
StateEnabledDisabled
ScaleUnitCU 分配(CU00CU01、…)
DefinitionCompressed压缩的工作流 JSON 定义
ParametersCompressed压缩的工作流参数
RuntimeConfiguration保留设置、操作选项
CreatedTime / ChangedTime生命周期时间戳

FlowRuntimeContext

字段描述
FlowId工作流标识符
FlowState当前工作流状态
FlowExecutionClusterType执行集群(Classic 等)
Kind工作流类型
RuntimeConfiguration运行时设置 JSON
FlowSequenceId序列标识符

FlowAccessKeys

字段描述
FlowId工作流标识符
FlowAccessKeyName密钥名称(例如 default
PrimaryKey主访问密钥
SecondaryKey次访问密钥

FlowSubscriptions

字段描述
SubscriptionIdAzure 订阅标识符
State注册状态(Registered 等)
Properties租户 ID 和已注册功能的 JSON
RegistrationDate订阅注册时间戳

FlowSubscriptionSummary

字段描述
FlowCountsByState包含已启用/已禁用工作流计数的 JSON
FlowId / FlowName工作流引用(用于每个工作流的条目)
State工作流状态
ScaleUnitCU 分配
DefinitionCompressed缓存的压缩定义

JobDefinitions

字段描述
JobId唯一作业标识符
JobPartition作业分区键
Callback作业回调类型(例如 LinearSequencerJob
State作业状态(CompletedWaiting …)
ExecutionState当前执行状态
StartTime / EndTime作业调度窗口
NextExecutionTime下次计划执行时间

此参考面向需要了解或排查 Azure Logic Apps Standard 持久化层的开发人员、架构师和运维工程师。

递归与重试配置

设置描述
RepeatMode / RepeatUnit / RepeatInterval重复配置
RetryMode / RetryCount / RetryInterval重试配置
CurrentExecutionCount总执行次数
LastExecutionStatus / LastExecutionTime最近一次执行信息
BinaryMetadata00‑15压缩的作业元数据块

运行表

字段描述
FlowId / FlowName工作流的引用
StatusSucceededFailedRunningCancelled
CreatedTime / EndTime运行的时间戳
TriggerName启动运行的触发器名称
CorrelationId请求关联标识符
ClientTrackingId客户端提供的跟踪标识符
TriggerCompressed触发器的压缩负载
OutputsCompressed运行输出的压缩负载

历史表(触发器历史)

字段描述
HistoryName历史条目标识符
TriggerName触发器引用
Fired布尔值 – 触发器是否实际触发
Status触发器评估结果
InputsLinkCompressed触发器输入链接(压缩)
OutputsLinkCompressed触发器输出链接(压缩)
TrackingId关联跟踪标识符

操作表

FieldDescription
ActionName操作的标识符
ActionRepetitionName循环迭代索引(例如 000000
StatusSucceededSkippedFailed
Code结果代码(OKActionSkipped 等)
CreatedTime / CompletedTime操作开始和完成的时间戳
InputsLinkCompressed指向压缩输入 Blob 的链接
OutputsLinkCompressed指向压缩输出 Blob 的链接
RepeatItemIndex循环迭代的索引
RepeatItemScopeName父循环操作的名称
Error错误详情(如果操作失败)

变量表

FieldDescription
VariableName变量标识符
DataType变量类型(IntegerStringBoolean 等)
FlowId / FlowName工作流引用
FlowRunSequenceId运行序列标识符
OperationId修改变量的操作
OperationSequenceId操作序列
InputsLinkCompressed变量输入的链接
ValueLinkCompressed当前变量值的链接
CreatedTime / ChangedTime变量生命周期时间戳

工作流 Flows 表(每‑工作流缓存)

FieldDescription
FlowId / FlowName工作流标识符
Kind工作流类型(Stateful
StateEnabledDisabled
ScaleUnitCU 分配
DefinitionCompressed压缩的最新工作流定义
ParametersCompressed压缩的参数
RuntimeConfiguration运行时设置 JSON
RuntimeContext压缩的运行时上下文
FlowSequenceId定义序列 ID
FlowUpdatedTime最近的定义更新时间

标识符生成

Logic Apps 使用 MurmurHash64 进行确定性、抗冲突的标识符生成。

算法

// Generate Logic App identifier (LAIdentifier)
string laIdentifier = "flow" + MurmurHash64(logicAppName).Substring(0, 15);

// Generate Workflow identifier (WFIdentifier)
string wfIdentifier = MurmurHash64(workflowId).Substring(0, 15);

// Build the complete table name
string tableName = laIdentifier + wfIdentifier + suffix;

约束

  • 表名: 最多 63 个字符(Azure Table Storage 限制)
  • 字符: 仅限小写字母和数字
  • 哈希截断: 15 个字符即可提供足够的唯一性

快速参考

表名格式

Base:   flow{LAIdentifier}{suffix}
Flow:   flow{LAIdentifier}{WFIdentifier}{suffix}
Dated:  flow{LAIdentifier}{WFIdentifier}{yyyyMMddT000000Z}{suffix}

常用后缀

后缀级别用途
flows两者定义
runs流程运行历史
actions流程操作执行
flowsubscriptions基础触发器订阅
jobdefinitions基础计划作业
Back to Blog

相关文章

阅读更多 »

从零到 SQS Lambda 只需 15 分钟

我的 AWS 之旅 我在加入当前组织时开始了我的 AWS 之旅。之前,我对使用 VPS 和 bare‑metal servers 感到非常满意。长话短说……