如何在PolicyCenter中通过DesktopJobFiltersEnhancement添加自定义Expire Soon过滤器
Guidewire PolicyCenter桌面端任务自定义过滤器实现方案
需求背景
在PolicyCenter桌面端,默认任务过滤器包含“所有未结任务”“Created in Past 7 Days”等,但需新增名为Expire Soon的自定义过滤器,筛选规则为:当前用户分配的、满足Job.CreateTime + ExpirationThresoldNumber - 10 ≤ 今日的所有任务(其中ExpirationThresoldNumber为任务的自定义整数字段)。
问题解答
1. 如何添加“Expire Soon”自定义过滤器?
需通过以下步骤实现:
- 扩展
DesktopJobFiltersEnhancement类,重写getCustomFilters方法添加自定义过滤器实例 - 实现过滤器的筛选逻辑,结合用户归属判断与日期计算规则
- 配置本地化标签,让过滤器名称在界面正常显示
2. 推荐实现方法
核心思路是继承DesktopJobFiltersEnhancement,在自定义扩展类中创建JobFilter实例,通过Gosu闭包定义筛选规则,同时关联当前登录用户身份与日期运算逻辑。
3. 示例代码与参考指引
示例代码(Gosu)
创建自定义增强类CustomDesktopJobFiltersEnhancement.gs:
package gw.extensions.pc.desktop.jobfilters import com.guidewire.pc.desktop.jobfilters.DesktopJobFiltersEnhancement import com.guidewire.pc.desktop.jobfilters.JobFilter import com.guidewire.pl.system.security.SecurityContext import java.time.LocalDate class CustomDesktopJobFiltersEnhancement extends DesktopJobFiltersEnhancement { override function getCustomFilters(): List<JobFilter> { def customFilters = super.getCustomFilters() // 定义"Expire Soon"过滤器 def expireSoonFilter = new JobFilter( "ExpireSoon", // 过滤器唯一标识 getLocalizedText("job.filter.expireSoon"), // 界面显示名称(需配置本地化) \ job -> { // 筛选逻辑:当前用户分配的任务 + 日期计算条件 def currentUser = SecurityContext.currentUser def today = LocalDate.now() def expireThresholdDate = job.CreateTime.toLocalDate().plusDays(job.ExpirationThresoldNumber - 10) return job.Assignee == currentUser && (expireThresholdDate.isBefore(today) || expireThresholdDate.isEqual(today)) } ) customFilters.add(expireSoonFilter) return customFilters } }
本地化配置(在custom_resources.properties中添加)
job.filter.expireSoon=Expire Soon
注册增强类(在extensions.xml中配置)
<extension point="DesktopJobFiltersEnhancement"> <implementation class="gw.extensions.pc.desktop.jobfilters.CustomDesktopJobFiltersEnhancement"/> </extension>
关键参考点
- 可查看PolicyCenter内置的
DesktopJobFiltersEnhancement默认实现(路径:com.guidewire.pc.desktop.jobfilters.DesktopJobFiltersEnhancement),参考内置过滤器的定义逻辑 JobFilter构造参数需传入唯一ID、界面显示名称、筛选逻辑闭包- 日期计算需注意
CreateTime为DateTime类型,需转换为LocalDate后进行天数运算
内容的提问来源于stack exchange,提问作者abhi
相关产品推荐
相关产品推荐

