Convert json rest response для объекта данных jBPM (невозможно преобразовать respose к объекту) - PullRequest
1 голос
/ 26 февраля 2020

Я имею дело с jBPM 7.22.0.Final.

Я использую сервисную задачу REST для получения ответа от этого API https://reqres.in/api/users/1

{
  "data": {
    "id": 1,
    "email": "george.bluth@reqres.in",
    "first_name": "George",
    "last_name": "Bluth",
    "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
  }
}

Я хочу получить этот ответ в объекте, поэтому я создал этот класс (или объект данных, как он вызывается в jBPM):

package com.bechirspace.testproject;

/**
 * This class was automatically generated by the data modeler tool.
 */

    public class data implements java.io.Serializable {



static final long serialVersionUID = 1L;

    private Integer id;
    private java.lang.String email;
    private java.lang.String first_name;
    private java.lang.String last_name;
    private java.lang.String avatar;

    public data() {
    }

    public java.lang.String getEmail() {
        return this.email;
    }

    public void setEmail(java.lang.String email) {
        this.email = email;
    }

    public java.lang.String getFirst_name() {
        return this.first_name;
    }

    public void setFirst_name(java.lang.String first_name) {
        this.first_name = first_name;
    }

    public java.lang.String getLast_name() {
        return this.last_name;
    }

    public void setLast_name(java.lang.String last_name) {
        this.last_name = last_name;
    }

    public java.lang.String getAvatar() {
        return this.avatar;
    }

    public void setAvatar(java.lang.String avatar) {
        this.avatar = avatar;
    }

    public java.lang.Integer getId() {
        return this.id;
    }

    public void setId(java.lang.Integer id) {
        this.id = id;
    }

    public data(java.lang.Integer id, java.lang.String email,
            java.lang.String first_name, java.lang.String last_name,
            java.lang.String avatar) {
        this.id = id;
        this.email = email;
        this.first_name = first_name;
        this.last_name = last_name;
        this.avatar = avatar;
    }

}

, и я создал в jBPM глобальную переменную с именем res, имеющую тип этот объект данных, в котором я хочу сохранить свой ответ. Таким образом, в «Назначениях» моей задачи обслуживания REST у меня есть то, что на скриншоте.

enter image description here

, как вы видите, я хочу сохранить результат в мою res переменную типа Data (которую я создал), и я поместил в ResultClass мой тип класса, в который я хочу преобразовать (com.bechirspace.testproject.data). Но это не работает, я могу успешно построить и развернуть, но когда я хочу запустить «Экземпляр нового процесса», он показывает это сообщение Ошибка

    Unable to complete your request. The following exception occurred:
     "Unable to create response: [src.main.resources.testProcess:1,434 - REST:7]
 -- java.lang.RuntimeException: Unable to transform respose to object".

PS : я могу напечатайте мой ответ, если я назначу его в строковую переменную, поэтому проблема заключается в преобразовании ответа, а не в его получении.

Вы можете сказать, что это дублированный вопрос ( Отобразить ответ REST jBPM на Пользовательский объект ), но я не нашел четкого ответа, кто-нибудь может помочь?

1 Ответ

0 голосов
/ 27 февраля 2020

Итак, я создал еще один объект данных с именем Person с атрибутом «data» и изменил Result и ResultClass на этот новый класс. Я должен был следовать той же структуре, что и мой json respone, который является объектом, имеющим атрибут объекта с именем data, который имеет остальные атрибуты.

package com.bechirspace.testproject;

/**
 * This class was automatically generated by the data modeler tool.
 */

public class Person implements java.io.Serializable {

    static final long serialVersionUID = 1L;

    private com.bechirspace.testproject.data data;

    public Person() {
    }

    public com.bechirspace.testproject.data getData() {
        return this.data;
    }

    public void setData(com.bechirspace.testproject.data data) {
        this.data = data;
    }

    public Person(com.bechirspace.testproject.Data data) {
        this.data = data;
    }


}
...