查看 Azure 托管应用程序中的定义项目

视图定义是 Azure 托管应用程序中的可选项目。 使用它可以自定义“概述”页,并添加更多视图,例如“指标”和“自定义”资源。

本文概述视图定义项目及其功能。

视图定义项目

视图定义项目必须命名为 viewDefinition.json,并放置在用于创建托管应用程序定义的 .zip 包中 createUiDefinition.json 和 mainTemplate.json 所在的同一级别。 若要了解如何创建 .zip 包和发布托管应用程序定义,请参阅快速入门:创建和发布 Azure 托管应用程序定义

视图定义架构

viewDefinition.json 文件只有一个顶级 views 属性(视图数组)。 每个视图作为目录中的独立菜单项显示在托管应用程序用户界面中。 每个视图有一个用于设置视图类型的 kind 属性。 该属性必须设置为以下值之一:Overview、Metrics、CustomResources、Associations。 有关详细信息,请参阅最新的 viewDefinition.json 的 JSON 架构。

视图定义的示例 JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/viewdefinition/0.0.1-preview/ViewDefinition.json#",
  "contentVersion": "0.0.0.1",
  "views": [
    {
      "kind": "Overview",
      "properties": {
        "header": "Welcome to your Azure Managed Application",
        "description": "This managed application is for demo purposes only.",
        "commands": [
          {
            "displayName": "Test Action",
            "path": "testAction"
          }
        ]
      }
    },
    {
      "kind": "Metrics",
      "properties": {
        "displayName": "This is my metrics view",
        "version": "1.0.0",
        "charts": [
          {
            "displayName": "Sample chart",
            "chartType": "Bar",
            "metrics": [
              {
                "name": "Availability",
                "aggregationType": "avg",
                "resourceTagFilter": [
                  "tag1"
                ],
                "resourceType": "Microsoft.Storage/storageAccounts",
                "namespace": "Microsoft.Storage/storageAccounts"
              }
            ]
          }
        ]
      }
    },
    {
      "kind": "CustomResources",
      "properties": {
        "displayName": "Test custom resource type",
        "version": "1.0.0",
        "resourceType": "testCustomResource",
        "createUIDefinition": {},
        "commands": [
          {
            "displayName": "Custom Context Action",
            "path": "testCustomResource/testContextAction",
            "icon": "Stop",
            "createUIDefinition": {}
          }
        ],
        "columns": [
          {
            "key": "name",
            "displayName": "Name"
          },
          {
            "key": "properties.myProperty1",
            "displayName": "Property 1"
          },
          {
            "key": "properties.myProperty2",
            "displayName": "Property 2",
            "optional": true
          }
        ]
      }
    },
    {
      "kind": "Associations",
      "properties": {
        "displayName": "Test association resource type",
        "version": "1.0.0",
        "targetResourceType": "Microsoft.Compute/virtualMachines",
        "createUIDefinition": {}
      }
    }
  ]
}

概述

"kind": "Overview"

在 viewDefinition.json 中提供此视图时,它会替代托管应用程序中的默认“概述”页。

{
  "kind": "Overview",
  "properties": {
    "header": "Welcome to your Azure Managed Application",
    "description": "This managed application is for demo purposes only.",
    "commands": [
      {
        "displayName": "Test Action",
        "path": "testAction"
      }
    ]
  }
}
属性 必选 说明
header 否 概述页的标题。
description 否 托管应用程序的说明。
commands 否 “概述”页的更多工具栏按钮的数组,请参阅命令。

屏幕截图显示具有托管应用程序的“概述”,该应用有一个“测试操作”控件用于运行演示应用程序。

指标

"kind": "Metrics"

使用指标视图可以从 Azure Monitor 指标中的托管应用程序资源收集和聚合数据。

{
  "kind": "Metrics",
  "properties": {
    "displayName": "This is my metrics view",
    "version": "1.0.0",
    "charts": [
      {
        "displayName": "Sample chart",
        "chartType": "Bar",
        "metrics": [
          {
            "name": "Availability",
            "aggregationType": "avg",
            "resourceTagFilter": [
              "tag1"
            ],
            "resourceType": "Microsoft.Storage/storageAccounts",
            "namespace": "Microsoft.Storage/storageAccounts"
          }
        ]
      }
    ]
  }
}
属性 必选 说明
displayName 否 视图的显示标题。
version 否 用于呈现视图的平台版本。
charts 是 指标页的图表数组。

图表

属性 必选 说明
displayName 是 图表的显示标题。
chartType 否 用于此图表的可视化效果。 默认使用折线图。 支持的图表类型:Bar, Line, Area, Scatter。
metrics 是 要在此图表上绘制的指标数组。 若要详细了解 Azure 门户中支持的指标,请参阅 Azure Monitor 支持的指标。

指标

