Structure CCO (Common Communication Object)
CCO (Common Communication Object) est une structure JSON utilisée pour gérer le transfert de données au sein de Windchill Navigate. Dans un cas d'utilisation courant, il contient des données et des métadonnées sur une ou plusieurs instances du système principal et les objets récupérés à partir de ces systèmes.
CCO prend en charge à la fois les données d'une liste plate et les données structurées de manière hiérarchique. Toutefois, les données hiérarchiques nécessitent l'inclusion de certaines clés supplémentaires, comme spécifié dans le tableau ci-dessous.
Structure CCO pour les données plates
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"",
"instanceName":""
},
"itemListsData":[
{
"objectType":"",
"items":[
{
"id":{
"value":""
},
"Name":{
"value":""
}
}
],
"metadata":{
"id":{
"label":"",
"type":""
},
"Name":{
"label":"",
"type":""
}
},
"typeData":{
}
}
]
}
],
"status":"",
"statusMessage":"",
"timeStamp":""
}
Structure CCO pour les données hiérarchiques
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"",
"instanceName":""
},
"itemListsData":[
{
"objectType":"",
"items":[
{
"id":{
"value":""
},
"Name":{
"value":""
},
"PTC.Nav.Descendants":{
"items":[
{
"id":{
"value":""
},
"Name":{
"value":""
}
}
]
}
}
],
"metadata":{
"id":{
"label":"",
"type":""
},
"Name":{
"label":"",
"type":""
}
},
"typeData":{

}
}
]
}
],
"status":"",
"statusMessage":"",
"timeStamp":""
}
Nom de la propriété
Description
version
Version de la structure CCO utilisée.
Propriété de type chaîne.
data
Informations récupérées à partir des systèmes principaux.
Propriété de type chaîne.
adapter
Contient des informations sur l'instance système principale à partir de laquelle les données sont récupérées.
thingName
Nom de l'objet d'adaptateur qui représente le système principal dans Windchill Navigate.
Propriété de type chaîne.
instanceName
Nom de l'instance spécifique du système principal.
Propriété de type chaîne.
ItemListsData
Liste des éléments et des métadonnées. Les éléments à l'intérieur de chaque instance de la liste doivent avoir le même type d'objet.
objectType
Type des objets du tableau items.
Propriété de type chaîne ou objet. Sous forme de chaîne, peut également accepter d'autres types, tels qu'entier ou booléen.
items
Liste des éléments, de leurs attributs et des valeurs d'attribut.
value
Valeur d'un attribut et d'un élément spécifique.
Propriété de type chaîne ou objet.
PTC.Nav.Descendants
Contient un tableau de tous les descendants d'un élément, c'est-à-dire les enfants, les enfants des enfants, etc.
* 
Cette propriété n'est pertinente que lorsque les données sont hiérarchiques.
metadata
Informations relatives aux attributs, communes à tous les éléments. Les éléments sous metadata peuvent être de type type chaîne, y compris "INTEGER" et "BOOLEAN". Ils peuvent également avoir l'objet type, NAV.OBJECT.
hasChildren
Attribut propre à Windchill qui indique si l'élément concerné a des enfants ou non. Concerne uniquement les articles ou les documents CAO.
Propriété de type booléen.
* 
Cette propriété n'est pertinente que lorsque les données sont hiérarchiques.
typeData
Informations supplémentaires sur objectType. Très rarement utilisé.
Propriété de type objet JSON.
status
Statut de récupération des données.
Propriété de type chaîne.
statusMessage
Message concernant le statut de la récupération des données.
Propriété de type chaîne.
timeStamp
Horodatage de la récupération des données.
Propriété de type chaîne.
Exemples de structure CCO
1. L'exemple suivant inclut un élément avec un type d'objet.
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"PTC.WCAdapter",
"instanceName":"windchill"
},
"itemListsData":[
{
"objectType":"PTC.ChangeMgmt.ChangeRequest",
"items":[
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:258323"
},
"Name":{
"value":"CR"
}
}
],
"metadata":{
"id":{
"label":"Id",
"type":"string"
},
"Name":{
"label":"Change Request Name",
"type":"string"
}
}
}
]
}
],
"status":"200",
"statusMessage":"OK",
"timeStamp":" 2019-01-02 06:43:19.77"
}
2. L'exemple suivant inclut un élément avec deux types d'objet différents. Etant donné que chaque tableau items ne contient qu'un seul objet, il n'affiche qu'un élément.
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"PTC.WCAdapter",
"instanceName":"windchill"
},
"itemListsData":[
{
"objectType":"PTC.ChangeMgmt.ChangeRequest",
"items":[
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:258323"
},
"Name":{
"value":"CR"
}
}
],
"metadata":{
"id":{
"label":"Id",
"type":"string"
},
"Name":{
"label":"Change Request Name",
"type":"string"
}
}
},
{
"objectType":"PTC.Workflow.WorkItem",
"items":[
{
"Category#Display":{
"value":"Cost Reduction"
},
"RequestPriority#Display":{
"value":"Low"
}
}
],
"metadata":{
"Category#Display":{
"label":"Category",
"type":"string"
},
"RequestPriority#Display":{
"label":"Request Priority",
"type":"string"
}
}
}
]
}
],
"status":"200",
"statusMessage":"OK",
"timeStamp":" 2019-01-02 06:43:19.77"
}
3. L'exemple suivant inclut deux éléments avec un type d'objet. Etant donné que chaque tableau items contient deux objets, il affiche deux éléments.
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"PTC.WCAdapter",
"instanceName":"windchill"
},
"itemListsData":[
{
"objectType":"PTC.ChangeMgmt.ChangeRequest",
"items":[
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:258323"
},
"Name":{
"value":"CR1"
}
},
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:32456"
},
"Name":{
"value":"CR2"
}
}
],
"metadata":{
"id":{
"label":"Id",
"type":"string"
},
"Name":{
"label":"Change Request Name",
"type":"string"
}
}
}
]
}
],
"status":"200",
"statusMessage":"OK",
"timeStamp":" 2019-01-02 06:43:19.77"
}
4. L'exemple suivant inclut deux éléments avec deux types d'objet. Etant donné que chaque tableau items contient deux objets, il affiche deux éléments.
{
"version":"1.0.0",
"data":[
{
"adapter":{
"thingName":"PTC.WCAdapter",
"instanceName":"windchill"
},
"itemListsData":[
{
"objectType":"PTC.ChangeMgmt.ChangeRequest",
"items":[
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:258323"
},
"Name":{
"value":"CR"
}
},
{
"id":{
"value":"OR:wt.change2.WTChangeRequest2:32456"
},
"Name":{
"value":"CR2"
}
}
],
"metadata":{
"id":{
"label":"Id",
"type":"string"
},
"Name":{
"label":"Change Request Name",
"type":"string"
}
}
},
{
"objectType":"PTC.Workflow.WorkItem",
"items":[
{
"Category#Display":{
"value":"Cost Reduction"
},
"RequestPriority#Display":{
"value":"Low"
}
},
{
"Category#Display":{
"value":"Cost Reduction"
},
"RequestPriority#Display":{
"value":"High"
}
}
],
"metadata":{
"Category#Display":{
"label":"Category",
"type":"string"
},
"RequestPriority#Display":{
"label":"Request Priority",
"type":"string"
}
}
}
]
}
],
"status":"200",
"statusMessage":"OK",
"timeStamp":" 2019-01-02 06:43:19.77"
}
5. L'exemple suivant inclut différents types d'objet, tels que "string", et "hyperlink" et NAV.OBJECT sous forme de chaîne.
{
"timeStamp":"2021-10-18 17:14:05.445",
"data":[
{
"itemListsData":[
{
"metadata":{
"method":{
"label":"method",
"type":"string"
},
"body":{
"label":"body",
"type":"NAV.OBJECT"
},
"url":{
"label":"url",
"type":"hyperlink"
}
},
"items":[
{
"method":{
"value":"post"
},
"body":{
"value":{
"Variables":[

],
"UserEventList":[
"Approve"
],
"AutomateFastTrack":false,
"VoteAction":"",
"task_id":"OR:wt.workflow.work.WorkItem:408170",
"WorkitemComment":"",
"redirect_url":"",
"Name":"Conduct Online CRB Review"
}
},
"url":{
"value":""
}
}
],
"objectType":"PTC.Navigate.ESignInvoke.Adapter"
}
],
"adapter":{
"instanceName":"windchill",
"thingName":"PTC.WCAdapter"
}
}
],
"version":"1.0.0",
"statusMessage":"OK",
"status":"200"
}
6. L'exemple suivant inclut des données hiérarchiques :
{
"version": "1.0.0",
"data": [
{
"adapter": {
"thingName": "PTC.WCAdapter",
"instanceName": "windchill"
},
"itemListsData": [
{
"objectType": "PTC.ProdMgmt.PartStructureItem",
"items": [
{
"id": {
"value": "PartId1"
},
"Name": {
"value": "Part1"
},
"PTC.Nav.Descendants": {
"items": [
{
"id": {
"value": "PartId2"
},
"Name": {
"value": "Part2"
}
},
{
"id": {
"value": "PartId3"
},
"Name": {
"value": "Part3"
}
}
]
}
},
{
"id": {
"value": "PartId4"
},
"Name": {
"value": "Part4"
}
}
],
"metadata": {
"id": {
"label": "Id",
"type": "string"
},
"Name": {
"label": "Name",
"type": "string"
}
}
}
]
}
],
"status": "200",
"statusMessage": "OK",
"timeStamp": " 2019-01-02 06:43:19.77"
}
Est-ce que cela a été utile ?