加入 Fabric 监视中心(预览版)

监视中心是一个集中式监视中心,专为 Fabric 用户设计,用于跟踪项后台作业。 有关监视中心的详细信息,请参阅使用监视中心

后端

步骤 1 - 在项目清单内定义 JobScheduler 属性

要启用作业支持,该项目必须指定它支持的作业类型。 将 JobScheduler 属性添加到项目清单。 JobScheduler 为您的项目启用 Fabric 管理的作业。 下面是受支持的 JobScheduler 定义属性的概述:

properties 说明 可能的值
OnDemandJobDeduplicateOptions 设置按需项目作业的删除重复选项。 - None:不对作用进行重复删除。
- PerItem:确保只有一个活动作业针对同一项和作业类型运行。
- PerUser:确保对于相同的用户和项目,只有一个活动作业运行。
ScheduledJobDeduplicateOptions 设置按需项目作业的删除重复选项。 - None:不对作用进行重复删除。
- PerItem:确保只有一个活动作业针对同一项和作业类型运行。
- PerUser:确保对于相同的用户和项目,只有一个活动作业运行。
ItemJobTypes 具有指定属性的作业类型列表。 - Name:作业类型的名称,由可完全由 ISV 自定义。

步骤 2:实现作业工作负荷 API

若要与作业集成,工作负荷必须实现 Swagger 规范中定义的作业 API。

有三个与作业相关的 API:


1.启动作业实例

终结点: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

调用此 API 以启动作业的执行。

  • 响应:API 应返回“202 Accepted”状态,表明系统已成功计划该作业。

2.获取作业实例状态

终结点: GET /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

Fabric 使用轮询机制来跟踪作业实例状态。 在作业实例进行过程中,每分钟都会调用此 API 来检查其状态。 一旦作业完成,无论是成功还是失败,轮询都会停止。

  • 响应:API 应返回“200 OK”状态以及当前作业实例状态。 如果作业已失败,则响应应包括作业状态、开始和结束时间以及错误详细信息。

    支持的作业状态:

    • NotStarted
    • InProgress
    • Completed
    • Failed
    • Cancelled

    重要提示:即使作业已失败,此 API 仍应返回“200 OK”状态和“Failed”作业状态。


3.取消作业实例

终结点: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}/cancel

调用此 API 以取消正在进行的作业实例。

  • 响应:API 应返回“200 OK”状态以及当前作业实例状态。 如果作业已失败,则响应应包括作业状态、开始和结束时间以及错误详细信息。

其他信息

作业死信计数:如果作业未在 2 小时内开始,Fabric 平台就会将该作业标记为“死信”。

示例实现

有关这些 API 的示例实现,请参阅 Microsoft Fabric 工作负荷开发示例存储库中的 JobsControllerImpl.cs

前端

如何在 Fabric UI 中运行作业

将作业集成到后端中的项后,用户即可开始运行作业。 可通过两种方法在 Fabric 中运行作业:

  • 无人参与的计划作业:由用户定义,使用共享 Fabric 计划程序体验定期运行。
  • 按需将工作负载 UI 与扩展客户端 SDK 结合使用:

UI 中的 Fabric 计划程序体验

  • 入口点:

    • 上下文菜单 -> 计划

      屏幕截图显示了 Fabric 计划程序菜单中的“计划”选项。

      • 使用 workloadClient.itemSettings.open,其中所选设置 ID 为“计划”。
  • Layout

    屏幕截图显示了 Fabric 计划程序设置。

    1. 上次成功刷新时间和下一次刷新时间
    2. 刷新按钮
    3. 项目计划设置

载入

步骤 1:添加计划上下文菜单项

为了在项目上下文菜单中显示计划按钮,需要在项目前端清单的“contextMenuItems”属性中添加一个新条目:

{
    "name": "schedule"
}

步骤 2:添加项目计划设置

向前端清单中的项目设置属性添加新的“计划”项目。

