Common Communication Object-Struktur
Das Common Communication Object, auch als CCO bezeichnet, ist eine JSON-Struktur, die zum Verwalten der Datenübertragung in Windchill Navigate verwendet wird. In einem der häufigen Anwendungsfälle enthält die Struktur Daten und Metadaten für eine oder mehrere Instanzen des Backend-Systems sowie die Objekte, die aus diesen Systemen abgerufen werden.
CCO unterstützt sowohl Daten in einer flachen Liste als auch Daten, die hierarchisch strukturiert sind. Für hierarchische Daten müssen jedoch einige zusätzliche Schlüssel hinzugefügt werden, wie in der folgenden Tabelle angegeben.
CCO-Struktur für flache Daten
{
"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":""
}
CCO-Struktur für hierarchische Daten
{
"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":""
}
Eigenschaftenname
Beschreibung
version
Die Version der verwendeten CCO-Struktur.
Eigenschaftstyp ist Zeichenfolge.
data
Die Informationen werden aus den Backend-Systemen abgerufen.
Eigenschaftstyp ist Zeichenfolge.
adapter
Enthält Informationen zur Backend-System-Instanz, aus der die Daten abgerufen werden.
thingName
Name des Adapter-Dings, das das Backend-System in Windchill Navigate darstellt.
Eigenschaftstyp ist Zeichenfolge.
instanceName
Name der spezifischen Instanz des Backend-Systems.
Eigenschaftstyp ist Zeichenfolge.
ItemListsData
Liste der Elemente und Metadaten. Elemente innerhalb jeder Instanz der Liste müssen vom selben Objekttyp sein.
objectType
Die Art der Objekte im Array items.
Der Eigenschaftstyp ist eine Zeichenfolge oder ein Objekt. Es werden auch andere in Zeichenfolgen umgewandelte Typen, z.B. Ganzzahl oder Boolesch, akzeptiert.
items
Liste der Elemente, deren Attribute sowie Attributwerte
value
Wert für ein bestimmtes Attribut und Element.
Der Eigenschaftstyp ist eine Zeichenfolge oder ein Objekt.
PTC.Nav.Descendants
Enthält ein Array aller untergeordneten Elemente eines Elements, d.h. Kinder, Kinder von Kindern usw.
* 
Diese Eigenschaft ist nur relevant, wenn die Daten hierarchisch sind.
metadata
Informationen zu Attributen, die alle Elemente gemeinsam haben. Elemente unter metadata können die Zeichenfolge type enthalten, einschließlich die in Zeichenfolgen umgewandelten Typen "INTEGER" und "BOOLEAN". Sie können auch das Objekt type (NAV.OBJECT) haben.
hasChildren
Für Windchill spezifisches Attribut, das angibt, ob das entsprechende Element Kinder hat oder nicht. Nur relevant für Teile- oder CAD-Dokumente
Eigenschaftstyp ist boolesch.
* 
Diese Eigenschaft ist nur relevant, wenn die Daten hierarchisch sind.
typeData
Weitere Informationen zu objectType. Nur in seltenen Fällen verwendet.
Eigenschaftstyp ist JSON-Objekt.
status
Der Status des Datenabrufs.
Eigenschaftstyp ist Zeichenfolge.
statusMessage
Meldung zum Status des Datenabrufs.
Eigenschaftstyp ist Zeichenfolge.
timeStamp
Zeitstempel für den Datenabruf.
Eigenschaftstyp ist Zeichenfolge.
Beispiele für CCO-Struktur
1. Das folgende Beispiel enthält ein Element mit einem Objekttyp.
{
"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. Das folgende Beispiel enthält ein Element mit zwei unterschiedlichen Objekttypen. Da jedes items-Array nur ein Objekt enthält, ist ein Element vorhanden.
{
"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. Das folgende Beispiel enthält zwei Elemente mit einem Objekttyp. Da jedes items-Array zwei Objekte enthält, sind zwei Elemente vorhanden.
{
"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. Das folgende Beispiel enthält zwei Elemente mit zwei Objekttypen. Da jedes items-Array zwei Objekte enthält, sind zwei Elemente vorhanden.
{
"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. Das folgende Beispiel enthält verschiedene Objekttypen, wie z.B. "string", den in eine Zeichenfolgen umgewandelten Typ "hyperlink" und NAV.OBJECT.
{
"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. Das folgende Beispiel enthält hierarchische Daten:
{
"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"
}
War dies hilfreich?