以下のように、engine-rest api を使用してプロセス定義を開始するために、値として変数に json ペイロードを渡そうとしています:-
API:
体 :
{
"variables": {
"payload": {
"value": {
"mode": "email",
"meta": [{
"key": "topic",
"value": "weather"
}, {
"key": "qos",
"value": "2"
}]
},
"type": "Json"
}
}
}
しかし、それは以下のエラーで 400 BAD REQUEST を与えています:- SerializableValue タイプ 'Json' の値に 'null' または文字列値を提供する必要があります。
また、BPMN プロセスで式を使用して、以下のようなキーと値のペアをフェッチしましたが、エラーもスローされました:-
${S(ペイロード).prop("モード").stringValue() == 'メール'}
現在の作業手順:- body json ペイロードを文字列形式で送信しようとすると、正常に動作します。
API:
体:
{
"variables": {
"payload": {
"value": "{\"mode\": \"email\",\"meta\": [{\"key\": \"topic\",\"value\": \"weather\"},{\"key\": \"qos\",\"value\": \"2\"}]}",
"type": "String"
}
}
}
jsonペイロードを取得するためにここで使用しているのと同じJavaコード-
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として使用して、上記の作業例のように文字列に変換する必要がないようにします。