The handle of the app is 1.
1. Create an engine session list in order to list the measures in the app (qMeasureListDef.
The client sends:
{
"jsonrpc": "2.0",
"id": 1,
"method": "CreateObject",
"handle": 1,
"params": [
{
"qInfo": {
"qId": "SE01",
"qType": "SessionLists"
},
"qAppObjectListDef": {
"qType": "sheet",
"qData": {
"id": "/qInfo/qId"
}
},
"qDimensionListDef": {
"qType": "Dimension",
"qData": {}
},
"qMeasureListDef": {
"qType": "Measure",
"qData": {}
}
}
]
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"qReturn": {
"qType": "GenericObject",
"qHandle": 2
},
"qInfo": {
"qId": "SE01",
"qType": "SessionLists"
}
},
"change": [
2
]
}
The session list is created and has 2 as a handle.
2. Create a measure with the identifier Measure01.
The client sends:
{
"jsonrpc": "2.0",
"id": 2,
"method": "CreateMeasure",
"handle": 1,
"params": [
{
"qInfo": {
"qId": "Measure01",
"qType": "Measure"
},
"qMeasure": {
"qLabel": "measure label",
"qDef": "Country"
}
}
]
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"qReturn": {
"qType": "GenericMeasure",
"qHandle": 3
},
"qInfo": {
"qId": "Measure01",
"qType": "Measure"
}
},
"change": [
3
]
}
The measure Measure01 is created and has 3 as a handle.
3. Clone the measure Measure01.
The client sends:
{
"jsonrpc": "2.0",
"id": 3,
"method": "CloneMeasure",
"handle": 1,
"params": [
"Measure01"
]
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"qCloneId": "75664150-95d9-49cf-ac02-bbfe94cfacdb"
}
}
The clone is created. The identifier (set by the engine) of the clone is 75664150-95d9-49cf-ac02-bbfe94cfacdb.
4. Get the handle of the clone. 75664150-95d9-49cf-ac02-bbfe94cfacdb is the identifier of the clone.
The client sends:
{
"jsonrpc": "2.0",
"id": 4,
"method": "GetMeasure",
"handle": 1,
"params": [
"75664150-95d9-49cf-ac02-bbfe94cfacdb"
]
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 4,
"result": {
"qReturn": {
"qType": "GenericMeasure",
"qHandle": 4
}
}
}
The handle of the clone is 4.
5. Get the properties of the clone. The handle of the request is 4 because the clone uses 4 as a handle.
The client sends:
{
"jsonrpc": "2.0",
"id": 5,
"method": "GetProperties",
"handle": 4,
"params": []
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 5,
"result": {
"qProp": {
"qInfo": {
"qId": "75664150-95d9-49cf-ac02-bbfe94cfacdb",
"qType": "Measure"
},
"qMeasure": {
"qLabel": "measure label",
"qDef": "Country",
"qGrouping": "N",
"qExpressions": [],
"qActiveExpression": 0
},
"qMetaDef": {}
}
}
}
The clone is identical to the original measure.
6. Check that the clone is added to the session list. The handle of the request is 2 because the session list uses 2 as a handle.
The client sends:
{
"jsonrpc": "2.0",
"id": 6,
"method": "GetLayout",
"handle": 2,
"params": []
}
The engine returns:
{
"jsonrpc": "2.0",
"id": 6,
"result": {
"qLayout": {
"qInfo": {
"qId": "SE01",
"qType": "SessionLists"
},
"qSelectionInfo": {},
"qAppObjectList": {
"qItems": []
},
"qDimensionList": {
"qItems": []
},
"qMeasureList": {
"qItems": [
{
"qInfo": {
"qId": "Measure01",
"qType": "Measure"
},
"qData": {}
},
{
"qInfo": {
"qId": "75664150-95d9-49cf-ac02-bbfe94cfacdb",
"qType": "Measure"
},
"qData": {}
}
]
}
}
}
}
The session list contains the measure Measure01 and the clone 75664150-95d9-49cf-ac02-bbfe94cfacdb.