属性 必选 说明
name 是 指标的名称。
aggregationType 是 用于此指标的聚合类型。 支持的聚合类型:none, sum, min, max, avg, unique, percentile, count
namespace 否 确定正确的指标提供程序时要使用的更多信息。
resourceTagFilter 否 要显示其指标的资源标记数组使用单词 or 分隔。 在资源类型筛选器的顶部应用。
resourceType 是 要显示其指标的资源类型。

屏幕截图显示托管应用程序的名为“我的指标视图”的“监视”页面。

自定义资源

"kind": "CustomResources"

可以定义此类型的多个视图。 每个视图表示 mainTemplate.json 中定义的自定义提供程序中的唯一自定义资源类型。

在此视图中,可对自定义资源类型执行 GET、PUT、DELETE 和 POST 操作。 POST 操作可以是全局自定义操作,或自定义资源类型上下文中的自定义操作。

{
  "kind": "CustomResources",
  "properties": {
    "displayName": "Test custom resource type",
    "version": "1.0.0",
    "resourceType": "testCustomResource",
    "icon": "Polychromatic.ResourceList",
    "createUIDefinition": {},
    "commands": [
      {
        "displayName": "Custom Context Action",
        "path": "testCustomResource/testContextAction",
        "icon": "Stop",
        "createUIDefinition": {},
      }
    ],
    "columns": [
      {
        "key": "name",
        "displayName": "Name"
      },
      {
        "key": "properties.myProperty1",
        "displayName": "Property 1"
      },
      {
        "key": "properties.myProperty2",
        "displayName": "Property 2",
        "optional": true
      }
    ]
  }
}
属性 必选 说明
displayName 是 视图的显示标题。 标题对于 viewDefinition.json 中的每个 CustomResources 视图应该唯一。
version 否 用于呈现视图的平台版本。
resourceType 是 自定义资源类型。 必须是自定义提供程序的唯一自定义资源类型。
icon 否 视图的图标。 示例图标列表在 JSON 架构中定义。
createUIDefinition 否 为“创建自定义资源”命令创建 UI 定义架构。 有关创建 UI 定义的简介,请参阅 CreateUiDefinition 入门。
commands 否 “自定义资源”视图的更多工具栏按钮的数组,请参阅命令。
columns 否 自定义资源的列数组。 如果未定义,则默认显示 name 列。 该列必须具有 "key" 和 "displayName"。 对于键,请提供要在视图中显示的属性的键。 如果嵌套键,请使用句点作为分隔符,例如 "key": "name" 或 "key": "properties.property1"。 对于显示名称,请提供要在视图中显示的属性的显示名称。 还可以提供 "optional" 属性。 设置为 true 时,该列默认会在视图中隐藏。

屏幕截图显示名为“测试自定义资源类型”的“资源”页面以及“自定义上下文操作”控件。

命令

commands 属性是页面上显示的更多工具栏按钮的数组。 每个命令表示 mainTemplate.json 中定义的 Azure 自定义提供程序中的一个 POST 操作。

{
  "commands": [
    {
      "displayName": "Start Test Action",
      "path": "testAction",
      "icon": "Start",
      "createUIDefinition": {}
    },
  ]
}
属性 必选 说明
displayName 是 命令按钮的显示名称。
path 是 必须是自定义提供程序操作名称。 该操作必须在 mainTemplate.json 中定义。

不接受动态值,例如从 mainTemplate.json 输出的 URI。
icon 否 命令按钮的图标。 示例图标列表在 JSON 架构中定义。
createUIDefinition 否 为命令创建 UI 定义架构。 有关创建 UI 定义的简介,请参阅 CreateUiDefinition 入门。

关联

"kind": "Associations"

可以定义此类型的多个视图。 使用此视图可以通过 mainTemplate.json 中定义的自定义提供程序,将现有资源链接到托管应用程序。

在此视图中,可以基于 targetResourceType 扩展现有的 Azure 资源。 选择某个资源时,它会向公共自定义提供程序创建加入请求,这会对资源应用副作用。

{
  "kind": "Associations",
  "properties": {
    "displayName": "Test association resource type",
    "version": "1.0.0",
    "targetResourceType": "Microsoft.Compute/virtualMachines",
    "createUIDefinition": {}
  }
}
properties 必选 说明
displayName 是 视图的显示标题。 标题对于 viewDefinition.json 中的每个 Associations 视图应该唯一。
version 否 用于呈现视图的平台版本。
targetResourceType 是 目标资源类型。 将显示此资源类型以供资源加入。
createUIDefinition 否 为“创建关联资源”命令创建 UI 定义架构。 有关创建 UI 定义的简介,请参阅 CreateUiDefinition 入门。

寻求帮助

如果你遇到了 Azure 托管应用程序方面的问题,请尝试在 Stack Overflow 上提问。 该论坛上可能已有类似问题的解答,因此,在发贴之前请先查看以往的提问。 添加标记 azure-managed-app 可以快速得到回复!

后续步骤