自定义下载服务中的参数
预设委派
Windchill 提供的预设机制,可以将 CAD 文档的其他相关信息作为自定义系统参数进行传递。
要自定义参数,请在站点级别设置服务器端首选项“Workgroup Manager 客户端” > “映射自定义系统属性和文件特性”
该值是 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 文档相关,则返回每个部件的最新修订版本。
如果将系统配置为允许多个构建关联,且服务器端首选项“操作” > “自动关联” > “允许 CAD 文档构建多个部件”设置为“是”,则可以返回多个部件。在这种情况下,每个相关部件的信息都将以带分隔符的格式返回。所使用的分隔符由服务器端首选项“Workgroup Manager 客户端” > “用于多个相关对象的自定义系统属性分隔符”定义。
对于相关 ECN:
如果 CAD 文档的修订版本作为产生的对象参与了变更通告,则关于 ECN 的属性会被发送到 CAD 参数。
如果 CAD 文档的修订版本参与多个“变更通告”,则所使用的分隔符由服务器端首选项“Workgroup Manager 客户端” > “用于多个相关对象的自定义系统属性分隔符”定义
已拒绝的 ECN 未列出。
对于升级请求:
如果 CAD 文档的版本参与了升级请求,则关于升级请求的属性会被发送到 CAD 参数。
如果 CAD 文档的版本参与了多个“升级请求”,则所使用的分隔符由服务器端首选项“Workgroup Manager 客户端” > “用于多个相关对象的自定义系统属性分隔符”定义。
未列出已拒绝的升级请求。
* 
resolutionDate 基于与 CAD 文档相关的变更通告。日期格式可通过在“类型和属性管理”中设置格式进行配置。使用内部名称 resolutionDate 设置“变更通告”属性的格式。
promotionDate 基于与 CAD 文档相关的升级请求。日期格式可通过在“类型和属性管理”中设置格式进行配置。使用内部名称 promotionDate 设置“升级请求”属性的格式。
approveDatesreviewDates 基于与升级请求相关的工作项。日期格式通过在“类型和属性管理”中设置格式进行配置。使用内部名称 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. 重新启动方法服务器。
这对您有帮助吗?