Интеграция Orbeon с Alfresco не работает при попытке отправить PDF-версию моей формы

#debugging #pdf #alfresco #orbeon

#отладка #PDF #alfresco #orbeon

Вопрос:

Краткое описание проблемы:
Интеграция Orbeon Forms 3.9.0 PE Form Runner с Alfresco не работает для моей формы, если для oxf.fr.alfresco.send-pdf.*.* установлено значение true в WEB-INF/resources/config/properties-local.xml . Интеграция Alfresco работает корректно для простой тестовой формы или если Orbeon настроен на отправку только XML, а не PDF-версии. Моя неудачная форма изначально была создана с помощью CE-версии Form Builder и импортирована в PE-версию путем вырезания и вставки источника формы.

Подробности проблемы:
Я настроил Orbeon для хранения данных моей формы как в формате XML, так и в формате PDF в Alfresco, однако при нажатии кнопки отправки в Alfresco ничего не сохранялось — содержимое формы обновлялось только в существующей базе данных Orbeon Forms.

Затем я создал простую тестовую форму с одним полем, и она была успешно отправлена в Alfresco, и обе версии XML и PDF были сохранены в настроенном каталоге.

Проверка orbeon.файл журнала после отправки как простой тестовой формы, так и более сложной формы, в которой произошел сбой, показывает, что неудачная форма выдает предупреждение в файле журнала Orbeon, которое не возникает при успешной форме:

 WARN  XFormsServer  - instance() - instance not found {instance id: "fr-persistence-instance"}
  

Я подозреваю, что именно это является причиной сбоя, но я не знаю, как это исправить.

Как файл журнала orbeon, так и анализ Wireshark показывают, что обработка для сбойной формы останавливается после первых двух шагов и никогда не достигает стадии генерации PDF.

Вот трафик, генерируемый при попытке отправить форму с ошибкой:

 No. Stream Time      Protocol Info
  8 1      0.013116  HTTP/XML PUT /orbeon/fr/service/exist/crud/test/alfresco2/data/8758825eb4cb1047b6c70cb9a8021d63/data.xml HTTP/1.1 
 17 3      0.505195  HTTP/XML PUT /orbeon/exist/rest/db/orbeon/fr/test/alfresco2/data/8758825eb4cb1047b6c70cb9a8021d63/data.xml HTTP/1.1 
 19 3      2.703298  HTTP     HTTP/1.1 201 Created 
 23 1      2.728196  HTTP/XML HTTP/1.1 200 OK 
  

А вот трафик, сгенерированный при отправке простой тестовой формы:

 No. Stream Time      Protocol Info
  8 1      0.008351  HTTP/XML PUT /orbeon/fr/service/exist/crud/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 17 3      0.493899  HTTP/XML PUT /orbeon/exist/rest/db/orbeon/fr/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 19 3      1.061385  HTTP     HTTP/1.1 201 Created 
 23 1      1.067774  HTTP/XML HTTP/1.1 200 OK 
 27 1      1.266107  HTTP/XML POST /orbeon/fr/service/test/alfresco/pdf/4b9597478172d9e3a99db4f333136101?fr-language=en HTTP/1.1 
 29 3      1.678506  HTTP     GET /orbeon/fr/service/exist/crud/test/alfresco/form/form.xhtml?document=4b9597478172d9e3a99db4f333136101 HTTP/1.1 
 34 4      1.724603  HTTP     GET /orbeon/exist/rest/db/orbeon/fr/test/alfresco/form/form.xhtml HTTP/1.1 
 63 4      1.887303  HTTP/XML HTTP/1.1 200 OK 
 66 3      1.887533  HTTP/XML HTTP/1.1 200 OK 
 69 3      3.401139  HTTP     GET /orbeon/fr/service/exist/crud/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 71 4      3.466335  HTTP     GET /orbeon/exist/rest/db/orbeon/fr/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 74 4      3.467743  HTTP/XML HTTP/1.1 200 OK 
 78 3      3.469550  HTTP/XML HTTP/1.1 200 OK 
 83 5      7.379995  HTTP     GET /orbeon/xforms-server/3.9.0.201105152053/orbeon-f8ea744bfde8e279e895681476e87b4ae5eec96a.css HTTP/1.1 
 94 5      7.601110  HTTP     HTTP/1.1 200 OK  (text/css)
 96 5      7.636405  HTTP     GET /orbeon/xforms-server/3.9.0.201105152053/orbeon-c2aa09348528b375f1cb95d729030dfb1a6373a0.css HTTP/1.1 
