Я пытаюсь передать полезную нагрузку json в переменных в качестве значения, чтобы запустить определение процесса с использованием API-интерфейса engine-rest, как показано ниже: -
API:
http://localhost:8080/engine-rest/process-definition/processService:1:9459dbe9-6b2c-11e8-b9e8-28d2447c697a/start
Тело:
{
"variables": {
"payload": {
"value": {
"mode": "email",
"meta": [{
"key": "topic",
"value": "weather"
}, {
"key": "qos",
"value": "2"
}]
},
"type": "Json"
}
}
}
, но оно дает 400 BAD REQUEST со следующей ошибкой: - Должно предоставить значение 'null' или String для значения типа SerializableValue 'Json'.
Также у меня естьЯ использовал выражение в моем BPMN-процессе, чтобы получить пару ключ-значение, как показано ниже, оно также выдало мне ошибку: -
$ {S (payload) .prop ("mode"). stringValue ()== 'email'}
Теперь рабочие шаги: - когда я пытаюсь отправить полезную нагрузку json для тела в строковом формате, он работает нормально.
API:
http://localhost:8080/engine-rest/process-definition/processService:1:9459dbe9-6b2c-11e8-b9e8-28d2447c697a/start
Body:
{
"variables": {
"payload": {
"value": "{\"mode\": \"email\",\"meta\": [{\"key\": \"topic\",\"value\": \"weather\"},{\"key\": \"qos\",\"value\": \"2\"}]}",
"type": "String"
}
}
}
тот же Java-код, который я использую здесь для получения полезной нагрузки json-
public void notify(DelegateExecution delegateProcessExecution) throws Exception {
Object notificationPayload =
delegateProcessExecution.getVariable("payload");
if (null != notificationPayload) {
String notifyPayload = notificationPayload.toString();
JSONObject inputJson = new JSONObject(notifyPayload);
}
// ...
}
Так что я хочу эту полезную нагрузку как json для всегопроцесс, так что мне не нужно преобразовывать его в строку, как в приведенном выше рабочем примере.