如何在Polarion中检索枚举及枚举选项的全部信息(含描述)?
如何在Polarion中检索枚举及枚举选项的全部信息(含描述)?
我完全懂你现在的困扰——试了好几种方法,要么拿到的不是枚举本身的选项,要么只能获取那些已经被工作项使用过的枚举选项描述。其实要拿到枚举的所有选项(包括每个选项的描述)是有正确路径的,咱们来一步步解决:
正确的实现方式:结合CustomFieldsService与Enumeration工厂
你之前尝试过CustomFieldsService但没往下深挖,其实可以通过它拿到自定义字段绑定的枚举ID,再用这个ID去获取完整的枚举对象,这样就能拿到所有选项的信息了。
这里给你一段可直接复用的Velocity代码示例:
#set($projectId = $page.getReference().projectId()) #set($contextId = $trackerService.getContextId($projectId)) #set($customFieldsService = $trackerService.getDataService().getCustomFieldsService()) # 先获取目标自定义字段 #set($customField = $customFieldsService.getCustomField("myEnum", "WorkItem", $contextId)) # 拿到该字段绑定的枚举ID #set($enumId = $customField.getEnumerationId()) # 获取对应类型的枚举工厂(WorkItem类型的枚举用@WorkItems) #set($enumFactory = $trackerService.getDataService().getEnumerationObjectFactories().get("@WorkItems")) # 通过枚举ID和项目上下文获取完整的枚举对象 #set($enumeration = $enumFactory.getEnumeration($enumId, $contextId)) # 遍历输出所有枚举选项的信息 #foreach($option in $enumeration.getAllOptions()) - 选项ID:`$option.getId()`,显示名称:`$option.getName()`,描述:`$option.getDescription()` #end
为什么之前的方法没生效?
- 你直接硬编码
"processes-enum.xml"去获取枚举,这种方式容易拿错对象(比如拿到了关联的应用实例而非枚举本身),而通过自定义字段动态获取枚举ID才是通用且准确的方式。 - 你通过工作项自定义字段获取描述的方式,只能拿到该工作项已选中的选项,自然看不到未被使用的枚举选项。
小提示
如果是系统级全局枚举,可以把contextId换成全局上下文ID;如果是项目级自定义枚举,一定要用对应项目的contextId,否则可能获取不到正确的枚举定义。
备注:内容来源于stack exchange,提问作者christof
相关产品推荐
相关产品推荐