107 5      7.698251  HTTP     HTTP/1.1 200 OK  (text/css)
109 1      8.540060  HTTP/XML HTTP/1.1 200 OK 
111 1      8.565153  HTTP     GET /orbeon/xforms-server/dynamic/90101f83d4c2f6ea307ee44255f29a21 HTTP/1.1 
114 1      8.598588  HTTP     HTTP/1.1 200 OK  (application/pdf)
118 1      8.648522  HTTP/XML POST /alfresco/api/AuthenticationService HTTP/1.1 
121 1      8.818012  HTTP/XML HTTP/1.1 200 OK 
125 1      8.848028  HTTP/XML POST /alfresco/api/RepositoryService HTTP/1.1 
128 1      11.108350 HTTP/XML HTTP/1.1 200 OK 
132 1      11.123460 HTTP/XML POST /alfresco/api/ContentService HTTP/1.1 
135 1      11.238135 HTTP/XML HTTP/1.1 200 OK 
139 1      11.272450 HTTP/XML POST /alfresco/api/AuthenticationService HTTP/1.1 
142 1      11.287273 HTTP/XML HTTP/1.1 200 OK 
145 1      11.300528 HTTP/XML POST /alfresco/api/RepositoryService HTTP/1.1 
148 1      11.524832 HTTP/XML HTTP/1.1 200 OK 
151 1      11.533724 HTTP/XML POST /alfresco/api/ContentService HTTP/1.1 
154 1      11.610843 HTTP/XML HTTP/1.1 200 OK 
156 1      12.522981 HTTP     GET /orbeon/fr/service/exist/crud/test/alfresco/form/form.xhtml?document=My-Confirmation-Page HTTP/1.1 
157 3      12.556468 HTTP     GET /orbeon/exist/rest/db/orbeon/fr/test/alfresco/form/form.xhtml HTTP/1.1 
183 3      12.688109 HTTP/XML HTTP/1.1 200 OK 
186 1      12.688383 HTTP/XML HTTP/1.1 200 OK 
194 7      13.630066 HTTP     GET /web-assets/FormSiteLogo.png HTTP/1.1 
198 7      13.631951 HTTP     HTTP/1.1 200 OK  (PNG)
  

Отметив, что сбой процесса произошел до создания PDF-файла, я отключил отправку PDF-версии в Alfresco, а затем XML-версия исходной формы была успешно сохранена в Alfresco. Вот трафик от отправки формы:

 No. Stream Time      Protocol Info
  8 1      0.007190  HTTP/XML PUT /orbeon/fr/service/exist/crud/test/alfresco2/data/8758825eb4cb1047b6c70cb9a8021d63/data.xml HTTP/1.1 
 17 3      0.447543  HTTP/XML PUT /orbeon/exist/rest/db/orbeon/fr/test/alfresco2/data/8758825eb4cb1047b6c70cb9a8021d63/data.xml HTTP/1.1 
 19 3      1.048508  HTTP     HTTP/1.1 201 Created 
 23 1      1.075924  HTTP/XML HTTP/1.1 200 OK 
 27 1      1.365397  HTTP/XML POST /alfresco/api/AuthenticationService HTTP/1.1 
 31 1      1.775457  HTTP/XML HTTP/1.1 200 OK 
 35 1      1.815342  HTTP/XML POST /alfresco/api/RepositoryService HTTP/1.1 
 38 1      3.784269  HTTP/XML HTTP/1.1 200 OK 
 42 1      3.794841  HTTP/XML POST /alfresco/api/ContentService HTTP/1.1 
 45 1      4.441574  HTTP/XML HTTP/1.1 200 OK 
  

