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