自定义下载服务中的参数
预设委派
Windchill 提供的预设机制,可以将 CAD 文档的其他相关信息作为自定义系统参数进行传递。
要自定义参数,请在站点级别设置服务器端首选项 > 。
• 该值是 CAD 文档相关对象中附加属性的列表,这些属性在 CAD 工具中显示为参数或特性。
• 该值是以逗号分隔的 CAD 特性和 Windchill 属性对的列表,其格式如下:
<name_of_CAD_property>:<relatedObjectCode>.<WindchillAttributeName>
其中:
值
|
说明
|
可能的值
|
name_of_CAD_property
|
这是 CAD 工具中参数或特性的名称。
|
PART_REVISION
|
relatedObjectCode
|
这是用于标识相关对象的字符串。
|
• 对于相关对象
• docMaster
• associatedPart
• relatedECN
• promote
|
WindchillAttributeName
|
这是相关对象的 Windchill 属性的逻辑名称或内部名称。
|
• CAD 文档主数据的可变类型属性
• 部件属性
◦ “布尔型”、“日期”、“整数”、“实数”、“带实数的单位”或“字符串”类型的相关部件的可变类型属性
◦ lifeCycleState
◦ lifecycleTemplate.name
◦ name
◦ number
◦ orgid
◦ view.identity
◦ partType
• 对于相关 ECN
◦ number
◦ orgid
◦ resolutionDate
• 对于升级
◦ number
◦ promotionDate
◦ orgid
◦ approvers
◦ approveDates
◦ reviewers
◦ reviewDates
|
|
对于可变类型属性,发送到 CAD 工具的值是对象“信息页面”上呈现的显示值。显示值使用“属性处理”首选项和“类型和属性管理”设置,但不支持使用数据实用程序进行呈现的复杂显示自定义。
例如,审阅日期和批准日期遵循“日期显示格式”(dd-MM-yy) 的“类型和属性管理”设置。
|
只有在不存在可用于插入参数的自定义服务器端委派 CustomModeledAttributesDelegate 时,才能使用此功能 (有关“自定义委派”的信息,请参阅下一部分“自定义委派”)。
对于关联部件:
• 此功能支持与具有所有者、提供图像、图像和提供内容的“CAD 文档”相关的部件。
• 选定的部件版本与“CAD 文档”信息页面相关部件表类似。
• 如果同一部件的多个修订版本均与 CAD 文档相关,则返回每个部件的最新修订版本。
• 如果将系统配置为允许多个构建关联,且服务器端首选项 > > 设置为“是”,则可以返回多个部件。在这种情况下,每个相关部件的信息都将以带分隔符的格式返回。所使用的分隔符由服务器端首选项 > 定义。
对于相关 ECN:
• 如果 CAD 文档的修订版本作为产生的对象参与了变更通告,则关于 ECN 的属性会被发送到 CAD 参数。
• 如果 CAD 文档的修订版本参与多个“变更通告”,则所使用的分隔符由服务器端首选项 > 定义
• 已拒绝的 ECN 未列出。
对于升级请求:
• 如果 CAD 文档的版本参与了升级请求,则关于升级请求的属性会被发送到 CAD 参数。
• 如果 CAD 文档的版本参与了多个“升级请求”,则所使用的分隔符由服务器端首选项 > 定义。
• 未列出已拒绝的升级请求。
|
• resolutionDate 基于与 CAD 文档相关的变更通告。日期格式可通过在“类型和属性管理”中设置格式进行配置。使用内部名称 resolutionDate 设置“变更通告”属性的格式。
• promotionDate 基于与 CAD 文档相关的升级请求。日期格式可通过在“类型和属性管理”中设置格式进行配置。使用内部名称 promotionDate 设置“升级请求”属性的格式。
• approveDates 和 reviewDates 基于与升级请求相关的工作项。日期格式通过在“类型和属性管理”中设置格式进行配置。使用内部名称 thePersistInfo.modifyStamp 设置“工作项”属性的格式。
|
自定义委派
如果业务流程要求将其他属性传递到 CAD 工具,则 Windchill 会提供一个服务器端委派,该委派可用于在下载时将参数插入到 Creo Parametric 模型中。这种机制可用于将信息从服务器传送到 Creo Parametric,在此可像其他所有 Creo Parametric 参数一样使用这些信息 (例如,在绘图表单上填充信息)。以 "PTC" 或 "PROI" 开始的参数被视为保留的系统参数,不能通过自定义进行传播。如果在自定义中添加这些参数,下载服务会将其忽略。
|
此功能适用于所有与第三方 CAD 工具集成的 Windchill Workgroup Manager。
|
|
自定义的参数在下载时提供给客户端,与系统参数 (如 PTC_WM_ITERATION) 不同,它们不会在执行某个 Windchill 操作 (例如,检入) 后,在 Creo Parametric 会话或本地缓存中更新。
例如,如果某个自定义参数分配了 CAD 文档编号的值,其值会在模型下载时提供给客户端。如果后来对 CAD 文档进行了重编号,则 Creo Parametric 会话或客户端缓存中的值不会自动更新。
|
Windchill 服务委派机制用于实现自定义。以下步骤说明自定义过程:
1. 创建一个 Java 类,以在与 PTC 类不同的客户特定位置 ModeledAttributesDelegate (例如 <WT_HOME>\com\acme) 执行接口。该接口的定义如下:
package com.acme.download;
import static org.junit.Assert.assertTrue;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.ptc.windchill.uwgm.proesrv.c11n.DefaultModeledAttributesDelegate;
import java.util.Iterator;
import wt.epm.EPMDocument;
import wt.fc.collections.WTCollection;
import wt.fc.collections.WTHashSet;
import wt.preference.PreferenceHelper;
import wt.util.WTException;
/**
* When CustomizedModeledAttributesDelegate is configured following modeled attributes would be added to the CAD
* Document, which would be combination of custom CURRENT_DATE parameter along with Parameters configured in mentioned
* preference "Mapping Custom System Attributes and File Properties". For eg.When preference "Mapping Custom System
* Attributes and File Properties" set with value as
* -CREO_PART_REVISION:associatedPart.revision,CREO_PART_VIEW:associatedPart.view.identity,ECN_NUMBER:relatedECN.number
* Modeled attributes on CAD Document would be- CREO_PART_REVISION=A, ECN_NUMBER=00192, CREO_PART_VIEW=Design,
* CURRENT_DATE=2023/10/11 05:07
*/
public class CustomizedModeledAttributesDelegate extends DefaultModeledAttributesDelegate {
private static final String CUSTOM_SYSTEM_PARAMS_PREF = "system.attribute.mapping.custom";
private static final String PROE = "PROE";
private static final String CURRENT_DATE = "CURRENT_DATE";
// getAvailableAttributes() returns
// HashMap<String, Object> which contains
// HashMap<Attribute name, Attribute type> @Override
public HashMap getAvailableAttributes() {
System.out.println(
"Invoked CustomizedModeledAttributesDelegate extends DefaultModeledAttributesDelegate :: getModeledAttributes() :Returning an empty list of modeled Attributes.");
return new HashMap();
}
/**
* Returns a map of modeled attributes for the EPMDocument objects in the provided collection. This method retrieves
* the modeled attributes from the PTC default implementation.
*
* @param collection a collection of EPMDocument objects for which to retrieve the modeled attributes
* @return a map of modeled attributes for the provided EPMDocument objects
* @throws WTException if an exception occurs while retrieving the modeled attributes
*/
@Override
public HashMap getModeledAttributes(
final Collection collection)
throws WTException {
System.out.println(
"Invoked CustomizedModeledAttributesDelegate extends DefaultModeledAttributesDelegate :: getModeledAttributes() ");
String prefValue = (String) PreferenceHelper.service.getValue(CUSTOM_SYSTEM_PARAMS_PREF,
PROE);
System.out.println("CustomizedModeledAttributesDelegate prefValue " + prefValue);
HashMap objVsAttrNameVsValue = new HashMap();
// Fetching only EPMDocuments from input collection.
WTCollection inEPMDocs = new WTHashSet(collection).subCollection(EPMDocument.class);
Iterator persistableIterator = inEPMDocs.persistableIterator();
if (prefValue != null && (!prefValue.isBlank())) {
while (persistableIterator.hasNext()) {
EPMDocument anEPMDoc = (EPMDocument) persistableIterator.next();
objVsAttrNameVsValue = super.getModeledAttributes(collection);
Map<String, String> attrNameVsValueMap = (Map<String, String>)objVsAttrNameVsValue.get(anEPMDoc);
assertTrue(attrNameVsValueMap != null);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
LocalDateTime now = LocalDateTime.now();
attrNameVsValueMap.put(CURRENT_DATE, dtf.format(now).toString());
System.out.println("CustomizedModeledAttributesDelegate attrNameVsValueMap " + attrNameVsValueMap);
return objVsAttrNameVsValue;
}
}
System.out
.println("Could not find CustomizedModeledAttributesDelegate extends DefaultModeledAttributesDelegate");
return objVsAttrNameVsValue;
}
} // end class
2. PTC 提供的自定义系统属性预设在 DefaultModeledAttributesDelegate 中提供。不过,可以将 site.xconf 文件 (位于 <Windchill> 中) 更改为指向服务器上的自定义服务:
◦ 使用类路径代替 serviceClass 的值 (即,使用类路径替换 com.ptc.windchill.uwgm.proesrv.c11n.DefaultModeledAttributesDelegate)。例如:
<Service context="default"
name="com.ptc.windchill.uwgm.proesrv.c11n.ModeledAttributesDele
gate" targetFile=codebase/service.properties">
<Option cardinality="singleton"
requestor="java.lang.Object"
serviceClass="com.acme.download.CustomizedModeledAttributesDelegate"/>
</Service>
◦ 使用 xconfmanager 实用程序将这些变更应用于 service.properties 文件 (运行 xconfmanager -p)。
3. 重新启动方法服务器。