支持 Windchill 自定义属性
如果要从 Windchill 中导入未作为 出厂设置 Operator Advisor 转换过程一部分导入的值,则需要其他配置。这些值可包括尚未映射到 Operator Advisor 数据模型的 Windchill 属性,也可包括自定义 Windchill 属性 (亦称可变属性)。
以下示例将导入 MyCustomAttribute 的值,这是关于 Windchill MPMLink 操作的 STRING 数据类型自定义属性。
1. 验证 REST 调用中是否返回了这些属性值。使用 MPMLink OData 连接器事物 (PTC.SCA.SCO.MPMLink_ODataConnector) 或直接使用 REST 客户端,针对 Windchill MPMLink REST Services 执行以下命令,并验证是否返回了 MyCustomAttribute
GET /servlet/odata/MfgProcMgmt/Operations('ID')
2. 更新相关的 <Operator_Advisor_object>_AP 数据形状。添加到数据形状的属性必须是作为映射目标的 Windchill 属性的相应数据类型。
有关详细信息,请参阅 将自定义属性添加到 Operator Advisor 实体
在本示例中,我们会将 MyCustomAttribute 中的值添加到 PTC.SCA.SCO.WorkDefinition_AP 数据形状中名为 MyCustomProperty 的新 STRING 数据类型属性中。
3. 通过执行与主数据形状相关的 Get 服务来验证数据库中是否存在对应于新属性的列。在本示例中,执行 PTC.SCA.SCO.DefaultProductionOrderManager 事物中的 GetWorkDefinition 服务,并验证结果是否包含 MyCustomProperty 列。
4. 在自定义映射事物 (PTC.SCA.SCO.MPMLinkWorkDefinitionCustomMappings) 中,查找并覆盖要为之映射属性的 Operator Advisor 数据形状和 Windchill 信息的自定义映射服务。在本示例中,请查找并改写 MapWorkDefinitionPropertiesForOperationHolder 服务。有关所提供的自定义映射服务的列表,请参阅 自定义映射服务
5. 指定添加到 <Operator_Advisor_object>_AP 数据形状的自定义属性与服务代码备注中所示的 Windchill 属性之间的映射。在本示例中,请添加以下内容:
result["MyCustomProperty"] = sourceJson["OperationHolder"]["MyCustomAttribute"];
sourceJson 是作为服务输入提供的 REST 调用的一部分。只有适用于服务所映射的 Windchill 对象类型的 REST 调用部分才能作为服务输入提供。对于 Windchill 属性值,请使用步骤 1 中 REST 调用所示的属性名称。切勿使用 Windchill 中显示的属性的内部名称。
* 
也可使用自定义映射服务对 Operator Advisor 定义的映射予以自定义。例如,要将 Windchill MPMLink 中操作的 Description 属性映射至 Operator Advisor 中工作定义的 LongDescription 属性,而非映射至 Description 属性,请在 MapWorkDefinitionPropertiesForOperationHolderCustom 服务上添加以下内容:
result["LongDescription"] = sourceJson["OperationHolder"]["Description"];
若要自定义由 Operator Advisor 定义的任何映射,请确认在升级到 Operator Advisor 的新版本后,您的自定义映射仍可按预期方式转换。
Windchill MPMLink 中提取工艺计划信息并将其转换为 Operator Advisor 工作定义及相关信息时,即会将 Windchill MPMLink 操作的 MyCustomAttribute 属性值包括在内。
映射具有带单位的实数数据类型的 Windchill 属性
具有“带单位的实数”数据类型的 Windchill 属性在 REST 调用中的形式为具有多个值的 JSON 对象,而非单个属性值对。例如:
"Attribute2": {
"Value": 123.45,
"Unit": "m/s2",
"Precision": 5,
"Display": "123.45 m/s2"
}
您可为其中一个值指定映射,也可将整个 JSON 对象映射为 Operator AdvisorSTRING 类型属性的值:
要映射其中一个属性值,请指定欲映射的属性名称和值:
result["MyCustomProperty"] = sourceJson["Attribute2"]["Value"]
要将包含所有值的整个 JSON 对象映射为 Operator Advisor STRING 类型属性的值,请仅指定属性名称:
result["MyCustomProperty"] = sourceJson["Attribute2"]
映射多值 Windchill 属性
Windchill 中的多值属性是已移除了“单值”约束的属性。只有“全局”属性才可具有多个值。
如下所示,来自 Windchill 的多值属性显示在 REST 调用中,且其值均列于 JSON 数组中:
"MultiValuedAttribute": [
"Attribute value 1",
"Attribute value 2",
"Attribute value 3"
]
您可为单个值指定映射,也可将包含属性值的整个 JSON 数组映射为 Operator AdvisorSTRING 类型属性的值:
要映射多值属性中的某一特定值,请按照值的顺序 (从 0 开始) 指定属性名称和值的位置。
result["MyCustomProperty"] = sourceJson["MultiValuedAttribute"][1]
要将包含属性值的整个 JSON 数组映射为 Operator Advisor STRING 类型属性的值,请仅指定属性名称:
result["MyCustomProperty"] = sourceJson["MultiValuedAttribute"]
映射 Windchill 列表属性
Windchill 中的列表属性是应用了以下其中一个列表约束的属性:“枚举值列表”“合法值列表”“建议值列表”。列表属性可以是“全局”属性,也可以是“本地”属性。
来自 Windchill 的列表属性在 REST 调用中的形式为具有多个值的 JSON 对象,而非单个属性值对。例如:
"ListAttribute": [
{
"Value": "Test 1",
"Display": "Test 1"
},
}
您可为其中一个值指定映射,也可将整个 JSON 对象映射为 Operator AdvisorSTRING 类型属性的值:
要映射其中一个属性值,请指定欲映射的属性名称和值:
result["MyCustomProperty"] = sourceJson["ListAttribute"]["Value"]
要将包含所有值的整个 JSON 对象映射为 Operator Advisor STRING 类型属性的值,请仅指定属性名称:
result["MyCustomProperty"] = sourceJson["ListAttribute"]