编辑委派 (Creo Elements/Direct Drafting)
预设委派
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 工具的值是对象“信息页面”上呈现的显示值。显示值使用“属性处理”首选项和“类型和属性管理”设置,但不支持使用数据实用程序进行呈现的复杂显示自定义。
|
只有在不存在可用于插入参数的自定义服务器端委派 CustomModeledAttributesDelegate 时,才能使用此功能 (有关“自定义委派”的信息,请参阅下一部分“自定义委派”)。
对于关联部件:
• 此功能支持与具有所有者、提供图像、图像和提供内容的“CAD 文档”相关的部件。
• 选定的部件版本与“CAD 文档”信息页面相关部件表类似。
• 如果同一部件的多个修订版本均与 CAD 文档相关,则返回每个部件的最新修订版本。
• 如果将系统配置为允许多个构建关联,且服务器端首选项 > > 设置为“是”,则可以返回多个部件。在这种情况下,每个相关部件的信息都将以带分隔符的格式返回。所使用的分隔符由服务器端首选项 > 定义。
对于相关 ECN:
• 如果 CAD 文档的修订版本作为产生的对象参与了变更通告,则关于 ECN 的属性会被发送到 CAD 参数。
• 如果 CAD 文档的修订版本参与多个“变更通告”,则所使用的分隔符由服务器端首选项 > 定义
• 已拒绝的 ECN 未列出。
对于升级请求:
• 如果 CAD 文档的版本参与了升级请求,则关于升级请求的属性会被发送到 CAD 参数。
• 如果 CAD 文档的版本参与了多个“升级请求”,则所使用的分隔符由服务器端首选项 > 定义。
• 未列出已拒绝的升级请求。
自定义委派
Windchill 提供的服务器端委派可用于在下载时向创作应用程序部件中插入参数。这种机制可用于将信息从服务器传送到创作应用程序,在此可像其他所有创作应用程序参数一样使用这些信息 (例如,在绘图表单上填充信息)。以 PTC 或 PROI 开头的参数被视为保留的系统参数,不能通过自定义进行传播。如果在自定义中添加这些参数,下载服务会将其忽略。
|
• 如果将系统配置为使用自定义委派,则不会使用在服务器端首选项 > 中定义的属性。只有 PTC 委派会检查该首选项。
• 自定义参数会在下载时提供给客户端,而在执行 Windchill 操作 (例如,检入) 后不会在 CAD 应用程序会话中更新。例如,如果给某个自定义参数分配了 CAD 文档编号的值,其值会在下载时提供给客户端。如果后来对 CAD 文档进行了重新编号,则在创作应用程序会话或客户端缓存中的值不会自动更新。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. 重新启动方法服务器。