Partilhar via


Como mostrar o progresso da operação numa extensão do portal de gestão de pacotes Azure Windows

 

Aplica-se a: Windows Azure Pack

Se uma operação iniciada pelo utilizador demorar algum tempo a ser processada, recomenda-se que utilize a ProgressOperation para não bloquear a interface de utilizador do portal de gestão, mas ainda assim permitir que o utilizador veja que a operação está em curso. A ProgressOperation tem várias opções para que possa manter o utilizador informado sobre a operação. Cada uma destas opções pode ser utilizada independentemente uma da outra.

As operações de progresso podem ser determinantes. Pode dizer-se como a operação é completa, por exemplo, a operação pode reportar o valor total por cento. Alternativamente, podem ser indeterminados. Sabe que a operação está ou não completa, mas não o quão perto está de qualquer estado.

ProgressOperation tem uma propriedade indeterminada que indica ao utilizador que existe, ou não, vai ser reportado progresso para a conclusão.

Uma operação pode ser constituída por uma sequência de passos individuais, cada um dos quais pode ter sucesso ou falhar. Quando ocorrerem falhas, qualquer novo progresso na operação é interrompido. Quando as operações têm passos, aparece um botão Detalhes :

Windows Azure Pack Portal Step Details Selection

Clicar nele revela os passos individuais, com estados individuais como sucesso, falha ou aviso: Consulte os métodos addStep /removeStep no ProgressOperation para obter mais detalhes.

Windows Azure Pack Portal Operataion Steps

Um exemplo de uma operação de progresso está contido na amostra de um Assistente. A função ''s onComplete' do assistente configura uma operação de progresso para mostrar quando a operação do servidor termina.

Para mostrar progresso para uma operação dentro de um feiticeiro

  1. Utilize o seguinte código para mostrar o progresso dentro de um Assistente.

    cdm.stepWizard({
        extension: "DomainTenantExtension",
        steps: [{
          template: "createStep1",
          data: data,
          // Called when the step is first created
          onStepCreated: function () {
            wizard = this;
          },
          // Called each time the step is displayed
          onStepActivate: step1Activate,
          // Called before the wizard moves to the next step
          onNextStep: function () {
            return Shell.UI.Validation.validateContainer("#dm-create-step1");
          }
        }],
        // Called when the user clicks the "Finish" button on the last step
        onComplete: function () {
          var newPassword, newResellerPortalUrl;
          newPassword = $("#dm-password").val();
          newResellerPortalUrl = registerReseller ? $("#dm-portalUrl").val() : null;
          // Call whatever backend function we need to. In our example, it returns a promise
          promise = callback(newPassword, newResellerPortalUrl);
    
          // Create a new Progress Operation object
          var progressOperation = new Shell.UI.ProgressOperation(
            // Title of operation
            "Registering endpoint...",
            // Initial status. null = default
            null,
            // Is indeterministic? (Does it NOT provide a % complete)
            true);
    
          // This adds the progress operation we set up earlier to the visible list of PrOp's
          Shell.UI.ProgressOperations.add(progressOperation);
    
          promise
            .done(function() {
               // When the operation succeeds, complete the progress operation
               progressOperation.complete(
                 "Successfully registered the endpoint.",
                 Shell.UI.InteractionSeverity.information);
               })
            .fail(function() {
               // When the operation fails, complete the progress operation
               progressOperation.complete(
                 "Failed to register the endpoint.",
                 Shell.UI.InteractionSeverity.error,
                 Shell.UI.InteractionBehavior.ok);
            });
        }
      },
      {
        // Other supported sized include large, medium & small
        size: "mediumplus" 
      });
    

Consulte também

Executar tarefas comuns numa extensão do portal de gestão de pacotes Azure Windows