创建自定义表单时,可以添加可供用户从搜索结果列表中选择值的元素。用户通过使用值选择器选择单个值。使用多值选择器,用户选择一个或多个值。

值选择器和多值选择器与在自定义表单“外观”选项卡上定义的“引用类型”配合使用。引用类型为 vRealize Orchestrator 资源。例如,AD:UserGroup 或 VC:Datastore。通过定义引用类型,当用户输入搜索字符串时,结果仅限于具有匹配参数的资源。

对于选择器,可以通过配置外部源再进一步限制可能的值。

使用值选择器

当用户请求目录中的项目时,值选择器会在表单中显示为搜索选项。用户输入字符串后,该选择器会基于对其所做的配置提供列表。

请求表单中的值选择器,其中包含列表、单选对话框和表单中选定值的示例。

您可以基于以下用例使用选择器。值选择器最有价值的应用是与外部源值搭配使用。

  • 值选择器与常数值源。

    如果您希望请求用户从预定义的静态值列表中选择,请使用此方法。与组合框、下拉菜单、多选和单选组元素类似,此方法基于定义的常数值和标签在列表中提供搜索结果。

  • 值选择器没有定义的值源。

    如果您希望请求用户在 vRealize Orchestrator 清单中搜索具有已配置引用类型的特定对象,请使用此方法。例如,引用类型为 VC:Datastore,您希望用户从检索到的列表中选择数据存储。

  • 值选择器与外部值源。

    如果您希望请求用户从基于 vRealize Orchestrator 操作的结果中选择,请使用此方法。对于基于外部源的值选择器,操作必须返回属性数组,而非字符串数组。以下脚本提供了一个使用值选择器的基本 vRealize Orchestrator 操作示例。

    var res = [];
    res.push(new Properties({id: 'id1',label: 'label1'}));
    res.push(new Properties({id: 'id2',label: 'label2'}));
    res.push(new Properties ({id: 'id3',label: 'label3'}));
    return res;

使用多值选择器

多值选择器在请求表单中显示为搜索选项,类似于值选择器,但可以在其中选择一个或多个值。用户输入字符串后,该选择器会基于对元素属性所做的配置提供列表。

请求表单中的多值选择器,其中包含列表、多选对话框和表单中选定值的示例。

除了针对值选择器所述的用例之外,还可以基于以下用例使用多值选择器。多值选择器最有价值的应用是与引用数据类型和 vRealize Orchestrator 引用搭配使用。

  • 多值选择器与复合数据类型和常量值源。

    如果您希望请求用户从预定义的静态值列表中选择一个或多个值,请使用此方法。与数据网格类似,此方法在基于定义的常量值和标签的列表中提供搜索结果。

  • 多值选择器与复合数据类型和外部源。

    如果您希望请求用户从基于 vRealize Orchestrator 操作的值列表中选择一个或多个值,请使用此方法。可以将此方法与 vRealize Orchestrator 复合类型配合使用。

  • 多值选择器与引用数据类型和 vRealize Orchestrator 引用类型。如果您希望请求用户在 vRealize Orchestrator 清单中搜索具有已配置引用类型的特定对象,请使用此方法。例如,引用类型为 VC:Datastore,您希望用户从检索到的列表中选择数据存储。或者,如果配置了工作流筛选器,可以使用工作流作为引用。要检索筛选器,筛选器必须返回属性数组中的值,而不是字符串数组。下一部分提供了工作流筛选器示例。在此示例中,当用户输入搜索词时,筛选在 UI 中完成。
  • 多值选择器与引用数据类型、vRealize Orchestrator 引用类型和外部源。

    如果您希望请求用户从先按引用类型筛选再基于 vRealize Orchestrator 操作的结果中选择,请使用此方法。这种组合更为彻底地细化结果并更快地填充请求表单。正如引用类型结果必须返回属性数组一样,外部源操作也必须返回属性数组。在此示例中,筛选在 vRealize Orchestrator 中完成,可能会提高列表的填充速度,特别是具有大量 vRealize Orchestrator 操作时。

限制多值选择器元素结果列表的 vRealize Orchestrator 结果

要限制用户搜索操作时返回的操作数量,可以创建筛选器操作并将筛选器结果绑定到搜索词。

  1. vRealize Orchestrator 中,创建名为 filterWorkflow 的操作。
    1. 选择 > 操作,然后单击新建操作
    2. 常规选项卡上,输入或选择以下值。
      选项
      名称 filterWorkflow
      模块 com.vmware.library.workflow
    3. 单击脚本选项卡,然后添加以下脚本。
      var workflows = System.getModule("com.vmware.library.workflow").getAllWorkflows();
      
      var result = [];
      
      for(var i = 0; i < workflows.length; i++) {
          if(workflows[i].name.indexOf(searchTerm) !== -1) {
              result.push(workflows[i]);
          }
      }
      
      return result;
      
    4. 配置以下属性。
      vRealize Orchestrator 操作屏幕截图,其中包含上一步中的示例脚本和此步骤中提供的属性配置。
      属性选项
      返回类型 输入 Workflow 并选中数组

      可以在运行搜索时使用任何返回的类型。在自定义表单中选择的引用类型必须与其匹配。

      对于此过程,继续使用工作流。

      输入 输入 searchTerm

      请注意,输入 searchTerm 与脚本中使用的字符串相匹配。

    5. 单击创建
  2. Service Broker 的自定义表单设计器中配置多值选择器属性。
    组合屏幕截图,其中显示了“引用”数据类型和“Workflow”引用类型以及“值”选项卡。“值”选项卡显示了外部源以及操作和字段绑定。
    1. Service Broker 中,选择内容和策略 > 内容,然后单击要修改的模板左侧的垂直点,并单击自定义表单
    2. 在设计画布中添加或选择多值选择器元素。
    3. 在“属性”窗格中,单击外观并配置以下值。
      属性
      数据类型 参考
      引用类型 输入 Workflow

      请注意,此值是在 vRealize Orchestrator 中为 filterWorkflow 操作选择的返回类型,必须是数组。

      显示类型 多值选择器
    4. 单击选项卡,然后配置以下值。
      属性
      值选项 > 值源 外部源
      选择操作 选择筛选器操作。在此示例中,选择 filterWorkflows
      操作输入 searchTerm 选择 FieldSearch term
  3. 通过请求目录项测试筛选器。

    您必须确保筛选器在多值选择器列表中返回预期值,并且目录项正确部署。