Configurar o hub de monitoramento de malha
O hub de monitoramento no Microsoft Fabric Workload Development Kit é o centro de monitoramento centralizado. O hub de monitoramento foi projetado para que os usuários do Fabric rastreiem trabalhos em segundo plano do item. Para obter mais informações, consulte Usar o hub de monitoramento.
Back-end
Esta seção descreve como configurar uma implementação de back-end para o hub de monitoramento.
Definir a JobScheduler
propriedade no manifesto do item
Para habilitar o suporte a trabalhos, o item deve especificar os tipos de trabalhos suportados. Adicione a JobScheduler
propriedade ao arquivo de manifesto do item. A JobScheduler
propriedade permite trabalhos gerenciados por malha para seus itens.
A tabela a seguir fornece uma visão geral das propriedades de definição suportadas JobScheduler
:
Property | Description | Valores possíveis |
---|---|---|
OnDemandJobDeduplicateOptions |
Define a opção de desduplicação para trabalhos de item sob demanda. | - None : Não desduplice o trabalho. - PerArtifact : Certifique-se de que há apenas uma execução de trabalho ativa para o mesmo item e tipo de trabalho. - PerUser : Certifique-se de que há apenas um trabalho ativo executado para o mesmo usuário e item. |
ScheduledJobDeduplicateOptions |
Define a opção de desduplicação para trabalhos de item sob demanda. | - None : Não desduplice o trabalho. - PerArtifact : Certifique-se de que há apenas uma execução de trabalho ativa para o mesmo item e tipo de trabalho. - PerUser : Certifique-se de que há apenas um trabalho ativo executado para o mesmo usuário e item. |
ItemJobTypes |
Uma lista de tipos de trabalho com as propriedades especificadas. | - Name : O nome do tipo de trabalho, que é totalmente personalizável pelo fornecedor independente de software (ISV). |
Implementar APIs de carga de trabalho
Para integrar com trabalhos, uma carga de trabalho deve implementar as APIs de trabalhos conforme definido na especificação Swagger.
Três APIs de malha estão relacionadas a trabalhos:
Iniciar a instância de trabalho
Ponto final: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}
Essa API é chamada para iniciar a execução de um trabalho.
- Resposta: A API deve retornar um
202 Accepted
status, indicando que o trabalho foi agendado com êxito pelo sistema.
Obter o estado da instância de trabalho
Ponto final: GET /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}
A malha usa um mecanismo de sondagem para acompanhar o status da instância de trabalho. Essa API é chamada a cada minuto enquanto a instância de trabalho está em andamento para verificar seu status. A sondagem para quando o trabalho é concluído, seja com êxito ou devido a falha.
Resposta: A API deve retornar um
200 OK
status junto com o estado atual da instância de trabalho. A resposta deve incluir o status do trabalho, as horas de início e término e detalhes do erro se o trabalho falhar.Status do trabalho suportado:
NotStarted
InProgress
Completed
Failed
Cancelled
Importante: Mesmo que o trabalho falhe, essa API deve retornar um
200 OK
status e um status deFailed
trabalho.
Cancelar uma instância de trabalho
Ponto final: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}/cancel
Chame essa API para cancelar uma instância de trabalho em andamento.
- Resposta: A API deve retornar um
200 OK
status junto com o estado atual da instância de trabalho. A resposta deve incluir o status do trabalho, as horas de início e término e detalhes do erro se o trabalho falhar.
Mais informações
Contagem de cartas mortas do trabalho:
Um trabalho é marcado como "letra morta" pela plataforma Fabric se não começar dentro de 2 horas.
Exemplo de implementação
Para obter um exemplo de implementação dessas APIs, consulte JobsControllerImpl.cs no repositório de exemplos.
Front-end
Esta seção descreve como configurar uma implementação de frontend para o hub de monitoramento.
Executar um trabalho na interface do usuário do Fabric
Depois de integrar trabalhos em seus itens no back-end, os usuários podem começar a executar trabalhos.
Os usuários têm duas opções para executar trabalhos na malha:
- Um trabalho agendado sem supervisão. Essa opção é definida pelo usuário para ser executada em intervalos regulares por meio de uma experiência compartilhada do agendador de malha.
- Sob demanda usando a interface do usuário da carga de trabalho com e o SDK do cliente de extensão.
Experiência do agendador de malha da interface do usuário
Opções de ponto de entrada:
Use a agenda do menu de contexto.
Use
workloadClient.itemSettings.open
, onde o ID de configurações selecionado éSchedule
.
Esquema
- O último tempo de atualização bem-sucedido e o próximo tempo de atualização.
- O botão Atualizar .
- As configurações de agendamento de itens.
Inclusão
Etapa 1: adicionar um item de menu de contexto da agenda
Para mostrar o botão Agendar no menu de contexto do item, adicione uma nova entrada à contextMenuItems
propriedade no manifesto de front-end do item:
{
"name": "schedule"
}
Etapa 2: adicionar configurações de agendamento de item
Adicione uma nova schedule
entrada à propriedade de configurações do item no manifesto do frontend:
"schedule": {
"itemJobType": "ScheduledJob",
"refreshType": "Refresh"
}
itemJobType
: O tipo de trabalho de item definido no arquivo XML de definição de trabalho de item.refreshType
: Especifica a exibição do botão Atualizar . Escolha entre três opções: UsarRefresh
eRun
ativar o botão Atualizar e o nome para exibição ou definirNone
para desabilitar o botão Atualizar .
Trabalhos JavaScript APIs
Além de trabalhos agendados autônomos, uma carga de trabalho pode executar um trabalho sob demanda ou até mesmo iniciar um trabalho agendado sob demanda. Fornecemos um conjunto de APIs como parte do nosso cliente de extensão:
APIs de trabalhos agendados:
getItemScheduledJobs(objectId: string): Promise<ItemSchedule>
createItemScheduledJobs(createItemScheduledJobs: CreateItemScheduleParams): Promise<ItemSchedule>
updateItemScheduledJobs(updateItemScheduleParams: UpdateItemScheduleParams): Promise<ItemSchedule>
APIs de instância de trabalho específicas:
runItemJob(jobParams: RunItemJobParams): Promise<ItemJobInstance>
cancelItemJob(jobParams: CancelItemJobParams): Promise<CancelItemJobResult>
getItemJobHistory(getHistoryParams: GetItemJobHistoryParams): Promise<ItemJobHistory>
Nota
getItemJobHistory
retorna o trabalho com o status atualmente armazenado na malha. Como o Fabric atualmente depende apenas de sondagens, esteja ciente de que o status pode não ser o mais atualizado. Se você precisar que sua interface do usuário reflita o status mais preciso o mais rápido possível, recomendamos que você obtenha o status diretamente do back-end.
Integração com o hub de monitoramento
Quando os dados estiverem prontos, os trabalhos de item aparecerão automaticamente no hub de monitoramento. A próxima etapa é adicionar o tipo de item ao painel de filtro e configurar e implementar as ações disponíveis que um usuário pode executar em relação aos trabalhos.
Habilite seu item no painel de filtro do hub de monitoramento
Para adicionar seu item ao painel de filtro, defina uma nova propriedade no manifesto de front-end do item e defina supportedInMonitoringHub
como true
.
Integre com ações rápidas de trabalho
Um usuário pode executar um conjunto de operações em relação a um trabalho, incluindo cancelar, repetir e obter detalhes.
A equipe de carga de trabalho decide qual deseja habilitar definindo a itemJobConfig
propriedade no manifesto de front-end do item. Se não estiver definido, o ícone não estará visível.
Por exemplo, a configuração que adicionamos ao nosso item de exemplo que suporta todas as ações de trabalho aparece posteriormente nesta seção.
Quando um usuário seleciona o ícone Cancelar do trabalho de item de exemplo, chamamos a ação item.job.cancel
fornecida . O contexto relacionado ao trabalho para a extensão Fabric.WorkloadSample
é implementado pela carga de trabalho para realmente cancelar o trabalho.
A plataforma Fabric também espera uma resposta dessa ação para notificar o usuário com os resultados.
"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"
}
}
}
Painel Detalhes do Trabalho
Quando a equipe de carga de trabalho registra a ação para obter informações detalhadas, o Fabric espera que a ação de carga de trabalho retorne os dados em um formato específico para que o Fabric possa exibir essas informações no painel lateral.
Atualmente, há suporte para pares chave/valor em texto sem formatação ou hiperlink.
- Para obter um exemplo de manipulação das ações de trabalho, consulte index.worker.ts no repositório de exemplo. No arquivo, procure ações que comecem com
item.job
.
Recent runs
Além de exibir o status do trabalho no hub de monitoramento, o Fabric oferece uma experiência de usuário compartilhada para exibir as execuções recentes de um item específico.
Pontos de entrada:
Menu>de contexto Execuções recentes
O
workloadClient.itemRecentRuns.open
.
Inclusão
Etapa 1: Adicionar recentRuns
item de menu de contexto
Para mostrar o botão Execuções recentes no menu de itens, adicione uma nova entrada à contextMenuItems
propriedade no manifesto de front-end do item.
Exemplo:
{
"name": "recentruns"
}
Etapa 2: adicionar configurações de item recentRun
Adicione uma nova recentRun
entrada à propriedade de configurações do item no manifesto do frontend.
Exemplo:
"recentRun": {
"useRecentRunsComponent": true,
}
Integração de trabalhos na faixa de opções do item de exemplo
Como parte de nosso exemplo de carga de trabalho da interface do usuário, adicionamos uma seção dedicada a trabalhos à faixa de opções de itens.
Para obter um exemplo de como essa faixa de opções foi implementada, consulte ItemTabToolbar.tsx no repositório de exemplo.