Common Communication Object 구조
CCO라고도 하는 Common Communication Object는 Windchill Navigate 내에서 데이터 전송을 관리하는 데 사용되는 JSON 구조입니다. 일반적인 사용 사례에서 백엔드 시스템의 하나 이상의 인스턴스에 대한 데이터 및 메타데이터와 이러한 시스템에서 읽어들인 객체가 포함됩니다.
CCO는 단순 목록의 데이터와 계층적으로 구조화된 데이터를 모두 지원합니다. 그러나 계층적 데이터에는 아래 테이블에 지정된 몇 가지 추가 키가 포함되어야 합니다.
플랫 데이터에 대한 CCO 구조
{
"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 구조
{
"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":""
}
속성 이름
설명
version
사용된 CCO 구조의 버전입니다.
속성 유형은 문자열입니다.
data
백엔드 시스템에서 읽어들인 정보입니다.
속성 유형은 문자열입니다.
adapter
데이터가 검색되는 백엔드 시스템 인스턴스에 대한 정보가 포함됩니다.
thingName
Windchill Navigate에서 백엔드 시스템을 나타내는 어댑터 사물의 이름입니다.
속성 유형은 문자열입니다.
instanceName
백엔드 시스템의 특정 인스턴스 이름입니다.
속성 유형은 문자열입니다.
ItemListsData
항목 및 메타 데이터의 목록입니다. 목록의 각 인스턴스 내에 있는 항목은 동일한 객체 유형이어야 합니다.
objectType
items 배열에 있는 객체의 유형입니다.
속성 유형은 문자열 또는 객체입니다. integer 또는 boolean과 같이 문자열로 변환된 경우 다른 유형을 사용할 수도 있습니다.
items
항목, 항목의 속성 및 속성 값의 목록입니다.
value
특정 속성 및 항목에 대한 값입니다.
속성 유형은 문자열 또는 객체입니다.
PTC.Nav.Descendants
하위 항목, 하위 항목의 하위 항목 등을 의미하는 모든 항목의 하위 항목 배열을 포함합니다.
* 
이 등록 정보는 데이터가 계층적인 경우에만 관련이 있습니다.
metadata
모든 항목에 공통되는 속성에 대한 정보입니다. metadata 아래의 항목은 문자열로 변환된 "INTEGER""BOOLEAN"를 포함하여 type 문자열을 가질 수 있습니다. type 객체인 NAV.OBJECT를 포함할 수도 있습니다.
hasChildren
특정 항목에 하위 항목이 있는지 여부를 나타내는 Windchill 특정 속성입니다. 부품 또는 CAD 문서와만 관련이 있습니다.
등록 정보 유형은 부울입니다.
* 
이 등록 정보는 데이터가 계층적인 경우에만 관련이 있습니다.
typeData
objectType에 대한 추가 정보입니다. 드문 경우에만 사용됩니다.
속성 유형은 JSON 객체입니다.
status
데이터 읽어들이기의 상태입니다.
속성 유형은 문자열입니다.
statusMessage
데이터 읽어들이기 상태에 관한 메시지입니다.
속성 유형은 문자열입니다.
timeStamp
데이터 읽어들이기에 대한 타임스탬프입니다.
속성 유형은 문자열입니다.
CCO 구조의 예
1. 다음 예에는 객체 유형이 하나인 항목이 하나 포함되어 있습니다.
{
"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. 다음 예에는 서로 다른 두 가지 객체 유형이 있는 항목이 하나 포함되어 있습니다. 각 items 배열에는 하나의 객체만 포함되므로 하나의 항목만 있습니다.
{
"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. 다음 예에는 객체 유형이 하나인 두 개의 항목이 포함되어 있습니다. 각 items 배열에는 두 개의 객체가 포함되어 있으므로 두 개의 항목이 있습니다.
{
"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. 다음 예에는 두 개의 객체 유형이 있는 두 개의 항목이 포함되어 있습니다. 각 items 배열에는 두 개의 객체가 포함되어 있으므로 두 개의 항목이 있습니다.
{
"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. 다음 예에는 "string", 문자열로 변환된 "hyperlink"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. 다음 예에는 계층적 데이터가 포함되어 있습니다.
{
"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"
}
도움이 되셨나요?