TIBCO BW: палитра XML в Java
Я пытаюсь понять концепцию XML To Java
, Я не понимаю, когда или почему это действительно необходимо в моем определении процесса.
Это как-то связано с тем, что элемент находится в повторяемом состоянии в моей схеме или нет?
Это ошибка, с которой я сталкиваюсь на вкладке ввода.
Ошибка конфигурации BW-JAVA-100056: класс java [javax.xml.namespace.QName] не содержит конструктор по умолчанию или конструктор без аргументов.
Для операции преобразования XML в JAVA java-класс [Process.DemoBillSVC.objects.maintainTestCase] должен состоять только из классов с конструкторами по умолчанию
Заранее спасибо:)
1 ответ
Деятельность XML To Java используется для преобразования документов XML в объекты Java. Чтобы класс Java был совместим с этим действием, класс должен
- иметь конструктор по умолчанию без аргументов
- реализовать интерфейс java.io.Serializable
Затем BusinessWorks проанализирует класс, чтобы определить различные поля на основе методов получения и установки, доступных в классе. Эти поля появятся на вкладке "Вход" на вкладке свойств действий. Схема для обработки XML создается автоматически и находится в папке "Схемы проектов".
Это полезно, если вы хотите передать данные, которые есть в вашем процессе, в метод Java, который принимает Java-объект, который плохо сопоставляется с примитивным типом, таким как String. Например, если у вас есть метод Java, который вы хотите вызвать из BusinessWorks с именем addPerson:
public void addPerson(Person person){....}
Тогда у вас также будет класс Person, который может выглядеть примерно так:
package org.initrode
public class Person implements java.io.Serializable{
//Needs to implement Serializable
String name;
String address;
public Person(){
//Public default constructor without arguments
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAddress(String address){
this.address= address;
}
public void getAddress(){
return this.address;
}
}
Теперь вы можете использовать действие Java To XML с классом Person выше для инициализации объекта Person со значениями, которые вы могли бы получить из других действий в процессе (REST, JDBC, File и т. Д.). А затем отобразите выходные данные этого действия на вход действия Java Invoke.
Если у вас есть код, который вы не хотите переписывать в BW, это хороший способ сделать это. Если ваши классы не имеют конструкторов по умолчанию или не реализуют Serializable, иногда проще и быстрее писать объекты и методы-оболочки, чем переписывать всю бизнес-логику приложения. Надеюсь это поможет.