|
|
|
|
|
|
|
|
|
The result value of `watch` is generated by calculating the
|
|
|
|
|
`watch-express` ognl expression. You can change the ognl expression to
|
|
|
|
|
generate the desired value, please refer to
|
|
|
|
|
[OGNL document](https://commons.apache.org/proper/commons-ognl/language-guide.html).
|
|
|
|
|
|
|
|
|
|
> Maps can also be created using a special syntax.
|
|
|
|
|
>
|
|
|
|
|
>#{ "foo" : "foo value", "bar" : "bar value" }
|
|
|
|
|
>
|
|
|
|
|
>This creates a Map initialized with mappings for "foo" and "bar".
|
|
|
|
|
|
|
|
|
|
The following command generates values in map format:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
watch *MathGame prime* '#{ "params" : params, "returnObj" : returnObj, "throwExp": throwExp}' -x 2 -n 5
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Execute the above command in Telnet shell/WebConsole, the output result:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
ts=2020-08-06 16:57:20; [cost=0.241735ms] result=@LinkedHashMap[
|
|
|
|
|
@String[params]:@Object[][
|
|
|
|
|
@Integer[1],
|
|
|
|
|
],
|
|
|
|
|
@String[returnObj]:@ArrayList[
|
|
|
|
|
@Integer[2],
|
|
|
|
|
@Integer[241],
|
|
|
|
|
@Integer[379],
|
|
|
|
|
],
|
|
|
|
|
@String[throwExp]:null,
|
|
|
|
|
]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Execute the above command with Http api, pay attention to escaping the JSON double quotes:
|
|
|
|
|
|
|
|
|
|
`
|
|
|
|
|
curl -Ss -XPOST http://localhost:8563/api -d @- << EOF
|
|
|
|
|
{
|
|
|
|
|
"action":"exec",
|
|
|
|
|
"execTimeout": 30000,
|
|
|
|
|
"command":"watch *MathGame prime* '#{ \"params\" : params, \"returnObj\" : returnObj, \"throwExp\": throwExp}' -n 3 "
|
|
|
|
|
}
|
|
|
|
|
EOF`{{execute T3}}
|
|
|
|
|
|
|
|
|
|
Http api execution result:
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"body": {
|
|
|
|
|
...
|
|
|
|
|
"results": [
|
|
|
|
|
...
|
|
|
|
|
{
|
|
|
|
|
...
|
|
|
|
|
"type": "watch",
|
|
|
|
|
"value": {
|
|
|
|
|
"params": [
|
|
|
|
|
1
|
|
|
|
|
],
|
|
|
|
|
"returnObj": [
|
|
|
|
|
2,
|
|
|
|
|
5,
|
|
|
|
|
17,
|
|
|
|
|
23,
|
|
|
|
|
23
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
...
|
|
|
|
|
"type": "watch",
|
|
|
|
|
"value": {
|
|
|
|
|
"params": [
|
|
|
|
|
-98278
|
|
|
|
|
],
|
|
|
|
|
"throwExp": {
|
|
|
|
|
"@type": "java.lang.IllegalArgumentException",
|
|
|
|
|
"localizedMessage": "number is: -98278, need >= 2",
|
|
|
|
|
"message": "number is: -98278, need >= 2",
|
|
|
|
|
"stackTrace": [
|
|
|
|
|
...
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
...
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
You can see that the value of the watch result becomes a map object, and
|
|
|
|
|
the program can read value through a key .
|