#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.
Ссылки