自訂 Service Broker 請求表單時,您可以將部分欄位的行為設為以 vRealize Orchestrator 動作的結果為基礎。

有數種方法可供您使用 vRealize Orchestrator 動作。您可以執行從第三方來源提取資料的動作,也可以使用指令碼定義大小與成本。

第一個範例是以手動新增的欄位為基礎,以便您瞭解基礎程序。第二個範例使用相同的基礎,但是依賴於範本欄位。

第三個範例以新增到目錄請求表單中的自訂選項為基礎,即使用者根據自訂 vRealize Orchestrator 動作的結果選取資料夾。

第四個範例使用 vRealize Orchestrator 工作流程屬性自訂請求表單中的欄位。

除了下列範例以外,VMware Cloud Management 部落格中還提供其他範例。

做為手動新增欄位的大小與成本範例

在此使用案例中,您想要目錄使用者選取虛擬機器大小,並顯示該機器的每日成本。若要執行此範例,請將 vRealize Orchestrator 指令碼與大小和成本相關聯。然後,將大小欄位和成本欄位新增至範本自訂表單。大小欄位決定了成本欄位中顯示的值。

  1. vRealize Orchestrator 中,設定名為 getWindows10Cost 的動作。
    vRealize Orchestrator 動作及大小與成本範例
  2. 新增指令碼。

    您可以使用下列範例指令碼。

    var cost = "Unknown";
    
    switch(deploymentSize) {
    	case 'small' : cost = "$15";break;
    	case 'medium' : cost = "$25";break;
    	case 'large' : cost = "$45";break ;
    	
    	default : break ;
    }
    
    return cost;
  3. 新增 deploymentSize 做為輸入字串。
  4. Service Broker 中,將大小欄位新增至範本自訂表單並進行設定。

    將大小欄位設定為下拉式元素,包括 [小型]、[中型] 和 [大型] 值。

    自訂表單中填入的大小欄位值。

    索引標籤上,設定下列內容值。

    • 預設值 = 大型
    • 值選項
      • 值來源 = 常數
      • 值定義 = small|Small,medium|Medium,large|Large
  5. 新增成本欄位作為文字欄位,以根據大小欄位中選取的值,顯示 vRealize Orchestrator 動作中定義的成本。
    自訂表單中填入的成本欄位值。

    索引標籤上,設定下列內容值。

    • 預設值 = 外部來源
    • 選取動作 = <您的 vRealize Orchestrator 動作資料夾>/getWindows10Cost
    • 動作輸入
      • deploymentSize。此值已在動作中設定為輸入。
      • 欄位
      • 大小。這是您先前建立的欄位。
  6. 啟用自訂表單並儲存。
  7. 若要確認其是否正常運作,則請求目錄中的項目。您應該會看到根據選取的大小值填入的成本欄位。
    在目錄中填入的範例

基於架構元素的成本範例

在此使用案例中,您想要目錄使用者每日根據範本中的類型模板內容來查看該機器的成本。若要執行此範例,請使用上一個範例中的 vRealize Orchestrator 指令碼。但是在此使用案例中,成本是以您的使用者請求 Service Broker 目錄項目時在自訂表單中所選的類型模板大小為基礎。

簡單的範例範本包括大小輸入欄位,使用者可在其中選取類型模板內容。
範本中類型模板對應輸入的範例
在此範例中,自訂表單會使用名為 Select machine size 的欄位。
自訂表單設計工具中的值選項
成本 deploymentSize 輸入取決於 [選取機器大小] 欄位。
取決於目錄請求中架構大小欄位的成本

以自訂動作範例為基礎的目的地資料夾

在此使用案例中,您希望目錄使用者在將機器從一個資料夾移至另一個資料夾時,從可供他們使用的資料夾中進行選取。若要執行此範例,需要在 vRealize Orchestrator 中建立一個自訂動作,以傳回可供從目錄請求動作的使用者使用的資料夾。然後,在目錄請求表單中自訂目的地資料夾欄位。

在目錄中,此範例使用的將虛擬機器移至資料夾工作流程將顯示為在 Cloud Assembly 中建立的自訂資源動作。

  1. vRealize Orchestrator 中,建立名為 getFolderForUser 的動作。
    1. 指令碼索引標籤上,新增動作輸入,選取輸出的傳回類型,並新增指令碼。

      您可以使用下列範例指令碼。

      var parentTargetDirName = "users";
      var sdkConnection = VcPlugin.findSdkConnectionForUUID(vcUuid);
      var rootFolder = sdkConnection.getAllVmFolders(null, "xpath:matches(name,'" + parentTargetDirName + "')")[0];
      var result = new Array();
      for each(var folder in rootFolder.childEntity) {
          if (folder instanceof VcFolder && folder.permission.length > 0) {
              var entityPrivilege = sdkConnection.authorizationManager.hasUserPrivilegeOnEntities([folder], username, ["System.Read"])[0];
              if (entityPrivilege.privAvailability[0].isGranted) {
                  result.push(folder);
              }
          }
      }
      return result;
    2. 完成動作編輯後,按一下儲存
  2. Cloud Assembly 中,建立名為 ChangeFolder 的自訂資源動作。
    1. 選取 Cloud.vSphere.Machine 資源類型。
    2. 選取將虛擬機器移至資料夾工作流程。
  3. 自訂使用者在請求動作時看到的請求表單。
    1. 開啟 ChangeFolder 動作。
    2. 按一下編輯請求參數
    3. 自訂向使用者顯示目的地資料夾欄位的方式。
      值選項 範例值
      值來源 外部來源
      選取動作 getFolderForUser
      動作輸入

      username Field

      按一下選取字串 > 請求資訊欄位 > 請求者

      按一下選取

      動作輸入

      vcUuid

      按一下選取字串 > 請求資訊欄位 > 資源內容 > vCenter UUID

      按一下選取

    4. 按一下儲存

當使用者請求目錄中的動作時,可以從可供其使用的資料夾中為虛擬機器選取目的地資料夾。

以工作流程屬性為基礎的主機名稱範例

在此使用案例中,您希望使用 vRealize Orchestrator 工作流程屬性自訂請求表單中的 URL 欄位。若要執行此範例,需要具有屬性或變數 (具有常數值或繫結到組態元素) 的 vRealize Orchestrator 工作流程。屬性或變數必須設定初始值,因為會在執行工作流程之前完成繫結。
  1. vRealize Orchestrator 中,建立或複製現有工作流程。例如,複製新增 REST 主機工作流程。
    1. 變數索引標籤上,新增變數並將其繫結到組態元素。
      值選項 範例值
      名稱 hostname
      類型 string
      組態 啟用繫結到組態選項。

      組態文字方塊中,選取要將變數繫結到的組態。例如,選取自訂 vRO 組態: 主機名稱元素。

    2. 儲存工作流程。
  2. Service Broker 中匯入工作流程。
  3. 自訂請求表單。
    1. 按一下表單設計工具中的 URL 元素。
    2. 索引標籤上,將值來源設定為繫結欄位
    3. 按一下值欄位 > 請求資訊欄位
    4. 選取 hostname 變數或任意可用的工作流程屬性。
  4. 儲存並啟用表單。

使用者從目錄請求工作流程時,將根據 hostname 變數填入 URL 欄位。

如果切換到其他專案,則會重新計算工作流程屬性,因為工作流程可能來自不同的 vRealize Orchestrator 整合。