"schedule": {
    "itemJobType": "ScheduledJob",
    "refreshType": "Refresh"
}
  • itemJobType:项目作业定义 XML 文件中定义的项目作业类型。
  • refreshType:指定刷新按钮的显示。 有三种类型:使用“刷新”和“运行”以启用刷新按钮和显示名称,将“None”设置为禁用刷新按钮。

作业 JavaScript API

除了无人参与的计划作业之外,工作负载还可以按需运行作业,甚至可以按需启动计划作业。 我们提供了一组 API 作为扩展客户端的一部分:

  • 计划作业 API:

    • getItemScheduledJobs(objectId: string): Promise<ItemSchedule>
    • createItemScheduledJobs(createItemScheduledJobs: CreateItemScheduleParams): Promise<ItemSchedule>
    • updateItemScheduledJobs(updateItemScheduleParams: UpdateItemScheduleParams): Promise<ItemSchedule>
  • 特定作业实例 API:

    • runItemJob(jobParams: RunItemJobParams): Promise<ItemJobInstance>
    • cancelItemJob(jobParams: CancelItemJobParams): Promise<CancelItemJobResult>
    • getItemJobHistory(getHistoryParams: GetItemJobHistoryParams): Promise<ItemJobHistory>

注意

getItemJobHistory 返回具有当前存储在 Fabric 中的状态的作业。 由于我们当前只依赖于轮询,请注意,状态可能不是最新的。 如果需要 UI 尽快反映最准确的状态,我们建议直接从后端获取状态。

与监视中心集成

数据准备就绪后,项目作业会自动显示在监视中心。 下一步是将项目类型添加到筛选器窗格,然后配置并实现用户可以针对作业执行的可用操作。

在监视中心筛选器窗格中启用项目

要将项目添加到筛选器窗格,请在项目前端清单中定义一个新属性:“supportedInMonitoringHub:true”。

与作业集成快速操作

屏幕截图显示了监视中心中的作业快速操作按钮。

用户可以对作业执行一组操作,例如取消、重试和获取详细信息。

工作负载团队会通过在项目前端清单中设置 itemJobConfig 属性来决定要启用哪些属性。 如果未设置,则图标将不可见。

例如,我们添加到支持所有作业操作的示例项目的配置如下所示。

当用户选择示例项目作业的取消图标时,我们将使用扩展“Fabric.WorkloadSample”的作业相关上下文调用提供的操作“item.job.cancel”,该操作由工作负载实施以实际取消作业。

Fabric 平台还要求此操作作出响应,以通知用户结果。

"itemJobActionConfig": {
    "registeredActions": {
        "detail": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.detail"
        },
        "cancel": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.cancel"
        },
        "retry": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.retry"
        }
    }
}

“作业详细信息”窗格

屏幕截图显示了监视中心的作业详细内容窗格。

当工作负载团队注册操作以获取详细信息时,Fabric 需要工作负荷操作以特定格式返回数据,以便 Fabric 可以在侧面板中显示该信息。

目前,支持纯文本或超链接中的键值对。

  • 有关处理作业操作的示例,请参阅可以在示例存储库中找到的 index.worker.ts,并搜索以“item.job”开头的操作。

最近的运行

除了在监视中心查看作业之外,Fabric 还提供共享用户体验来显示特定项目的最近运行次数。

入口点:

  • “上下文”菜单>“最近运行次数”

    选项菜单中最新运行选项的屏幕截图。

  • 使用 workloadClient.itemRecentRuns.open

载入

步骤 1:添加 recentRuns 上下文菜单项

为了在项目菜单中显示“最近运行次数”按钮,请在项目前端清单中的“contextMenuItems”属性中添加一个新条目,如下所示:

{
    "name": "recentruns"
}

步骤 2:添加项目 recentRun 计划设置

向前端清单中的项目设置属性添加新的 recentRun 条目。

"recentRun": {
     "useRecentRunsComponent": true,
}

示例项目功能区中的作业集成

作为 UI 工作负载示例的一部分,我们在专用于作业的项目功能区中增加了一个部分。

屏幕截图显示了 Fabric UI 中的项目选项卡。

有关此功能区实现方式的示例,请参阅可以在示例存储库中找到的 ItemTabToolbar.tsx。