Добавьте кнопку «Отправить» в Orbeon Form Runner, а затем вызовите собственный Java REST API при отправке.

Я работаю над POC (доказательство концепции), где я оцениваю конструктор/бегун форм Orbeon. Я использую версию сообщества, на всякий случай мне нужно будет изменить код, иначе Professional Edition подойдет для POC.

Я интегрирую FormRunner с моим веб-приложением, работающим на другом веб-сервере, который будет вызывать URL-адрес FormRunner с некоторыми пользовательскими параметрами запроса.

Я хочу удалить кнопки «Сводка», «PDF» и «Обзор» из FormRunner и просто хочу, чтобы кнопка «Сохранить» функционировала как кнопка «Отправить», чтобы при нажатии на нее данные POST отправлялись в мой пользовательский код Java, который, вероятно, будет общаться с моим веб-приложением. через REST API. Затем кнопка отправки должна перенаправить меня на другую страницу с надписью «Ваши данные отправлены».

Мне трудно понять область, в которой я могу изменить код для ожидаемого поведения. Не могли бы вы дать мне несколько советов в этом отношении, пожалуйста?

Спасибо и С уважением, Маюреш.


person mavaze    schedule 15.04.2013    source источник


Ответы (1)


Вам не нужно менять код для этого, вместо этого используйте oxf.fr.detail.buttons.*.*, чтобы определить, какие кнопки будут показаны. Судя по вашему описанию, вам потребуется только workflow-send, которая, среди прочего, может отправлять данные формы в указанную вами службу.

person avernet    schedule 16.04.2013
comment
Спасибо @avernet, это именно то, что я искал. oxf.fr.detail.buttons.*.* сделали свое дело. С еще одним свойством ниже я обрабатываю данные формы в методе doPost() моего пользовательского сервлета, сопоставленного с /createPost URI. ‹свойство as=xs:anyURI name=oxf.fr.detail.send.uri.*.* value=/createPost/› - person mavaze; 23.04.2013
comment
Продолжая предыдущее решение, теперь моя форма имеет элемент управления вложениями, куда я загружаю файл xhtml, который позже использую в методе doPost(). Я извлекаю и анализирую form.xhtml, чтобы получить путь к вложению. Раньше я получал из form.xhtml, /fr/service/persistence/crud/orbeon/builder/data/.../aca4b...63f0.bin, но вдруг стал получать другой путь //file:/ C:/tomcat/temp/xforms_upload_2254538366948889108.tmp?filename=template.xhtml&mediatype=application%2Fxhtml%2Bxml&size=891&mac=9c0a...7563. Не уверен, что пошло не так. - person mavaze; 23.04.2013
comment
Короче говоря, на моем конце происходит следующее... wiki.orbeon.com/forms/doc/developer-guide/xforms-controls/ Пока я ищу URL вложения, например... wiki.orbeon.com/forms/doc/developer-guide/form-runner / - person mavaze; 23.04.2013
comment
@MayureshVaze Вы говорите, что при использовании кнопки workflow-send данные формы отправляются в указанную вами службу, но когда данные были прикреплены к форме, пути указывают на локальные файлы, а не указывают на расположение файла в постоянстве слой? - person avernet; 24.04.2013
comment
Я обрабатываю данные POST, отправленные workflow-send. Однако URL-адрес вложения не исходит из этих данных POST. Вместо этого я извлекаю form.xhtml и анализирую свой URL-адрес вложения. <xf:instance id="fr-form-instance"> <post-template filename="template.xhtml" mediatype="application/xhtml+xml" size="8437">/fr/service/persistence/crud/orbeon/builder/data/.../aca4...63f0.bin</post-template> </xf:instance> Но вдруг я начал получать это значение как //file:/C:/tomcat/temp/xforms_upload_225...108.tmp?filename=template.xhtml&mediatype=application%2Fxhtml%2Bxml&size=891&mac=9c0a...7563. - person mavaze; 24.04.2013
comment
Фрагмент моего класса обслуживания (doPost() моего пользовательского сервлета), который вызывается после того, как пользователь нажимает кнопку типа workflo-send String formurl = contextUrl + "/fr/service/persistence/crud/" + app + "/" + form + "/form/form.xhtml"; InputStream formin = new URL(formurl).openStream(); itemMap = domparser.parseDocument(formin); String template = itemMap.get("post-template"); - person mavaze; 24.04.2013
comment
I used to get template = /fr/service/persistence/crud/orbeon/builder/data/38d96362a05145a52eac2a4593d2c5719780cd54/aca4bdca799f4c821e8cc5cc891debeba7a963f0.bin but now, I am getting template = file:/C:/tomcat/temp/xforms_upload_2831826303033975948.tmp?filename= template.xhtmlmediatype=application%2Fxhtml%2Bxmlsize=891mac=b6ac347cc3c6ff70f14e90905498d4d766b7a4ea - person mavaze; 24.04.2013
comment
@mavaze Итак, вы говорите, что развернутая форма /fr/service/persistence/crud/your-app/your-form/form/form.xhtml содержит //file:/C:/tomcat/…? Этого не должно быть. В версии 4.0 вложение должно быть перемещено в your-app/your-form при публикации и больше не должно находиться в orbeon/builder. Таким образом, путь должен выглядеть примерно так: /fr/service/persistence/crud/your-app/your-form/form/9990d9d2ac2da178caf80fb1aaaa3f12f00c9643.bin. Я попробовал это сейчас, и это работает для меня. Какую версию вы используете› - person avernet; 24.04.2013