Common Communication Object の構造
Common Communication Object は CCO とも呼ばれ、ThingWorx Navigate 内でデータ転送を管理するために使用される JSON 構造です。一般的なユースケースの 1 つでは、バックエンドシステムの 1 つ以上のインスタンスと、それらのシステムから取得されたオブジェクトに、データとメタデータが含まれています。
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
ThingWorx Navigate のバックエンドシステムを表すアダプタ Thing の名前。
プロパティタイプは文字列です。
instanceName
バックエンドシステムの特定のインスタンスの名前。
プロパティタイプは文字列です。
ItemListsData
アイテムとメタデータのリスト。リストの各インスタンス内のアイテムは、同じオブジェクトタイプでなければなりません。
objectType
items 配列内のオブジェクトのタイプ。
プロパティタイプは文字列またはオブジェクトです。integer や boolean などのように Stringify されている場合には、その他のタイプも受け入れることができます。
items
アイテム、その属性、および属性値のリスト。
value
特定の属性とアイテムの値。
プロパティタイプは文字列またはオブジェクトです。
PTC.Nav.Descendants
アイテムのすべての子の配列が含まれています。つまり、子、子の子などです。
* 
このプロパティは、データが階層構造になっている場合にのみ関連します。
metadata
すべてのアイテムに共通する属性に関する情報。metadata にあるアイテムには、Stringify された "INTEGER""BOOLEAN" など、type 文字列を含めることができます。また、type オブジェクト NAV.OBJECT を含めることもできます。
hasChildren
特定のアイテムに子があるかどうかを示す、Windchill 固有の属性。部品または CAD ドキュメントにのみ関連します。
プロパティタイプはブール型です。
* 
このプロパティは、データが階層構造になっている場合にのみ関連します。
typeData
objectType に関する追加情報。まれなケースにのみ使用されます。
プロパティタイプは JSON オブジェクトです。
status
データ取得のステータス。
プロパティタイプは文字列です。
statusMessage
データ取得のステータスに関するメッセージ。
プロパティタイプは文字列です。
timeStamp
データ取得のタイムスタンプ。
プロパティタイプは文字列です。
CCO 構造の例
1. 次の例では、1 つのオブジェクトタイプを持つ 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. 次の例では、2 つの異なるオブジェクトタイプを持つ 1 つのアイテムが含まれています。各 items 配列にはオブジェクトが 1 つだけ含まれているため、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"
}
}
},
{
"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. 次の例には、1 つのオブジェクトタイプを持つ 2 つのアイテムが含まれています。各 items 配列には 2 つのオブジェクトが含まれているため、2 つのアイテムになります。
{
"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. 次の例には、2 つのオブジェクトタイプを持つ 2 つのアイテムが含まれています。各 items 配列には 2 つのオブジェクトが含まれているため、2 つのアイテムになります。
{
"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"、Stringify された "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"
}
これは役に立ちましたか?