Как использовать Java в качестве внутренней логики Orbeon Form и где хранится сгенерированный исходный код xhtml?

Как упоминалось в заголовке выше, я действительно не могу найти соответствующий учебник или информацию в Интернете. Очень надеюсь, что вы, ребята, можете предоставить мне ссылку на учебник или видео, чтобы я мог узнать об этом.

Расположение сгенерированного xhtml на самом деле говорит об этом сценарии. Я развертываю CE-версию Orbeon Form с помощью Tomcat, а затем запускаю ее на локальном хосте: 8080/orbeon. Я попытался создать форму там, но после того, как я сохранил и опубликовал форму, я не могу найти, где находится сгенерированный файл. я хочу получить доступ к сгенерированному коду, где я могу найти код?

после прочтения ответа, предоставленного Инандой, у меня появилось еще одно новое сомнение в том, существует ли версия, на самом деле созданная форма, и она сохраняется в файловой системе?

Очень жаль, что я могу получить какое-то направление или идею, как это сделать. Заранее спасибо!


person Jack    schedule 04.01.2015    source источник


Ответы (1)


Форма не сохраняется в файловой системе, она сохраняет форму в базе данных. В вашем случае он сохраняется в базе данных eXist db, которая представляет собой базу данных XML, связанную с Orbeon.

Посмотрите, как просмотреть код: Как просмотреть исходный код формы Orbeon, сохраненной в eXist-db?

Если вы хотите использовать другую базу данных для сохранения ваших форм вместо Exist, взгляните на: http://wiki.orbeon.com/forms/doc/developer-guide/form-runner/oracle-and-mysql-persistence-layers

Вы можете использовать код Java, добавив файл jar, содержащий ваши классы, в папку lib внутри Orbeon. Затем вы можете отредактировать исходный код вручную и добавить пространство имен в тег xhtml:html, например: xmlns:yourNameSpace="java:com.yourJavaClassName"

После этого вы должны иметь возможность вызывать методы из вашего класса в выражениях XPath, например, для проверки ограничений: yourNameSpace:yourMethodName(parameters) .

Также можно совершать вызовы Rest или вызывать WebService, используя представления XForms. Взгляните на: http://wiki.orbeon.com/forms/how-to/fb-fr/call-service

person Inanda Menezes    schedule 05.01.2015
comment
Спасибо за ответ. Возможно ли, что я использую код Java для управления действием, выполняемым в форме? если да, то как я могу это сделать? - person Jack; 05.01.2015
comment
У меня есть еще одно новое сомнение в том, существует ли версия, на самом деле созданная форма, и она сохраняется в файловой системе? - person Jack; 05.01.2015
comment
Насколько я знаю, нет версии/конфигурации, которая бы сохраняла ее в файловой системе. Я отредактировал свой ответ, чтобы показать возможность использования вашего Java-кода. - person Inanda Menezes; 06.01.2015
comment
@InandaMenezes прав, вы не можете автоматически сохранить форму в файловой системе. Вы можете вручную извлечь сгенерированное определение формы из базы данных, сохранить его в файловой системе и настроить диспетчер ресурсов Orbeon для загрузки определения формы оттуда. Или сохраните его в специальном месте в файле WAR. Но это очень хлопотно, если у вас нет действительно веских причин для этого. - person ebruchez; 07.01.2015
comment
@ebruchez мы написали наш собственный API для хранения определений форм в виде текстовых файлов, когда мы сохраняем и публикуем форму в конструкторе форм. Это значит, что мы можем сохранить код xform в репозитории Git. Мне интересно, будет ли быстрее, если мы вернемся к использованию существующей базы данных и непосредственному извлечению кода. - person jtb; 06.04.2018
comment
@jtb У меня нет определенного мнения по этому поводу. Ясно, что поддержание уровня сохраняемости — это некоторая работа. Если вы используете eXist или реляционную базу данных, вы можете использовать REST API для извлечения определений форм и данных, но это, вероятно, означает, что вам нужно регулярно опрашивать базу данных, если вы не можете установить триггер. - person ebruchez; 07.04.2018