Поскольку отправка PDF-файлов по-прежнему отключена, я изучил поведение отправки простой тестовой формы и заметил, что она по-прежнему генерирует некоторый дополнительный трафик, который не генерирует моя исходная форма (пакеты с 53 по 97 ниже):

 No. Stream Time      Protocol Info
 12 2      0.296627  HTTP/XML PUT /orbeon/fr/service/exist/crud/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 21 3      0.543543  HTTP/XML PUT /orbeon/exist/rest/db/orbeon/fr/test/alfresco/data/4b9597478172d9e3a99db4f333136101/data.xml HTTP/1.1 
 23 3      0.734490  HTTP     HTTP/1.1 201 Created 
 27 2      0.743573  HTTP/XML HTTP/1.1 200 OK 
 31 2      0.822314  HTTP/XML POST /alfresco/api/AuthenticationService HTTP/1.1 
 37 2      0.988298  HTTP/XML HTTP/1.1 200 OK 
 41 2      0.997752  HTTP/XML POST /alfresco/api/RepositoryService HTTP/1.1 
 44 2      1.117861  HTTP/XML HTTP/1.1 200 OK 
 48 2      1.128387  HTTP/XML POST /alfresco/api/ContentService HTTP/1.1 
 51 2      1.340271  HTTP/XML HTTP/1.1 200 OK 
 53 2      1.932827  HTTP     GET /orbeon/fr/service/exist/crud/test/alfresco/form/form.xhtml?document=My-Confirmation-Page HTTP/1.1 
 55 3      1.953312  HTTP     GET /orbeon/exist/rest/db/orbeon/fr/test/alfresco/form/form.xhtml HTTP/1.1 
 83 3      1.984616  HTTP/XML HTTP/1.1 200 OK 
 86 2      1.984743  HTTP/XML HTTP/1.1 200 OK 
 94 5      3.356853  HTTP     GET /web-assets/FormSiteLogo.png HTTP/1.1 
 97 5      3.358165  HTTP     HTTP/1.1 200 OK  (PNG)
  

Форма, которая не может быть отправлена при включенной отправке PDF, изначально была создана с помощью CE-версии Orbeon Forms. Это может иметь или не иметь существенного значения для проблемы, но я предполагаю, что именно поэтому с простой тестовой формой происходит что-то дополнительное, чего не происходит с формой, созданной в версии CE.

Комментарии:

1. Я забыл упомянуть, что генерация PDF-файлов вне процесса отправки рабочего процесса работает правильно, так как нажатие кнопки PDF генерирует PDF-файл, который загружается в браузер.

2. Я определил, что ошибка вызвана элементом управления, который 1) не отображается, 2) требуется и 3) пуст. Если она не видна, не имеет значения, является ли она пустой. Кнопки «Сохранить» и «PDF» обрабатывают поле таким образом и ведут себя так, как ожидалось. Но кнопка «Отправить» показывает неправильное поведение, если поле пустое, даже если оно не видно.

3. Теперь эта проблема решена. Для получения дополнительной информации см.: orbeon-forms-ops-users.24843.n4.nabble.com /…

Ответ №1:

Теперь эта проблема решена. Вот решение:

persistence-model.xml не имеет установленного атрибута validate=»false». По-видимому, это изменение было внесено с момента выпуска стабильной версии 3.9 20110515. Я добавил атрибут validate=»false» в fr-pdf-service-submission в apps/fr/includes/persistence-model.xml в orbeon-form-runner.jar файл в стабильной версии 3.9, и теперь он успешно отправляет PDF-файл в Alfresco.

Ссылки