Как правило, у вас есть два варианта создания такого рабочего процесса: с помощью FormBuilder / FormRunner (но так как я ими не пользуюсь, я не могу вам с этим помочь) или «вручную» с использованием XML трубопроводы и, например, Процессор SQL для взаимодействия с базами данных SQL.
конвейеры XML (XPL) позволяют обрабатывать данные XML, например, создавать фрагменты XML на основе данных сеанса , XML или Базы данных SQL или Веб-службы XML . XPL похож на XProc, но предоставляет доступ к дополнительным модулям, называемым процессорами:
Процессоры , например, Процессор SQL , предоставляют «интерфейс» для взаимодействия с базами данных SQL, делая доступным весь спектр операций SQL CRUD.
Если обе формы, о которых вы говорите, являются частью одного и того же xforms:model
, вы можете соединить их, используя технику, описанную Филом.
Если это не так, вам нужно будет сделать данные xforms:instance
формы 1 постоянными, прежде чем переходить к форме 2. Обычно xforms:submission
s используются для отправки данных на уровень персистентности. Вам нужно будет создать следующие элементы:
- a
xforms:submission
элемент внутри xforms: модель формы 1, отправляющая данные экземпляра в определенный конвейер xpl (называемый xpl 1);
- xpl 1 для записи данных в базу данных sql: для построения и отправки требуемой команды sql необходим как минимум компонент процессора sql. Вы можете добавить процессор xslt, если вам нужно предварительно обработать данные экземпляра.
- xpl 2 для чтения из базы данных sql: так же, как xpl 1, просто в другую сторону. Разделение операции чтения (xpl 2) при записи в sql db (xpl 1) обладает преимуществом большей гибкости, что делает форму 2 более независимой от формы 1.
- в вашей форме 2 вы можете инициализировать экземпляр с помощью xpl 2. Существуют различных способов инициализации
xforms:instance
, описанных в вики .
Используя эти компоненты, вы можете создавать очень гибкие рабочие процессы.