App Spec
表达应用壳(App Shell)的定义语义。一个 App 包含一组 PageView,并通过 homePageRoute 指定首页路由。
定位与自然键
- 自然键:
name。Bundle 与投影框架均以name定位或创建 App。 - App 不存在时,安装器/投影服务会自动创建:
- 通过
AppShellDomainProjectionAdapter.project显式声明 App 时,按name创建并同步displayName、description、icon。 - 通过
PageView隐式引用时,AppDefinitionWriteService.upsertPageView会在 App 不存在时自动创建同名 App(默认description="Auto-generated by bundle installer"、icon="Layout")。
- 通过
AppSpecDTO
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 应用名称,自然键 |
displayName | string | 应用显示名称;写入定义层 spec_json,同时投影到 fd_app.display_name |
description | string | 应用描述;写入定义层 spec_json,同时投影到 fd_app.description |
icon | string | 应用图标;写入定义层 spec_json,同时投影到 fd_app.icon |
homePageRoute | string | 首页路由。投影时匹配 pages 中的页面 route 并写入 fd_app.home_page_id;未指定时默认取第一个页面 |
pages | List<PageViewSpecDTO> | 应用当前草稿页面快照列表。投影时按此列表对 App 下页面做 upsert,缺失的草稿页面会被删除 |
导航
App 的导航菜单由运行时快照(fd_app.runtime_snapshot_json)中的 pages 推导生成:
- 每个页面的
showInMenu控制是否出现在导航中(默认true)。 - 页面按
sortOrder与id升序排列。 - 导航项包含
name、displayName、route、icon。
详细页面字段与 widget 归一化规则参见 PageView Spec。
示例
name: Manufacturing
displayName: 智能制造
description: 生产运营中心
icon: Factory
homePageRoute: /production/dashboard
pages:
- appRef:
name: Manufacturing
name: production_dashboard
route: /production/dashboard
displayName: 生产概览
showInMenu: true
icon: LayoutDashboard
root:
widgetId: root
type: CONTAINER
children:
- total_output_card
widgets:
- widgetId: total_output_card
type: STAT_CARD
props:
title: 今日产量消费位置
foundry-app-biz:AppShellDomainProjectionAdapter.project按name创建/更新 App,同步displayName、description、icon,并写入home_page_id。foundry-app-biz:AppDefinitionWriteService.upsertPageView在 App 不存在时按appRef.name自动创建 App。foundry-definition/foundry-definition-biz:BundleInstallPlanBuilder.resolveApps合并显式声明的apps;旧格式包按pageViews中的appRef自动合成 App。foundry-definition/foundry-definition-biz:BundleDefinitionUpsertExecutor将解析后的 AppSpecDTO 写入定义层。
相关文档
- PageView Spec — 页面视图定义、widget 归一化与导航规则
- 核心概念 — ResourceRef 解析规则