如何在Windows Azure Pack 管理入口網站延伸模組中顯示作業進度
適用于:Windows Azure Pack
如果使用者起始的作業需要一段時間來處理,建議您使用 ProgressOperation 來封鎖管理入口網站使用者介面,但仍允許使用者查看作業正在進行中。 ProgressOperation 有數個選項可讓您讓使用者知道作業。 每個選項都可以彼此獨立使用。
進度作業可以 決定。 您可以告訴作業完成程度,例如,作業可以報告完成百分比值。 或者,它們可以 不確定。 您知道作業已完成或未完成,但與任一狀態的關閉程度不相同。
ProgressOperation 有一個不確定的屬性,提示使用者有或沒有,即將回報完成的進度。
作業可能是由一連串個別步驟所組成,每個步驟都可能會成功或失敗。 發生失敗時,作業中的任何進一步進度都會停止。當作業有步驟時,會出現 [詳細資料 ] 按鈕:
按一下它會顯示個別步驟,並顯示個別狀態,例如成功、失敗或警告:如需詳細資訊,請參閱 ProgressOperation 中的 addStep / removeStep 方法。
進度作業的範例包含在顯示精靈範例的 內。 精靈的 onComplete 函式會設定進度作業,以顯示伺服器作業完成的時間。
顯示精靈內作業的進度
使用下列程式碼在精靈中顯示進度。
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" });