创建自定义筛选器
按照以下步骤创建自定义筛选器。
定义属性
要定义自定义筛选器的属性,请执行以下步骤:
1. 在“类型和属性管理器”用户界面中,转至“管理类型”选项卡,然后搜索 wt.filter.custom.CustomFilter 类型。
2. 在 Windchill shell 中,运行以下命令以在“类型和属性管理器”用户界面中加载表示自定义筛选器的 wt.filter.custom.CustomFilter 类型:
windchill wt.load.LoadFromFile -d %WT_HOME%\loadFiles\type\CustomFilter.xml
3. 在“类型和属性管理”用户界面中,搜索 wt.filter.custom.CustomFilter 类型并创建其子类型。例如,org.rnd.TestFilter。将“可实例化”复选框设置为“是”
4. “属性”选项卡中,将必需属性添加到新建的类型 org.rnd.TestFilter 中。
5. “布局”选项卡中,创建 org.rndTestFilter 的默认布局,并从“屏幕类型”将其分配至“全部”
6. 添加新布局并将其分配至“筛选器 - 编辑”屏幕类型。
7. 将所需属性添加到在上一步骤中创建的布局。如果是标准属性,请从 Windchill shell 运行 AddColumns 工具,以在数据库中为属性类型分配空间。
8. (可选) 添加本地化组显示名称。
实现逻辑
要实现逻辑,请执行以下步骤:
1. 创建用于实现 NavigationCriteriaTabValidator 并覆盖 doValidation 方法的新类,以提供负责验证“自定义筛选器”选项卡的自定义逻辑。例如,ExampleCustomFilterTabValidator
2. 创建用于扩展 TypeDefinitionPanelConfigBuilder 的新类。例如,ExampleCustomFilterPanelConfigBuilder。覆盖 getAdditionalTypesToMetaDatagetId,这两者分别用于从“类型管理器”生成面板配置构建器,以及为自定义筛选器及其子类型生成元数据。
3. 创建用于扩展 AbstractNavigationCriteriaRenderer 的新类。例如,ExampleCustomFilterRenderer。覆盖 getTabItem 方法以定义配置面板的构建方式。覆盖 getMiniInfoiFromJSON 以定义筛选器信息在“当前筛选器”面板中的显示方式。
4. 创建用于实现 FilterPopulator 的新类。 例如,ExampleCustomFilterPopulator。覆盖 getFilterBean 以定义包含已翻译筛选器名称的筛选器 bean。
5. 创建用于扩展 AbstractNavigationFilterDelegate2 的新类。例如,ExampleCustomFilterDelegate
a. 覆盖用于从传递为 JSON 字符串的属性构造筛选器实例的 getFilterFromJSON
b. 覆盖用于根据所提供的 JSON 字符串和 NavigationFilter2 实例 (或 CustomFilter) 来更新筛选器值的 updateFilterFromJSON
c. 覆盖用于从已保存的筛选器构造 JSON,并在使用已保存的筛选器时将这些值进一步传递给表单的 getJSONFromFilter
d. 覆盖用于刷新存储在已保存筛选器上的属性的 deepCopy,可变 (IBA) 或标准均可。
e. 覆盖包含特定逻辑的筛选器方法,以根据筛选器中定义的属性筛选出结构。
插入逻辑
1. ModuleName-service.properties.xconf 文件中添加条目,并将 wt.filter.custom.CustomFilter 的子类型的名称更改为在上文“定义属性”一节步骤 2 中定义的名称 (org.rnd.TestFilter)。将示例文件名替换为适用于您的自定义的名称。
a. 定义委派:
<Service context="default" name="wt.filter.NavigationFilterDelegate2">
<Option cardinality="singleton" requestor="null" serviceClass="com.example.ExampleCustomFilterDelegate" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
</Service>
b. 定义呈现器:
<Service context="default" name="NavigationCriteria.renderer">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterRenderer" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Service>
c. 定义验证器:
<Service context="default" name="NavigationCriteria.validator">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterTabValidator" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Serviec>
d. 定义填充器:
<Service context="default" name="NavigationCriteria.populator">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterPopulator" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Service>
2. ModuleName-wt.properties.xconf 文件中为以下项添加条目:
<Property name="NavigationCriteria.filters.order.XX" default="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
将特性名称中的 XX 更改为有效的筛选器顺序 (请参阅 ExpansionCriteriaCore-wt.properties.xconf 文件作为示例和筛选器顺序)。
3. 通过从 Windchill shell 中运行以下命令来传播更改:
xconfmanager -Fp
示例
此示例显示如何使得自定义筛选器正常工作。
定义属性
1. 默认情况下,必须首先将自定义筛选器加载到 Windchill。在“类型和属性管理”用户界面的“管理类型”选项卡中,搜索 wt.filter.custom.CustomFilter。如果未加载类型,则可通过导航至 Windchill shell 并运行以下命令,将默认自定义筛选器类型加载到 Windchill 中:
windchill wt.load.LoadFromFile -d %WT_HOME%\loadFiles\type\CustomFilter.xml -u wcadmin -p wcadmin
2. 重新启动方法服务器。
3. 在 Windchill shell 中,运行 AddColumns 工具以在数据库 CustomFilter 上为更多标准属性定义其他列:
AddColumns.sh wt.filter.custom.CustomFilter String=5 Double=3 Timestamp=2 Long=3 Boolean=2
4. 重新启动方法服务器。
5. 浏览至 $WT_HOME/prog_examples/CustomFilter/loadFiles。 通过运行以下命令加载所有文件:
windchill wt.load.LoadFromFile -d CustomFilter_TestFilter_LoadSet.xml -u wcadmin -p wcadmin
或者,您可以分别加载每个文件:
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_0.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_1.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_2.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_3.xml -u wcadmin -p wcadmin
这些步骤使用“测试筛选器”子类型创建“自定义筛选器”类型。必须将其他属性添加到 TestFilter,并定义一些约束。确保已定义“默认”和“筛选器 - 编辑”布局。
已加载 CustomFilter
已加载用户自定义筛选器可变类型
针对“用户自定义筛选器可变类型”的“筛选器 - 编辑”定义的布局
实现逻辑
1. 启动 Windchill shell 并浏览至 $WT_HOME/prog_examples/CustomFilter/src 文件夹。
2. 启动 ant 命令来编译和创建可供部署示例的 jar 文件。
3. 通过运行以下命令,将文件从 $WT_HOME/prog_examples/CustomFilter/codebase 复制到 $WT_HOME/codebase 文件夹,将 jar 文件从 $WT_HOME/prog_examples/CustomFilter/bin 复制到 $WT_HOME/srclib/wnc
cp -r $WT_HOME/prog_examples/CustomFilter/codebase/* $WT_HOME/codebase/
cp -r $WT_HOME/prog_examples/CustomFilter/bin/* $WT_HOME/srclib/wnc/
4. Windchill shell 中,转至 $WT_HOME/bin 并运行以下命令来编译通过该示例部署的 GWT 代码:
Ant -f gwt.xml
5. 重新启动方法服务器。
* 
请联系 PTC 技术支持,以获取 GWT 编译方面的协助。
插入逻辑
1. $WT_HOME 中创建 ModuleName-service.properties.xconf 文件 (或使用现有文件),并添加以下服务选项:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/service.properties"?
<Service context="default" name="wt.filter.NavigationFilterDelegate2">
<Option cardinality="singleton" requestor="null" serviceClass="wt.filter.custom.ExampleCustomFilterDelegate"
selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
</Service>
<Service context="default" name="NavigationCriteria.renderer">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.client.ui.renderer.ExampleCustomFilterRenderer" />
</Service>
<Service context="default" name="NavigationCriteria.validator">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.server.validator.ExampleCustomFilterTabValidator"/>
</Service
<Service context="default" name="NavigationCriteria.populator">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.server.populator.ExampleCustomFilterPopulator" />
</Service>
</Configuration>
2. $WT_HOME/codebase/com/ptc/expansionui/ExpansionCriteriaCore-wt.properties.xconf 文件中,取消注释以下行:
<Property name="NavigationCriteria.filters.order.xx" default="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
3. 通过从 Windchill shell 运行以下命令来传播 xconf 更改:
xconfmanager -fp
结果
启动“编辑筛选器”用户界面后,您可以查看和选择“用户自定义筛选器”选项卡:
这对您有帮助吗?