共用方式為


如何在Windows Azure Pack 管理入口網站延伸模組中顯示作業進度

 

適用于:Windows Azure Pack

如果使用者起始的作業需要一段時間來處理,建議您使用 ProgressOperation 來封鎖管理入口網站使用者介面,但仍允許使用者查看作業正在進行中。 ProgressOperation 有數個選項可讓您讓使用者知道作業。 每個選項都可以彼此獨立使用。

進度作業可以 決定。 您可以告訴作業完成程度,例如,作業可以報告完成百分比值。 或者,它們可以 不確定。 您知道作業已完成或未完成,但與任一狀態的關閉程度不相同。

ProgressOperation 有一個不確定的屬性,提示使用者有或沒有,即將回報完成的進度。

作業可能是由一連串個別步驟所組成,每個步驟都可能會成功或失敗。 發生失敗時,作業中的任何進一步進度都會停止。當作業有步驟時,會出現 [詳細資料 ] 按鈕:

Windows Azure Pack Portal Step Details Selection

按一下它會顯示個別步驟,並顯示個別狀態,例如成功、失敗或警告:如需詳細資訊,請參閱 ProgressOperation 中的 addStep / removeStep 方法。

Windows Azure Pack Portal Operataion Steps

進度作業的範例包含在顯示精靈範例的 內。 精靈的 onComplete 函式會設定進度作業,以顯示伺服器作業完成的時間。

顯示精靈內作業的進度

  1. 使用下列程式碼在精靈中顯示進度。

    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" 
      });
    

另請參閱

在Windows Azure Pack 管理入口網站擴充功能中執行一般工作