 | Уровень сложности: средний Киат Синг Лай, ИТ-специалист,
IBM
20.10.2008 Узнайте, как отделить уровень данных формы от уровня её презентации с помощью модели данных XML и IBM Workplace Forms. IBM Workplace Forms предоставляет набор интерфейсов, необходимых для создания электронных форм, которые обладают функциями невозможности отказа от авторства и ревизуемости, характерными для бумажных форм.
Каждый год в различных организациях на распечатку бумажных форм тратятся миллиарды долларов. Для снижения этих издержек был разработан язык Extensible Forms Description Language (XFDL). XFDL основан на XML, что помогает перенести традиционные системы работы с бумажными формами в Интернет, сохранив в то же время характерные для бумажных форм невозможность отказа от авторства и ревизуемость. XFDL также поддерживает функциональную совместимость приложений и соответствие Интернет-стандартам.
В статье обсуждается концепция модели данных XML применительно к XFDL-форме. Используя в качестве примера простую XFDL-форму - заявление о предоставлении отпуска, мы продемонстрируем, как с помощью модели данных XML отделить уровень данных формы от уровня презентации. Прочитав нашу статью, вы узнаете о концепции модели данных XML, сравните модель данных XML и модель XForms и выполните шаги, необходимые для создания модели данных XML.
Введение в модель данных XML
XFDL ориентирован на работу с документами: уровень презентации, логика и данные формы находятся в одном файле. Другими словами, данные формы встроены в саму XFDL-форму. Эта ориентированность на документы делает XFDL-документы юридически обязательными. Целью XFDL является невозможность отказа от авторства нормативно-правовых документов и документов с цифровой подписью. Поэтому необходимо хранить форму целиком, в том числе логику, данные и средства презентации. Однако в некоторых случаях, например, при использовании форм для подачи заявления о предоставлении отпуска, для обработки или хранения приложению не требуется вся форма. В этом случае обрабатывающему приложению отправляются только необходимые данные, например имя, даты и тип отпуска, а не форма целиком.
По этой причине и появилась модель данных XML. Модель данных XML облегчает интеграцию существующих XFDL-форм с приложениями, имеющими XML-интерфейс. Добавив модель данных XML к XFDL-форме, можно собрать необходимые данные и поместить их в отдельный блок XML в форме. Этот блок XML произволен, поэтому его можно сформатировать с соответствии с любой XML-схемой. Таким образом, данные формы отделяются от собственно презентации (пользовательского интерфейса). Вместо того чтобы передавать обрабатывающему приложению для анализа всю форму, можно определить, какие данные выбирать из формы и отправлять обрабатывающему приложению.
На рисунке 1 показано, что вводимые в форму данные автоматически заполняют XML-блок. При запуске процесса передачи (обычно с помощью кнопки Submit) XML отсылается. Получающее приложение может выполнить обработку почти немедленно, если XML соответствует определённой схеме. Это значительно снижает усилия по написанию специального кода, выполняющего извлечение данных из XFDL-формы. Как уже говорилось, этот блок XML можно форматировать любым способом.
Рисунок 1. Отделение уровня данных от XFDL-формы
Может возникнуть вопрос: поскольку XFDL основан на XML, зачем создавать ещё один блок XML, содержащий данные? Это нужно, чтобы управлять данными, особенно если мы имеем дело с большими и сложными приложениями форм. Взгляните на пример, показанный на рисунке 2. Если не использовать модель данных XML, в поля формы могут быть внедрены все данные, что осложнит их извлечение и обработку.
Как показано во фрагменте XML справа, если используется модель данных XML, собираются только необходимые данные. В результате мы получаем чистый XML, содержащий только нужные данные.
Рисунок 2. Типичная модель XFDL и XML
Помимо обеспечения функциональной совместимости, модель данных XML также упрощает обмен информацией между страницами формы. При использовании такой модели изменения данных на одной странице могут автоматически отображаться на другой. Это реализуется через привязки, которые более подробно обсуждаются в следующем разделе.
В IBM Workplace Forms имеется и функция Smartfill, также основанная на этой модели. При помощи этой функции можно автоматизировать заполнение формы на основе сохранённых пользователем данных. Это значительно сокращает время заполнения формы, снижает вероятность человеческих ошибок и повышает удобство пользовательского интерфейса в целом.
Для создания полной модели данных XML необходимы три элемента – экземпляры данных, привязки и правила передачи.
Экземпляры данных
Экземпляры данных являются произвольными блоками XML. В модели данных XML может быть свыше одного экземпляра данных. Если используется более чем один экземпляр, необходимо определить уникальные идентификаторы (ID) для каждого из них. В листинге 1 в качестве ID экземпляра используется LeaveAppInstance. Этот экземпляр содержит четыре элемента, в которых хранится информация из заявления о предоставлении отпуска: имя, тип отпуска, время его начала и окончания. Формат данных экземпляра может быть любым, пока он соответствует заданным схемам. Листинг 1 служит примером экземпляра данных заявления о предоставлении отпуска.
Листинг 1. Исходный код экземпляра данных
<xforms:instance id="LeaveAppInstance" xmlns="http://www.ibm.com/xmlns/prod/XFDL/Custom">
<leaveApplicationData>
<name>David</name>
<LeaveType>Annual</LeaveType>
<StartDate>8 February 2007</StartDate>
<EndDate>9 February 2007</EndDate>
</leaveApplicationData>
</xforms:instance>
|
Для определения дополнительных экземпляров данных добавьте ещё один блок <xforms:instance>. Лучше всего группировать данные по их предназначению. Возьмём в качестве примера заявление о предоставлении отпуска. Возможно, вам потребуются два экземпляра данных – один будет отсылаться приложению, обрабатывающему информацию об отпуске, а другой – приложению, обновляющему календарь.
Привязки
Привязки описывают взаимосвязи между элементами формы. Как уже говорилось, привязка создаёт взаимосвязь между элементами модели данных XML и полями формы. Привязка определяется с помощью тега <bindings>. На рисунке 3 показана взаимосвязь между текстовым полем Name формы и элементом Name экземпляра данных.
Рисунок 3. Взаимосвязь элементов формы и модели данных XML
На рисунке 4 показана взаимосвязь между страницей 1, страницей 2 и данными приложения регистрации отпусков. Изменения на странице 1 изменяют и страницу 2.
Рисунок 4. Пример взаимосвязи между страницами формы
>Правила передачи
Правила передачи определяют, каким образом и какой экземпляр данных может быть передан приложению для обработки. Правило передачи не требуется, если вы хотите передать обрабатывающему приложению форму целиком. То, какой именно экземпляр данных должен передаваться, определяется в свойствах правила передачи. Правило передачи обычно связывается с кнопкой Submit формы.
Существуют дополнительные компоненты модели данных XML, например, схема для валидации экземпляра данных и фрагмент данных, который используется Smartfill. В нашей статье мы не рассматриваем в подробностях схему и фрагмент данных.
Модель данных XML и модель XForms
Модель данных XML появилась в предыдущих версиях IBM Workplace Forms. Начиная с IBM Workplace Forms V2.6, применяются два варианта модели данных: модель данных XML и модель XForms.
Модель XForms, так же как и модель данных XML, предназначена для отделения уровня данных от уровня презентации. Подобно модели данных XML, модель XForms используется для описания данных. Модель XForms также состоит из трёх основных взаимодействующих друг с другом частей: экземпляров данных, привязок и передач.
XForms является стандартом World Wide Web Consortium (W3C), и на его основе будут создаваться формы следующего поколения. Таким образом, если вы создаёте новую форму и хотите добавить к ней уровень данных, стоит подумать об XForms. Тем не менее использовать модель XForms стоит не всегда, особенно если у вас имеются старые формы, содержащие элементы XFDL. Преобразование каждого отдельного элемента XFDL в элемент XForms занимает довольно много времени, особенно если используются большие и сложные приложения форм. Поэтому в статье объясняется, как создать модель данных XML для существующей формы.
Создание модели данных XML для XFDL-формы
Чтобы создать модель данных XML, прежде всего необходима форма. Это может быть существующая XFDL-форма или, если вы хотите просто ознакомиться с концепцией, новая форма, которую нужно создать с помощью IBM Workplace Forms Designer. Для удобства мы создали простую форму заявления о предоставлении отпуска, которая и будет использоваться в статье. Загрузить эту форму можно в разделе "Загрузка" настоящей статьи. Подробные инструкции по созданию форм здесь не приводятся.
Требования
Для выполнения шагов, о которых пойдёт речь в следующем разделе данной статьи, нужно установить указанные ниже программные продукты:
- IBM Workplace Forms Designer V2.6
- IBM Workplace Forms Viewer V2.6
- Microsoft Internet Explorer V6.0
В форме заявления о предоставлении отпуска используется обычная XFDL-форма без поддержки модели данных XML. Форма состоит из пяти полей:
-
Name - текстовое поле, в которое вводится имя подателя заявления.
-
Leave type - всплывающий элемент, в котором податель заявления может выбрать тип отпуска, например, ежегодный отпуск, отпуск по болезни или свадебный отпуск.
-
Start date - поле со списком, в которое вводится дата начала отпуска.
-
End date - поле со списком, в которое вводится дата окончания отпуска.
-
Submit - кнопка передачи заявления о предоставлении отпуска.
Первые четыре элемента (Name, Leave Type, Start Date и End Date) служат для ввода данных, которые нужно собрать. Эти данные группируются в одном экземпляре данных. Кнопка Submit запускает передачу этого экземпляра данных обрабатывающему приложению. Форма заявления о предоставлении отпуска показана на рисунке 5.
Рисунок 5. Пример формы заявления о предоставлении отпуска
Подготовка среды
Для работы с моделью данных XML необходимы два представления: XMLModel и XMLModel Instance. В перспективе IBM Workplace Forms по умолчанию эти представления не отображаются. Чтобы их включить, выполните следующие шаги:
-
Из IBM Workplace Forms Designer перейдите в Window – Show View – XMLModel, как показано на рисунке 6. Повторите этот шаг применительно к представлению XMLModel Instance. В представлении XMLModel можно выполнить предварительный просмотр модели данных XML, в которую входит экземпляр данных, привязки (связанные поля) и передачи (правила передачи и действия). С другой стороны, в представлении XMLModel Instance отображаются определённые экземпляры.
Рисунок 6. Включение представлений XMLModel и XMLModel Instance
- Убедитесь, что отображаются оба представления, XMLModel и XMLModel Instance.
Создание модели XML
В примере формы заявления о предоставлении отпуска модель XML по умолчанию не используется, поэтому добавим в эту форму модель данных XML. В представлении XMLModel правой кнопкой мыши нажмите "No XML Model Exists" и выберите "Add XML Model". После этого вы увидите, что создана модель "XML Model Instances (1) instances".
Выберите представление Source формы. Вы увидите, что модель данных XML <xmlmodel> и экземпляр данных по умолчанию <instances> добавлены к форме.
Листинг 2. Модель данных XML и экземпляр данных по умолчанию
<xmlmodel>
<instances>
<xforms:instance id="instance1"
xmlns="http://www.ibm.com/xmlns/prod/XFDL/Custom"></xforms:instance>
</instances>
</xmlmodel>
|
ПРИМЕЧАНИЕ: Можно добавлять сколько угодно экземпляров данных, выбрав "Create XML Model Instance" в представлении XMLModel Instance. В нашей статье мы используем экземпляр данных по умолчанию (т. е. instance1). Если у вас более одного экземпляра, нужно присвоить каждому уникальный ID.
Далее, изменим имя instance ID на LeaveAppInstance. Сделать это можно либо из представления XMLModel Instance, либо отредактировав исходный код. Исходный код приведён в листинге 3.
Листинг 3. Изменение имени instance ID
<xmlmodel>
<nstances>
<xforms:instance id="LeaveInstance"
xmlns="http://www.ibm.com/xmlns/prod/XFDL/Custom">
|
Вернитесь в представление Design.
Добавление элемента для экземпляра данных LeaveAppInstance
В предыдущем разделе вы узнали, как создавать модель данных XML и экземпляр данных (по умолчанию). Каждая модель данных XML может содержать любое количество экземпляров данных. Экземпляр данных связан с кнопкой, которая используется для запуска передачи экземпляра данных. Прежде чем связывать экземпляр данных с кнопкой Submit, необходимо сначала выполнить несколько шагов. Нужно определить список элементов и атрибутов, которые вы хотите включить в экземпляр данных – в данном случае это имя, тип отпуска, а также дата его начала и окончания. Это можно сделать, добавив элементы и атрибуты к экземпляру данных.
- Создадим элемент с именем LeaveApplicationData, который используется для группировки четырёх подэлементов (Name, Leave Type, Start Date и End Date). В представлении XMLModel Instance правой кнопкой мыши нажмите <xforms:instance id=>, а затем выберите Add Element.
- Создаётся новый элемент <data1>.
- Правой кнопкой мыши щёлкните <data1>, а затем выберите Rename. Введите имя LeaveApplicationData.
- Повторите шаги 1 – 3, создав элементы для имени, типа отпуска и даты его начала и окончания. Эти четыре элемента являются дочерними элементами LeaveApplicationData. Окончательный результат показан на рисунке 7.
Рисунок 7. Группировка дочерних элементов/атрибутов
Листинг 4. Исходный код модели данных XML, состоящий из одного экземпляра данных и элементов для сбора данных
<xmlmodel>
<instances>
<xforms:instance id="LeaveAppInstance"
xmlns="http:..www.ibm.com/xmlns/prod/XFDL/Custom">
<LeaveApplicationData>
<Name></Name>
<LeaveType></LeaveType>
<StartDate></StartDate>
<EndDate></EndDate>
</LeaveApplicationData>
</xforms:instance>
</instances>
</xmlmodel>
|
- Сохраните форму.
Привязка элементов к форме
Мы создали экземпляр данных и добавили к нему элементы. Свяжем каждый узел экземпляра данных с XFDL-элементами формы. В результате мы получим взаимосвязь между узлом данных и XFDL-элементом. Если его значение изменится, другие связанные элементы будут соответствующим образом обновлены.
- В представлении XMLModel Instance выберите элемент Name, перетащите его на элемент XFDL, который вы хотите связать; в данном случае это текстовое поле Name на холсте конструирования формы.
- Откройте представление XMLModel и убедитесь, что привязка успешно создана. Вы увидите сведения о привязке, как показано на рисунке 8.
Рисунок 8. Пример привязки
- Повторите шаги 1 и 2 для LeaveType.
- При создании привязки для StartDate и EndDate с помощью перетаскивания может возникнуть проблема. Она известна и будет устранена в следующей версии IBM Workplace Forms Designer. Сейчас создадим привязки вручную. Добавьте код из листинга 5 в исходный код формы после тега </bind> элемента LeaveType, но перед тегом </bindings>.
Листинг 5. Определение привязок для StartDate и EndDate
<bind>
<instanceid></instanceid>
<ref>[custom:LeaveApplicationData][custom:StartDate]</ref>
<boundoption>PAGE1.combo_startDate.value</boundoption>
</bind>
<bind>
<instanceid></instanceid>
<ref>[custom:LeaveApplicationData][custom:EndDate]</ref>
<boundoption>PAGE1.combo_endDate.value</boundoption>
</bind>
|
- Откройте представление XMLModel и убедитесь, что привязки для StartDate и EndDate успешно созданы.
Мы закончили создание взаимосвязи между элементами формы и узлом экземпляра данных. Изменения на уровне данных приводят к изменениям на уровне представления, и наоборот. Можно связать узел данных с множеством полей формы, что приводит к совместному использованию данных элементами. Это особенно полезно, например, в ситуации, когда в форме несколько страниц; пользователь не должен повторно вводить своё имя на каждой странице формы. Связав узел данных Name с элементами Name формы, мы добьёмся синхронизации данных.
Передача модели XML
Мы закончили создание модели, экземпляра и привязок. Теперь создадим правило передачи и кнопку Submit, запускающую передачу экземпляра данных обрабатывающему приложению. Это правило передачи определяет, какой экземпляр данных передаётся и как это происходит. Правило передачи не является обязательным; оно требуется лишь в том случае, если вы хотите передать только экземпляр данных, а не всю форму.
Для создания передачи и правила передачи выполните следующие действия:
- В представлении XMLModel правой кнопкой мыши щёлкните XML Model, а затем выберите Create submissions.
- Убедитесь, что передачи созданы.
- Создайте правило передачи, которое определяет, какие данные передаются и как. В представлении XMLModel правой кнопкой мыши щёлкните submissions и выберите Create submission.
- Зададим свойства передачи. Выберите правило передачи, созданное на шаге 3 (рисунок 9). Затем разверните свойство Miscellaneous в представлении Properties; вы увидите список свойств, которые можно настраивать. ID – это уникальное имя для правила передачи, а instanceid используется для определения экземпляра, который нужно передать (рисунок 10). По умолчанию передаётся первый экземпляр формы. Если вы хотите передать другие экземпляры данных, необходимо определить их ID.
Рисунок 9. Правила передачи
Рисунок 10. Свойства правил передачи
- Измените значения свойств в соответствии с рекомендациями из таблицы 1. Правило передачи, которое называется LeaveSubmission, используется для передачи созданного ранее экземпляра данных LeaveAppInstance. Установите для заданного выходного параметра тип содержимого application/xml.
В нашей статье мы не выполняем передачу какому-либо действию. Если вы хотите, чтобы XML передавался какому-нибудь действию, нужно задать URL действия. Includenamespace и ref не обязательны. Если нужно ограничить унаследованные пространства имён экземпляра данных, добавьте их в свойство Includenamespace. Свойство ref нужно только в том случае, если требуется передать фрагмент экземпляра данных.
Таблица 1. Рекомендуемые значения свойств
| Свойство | Значение |
|---|
| id | LeaveSubmission |
|---|
| instanceid | LeaveAppInstance |
|---|
| action | <оставьте пустым> |
|---|
| mediaType | application/xml |
|---|
| Includenamespace | <оставьте пустым> |
|---|
| ref | <оставьте пустым> |
|---|
- Создадим кнопку Submit, запускающую передачу. В загруженном примере формы заявления о предоставлении отпуска кнопка Submit уже присутствует. Теперь необходимо изменить свойства кнопки. Прежде всего выберите кнопку Submit.
- В представлении Properties нажмите на указывающую вниз стрелку, а затем выберите Show Advanced Properties, как показано на рисунке 11.
Рисунок 11. Опция Show Advanced Properties для кнопки Submit
- В разделе General задайте свойству value значение Submit, а свойству type – значение submit, как показано на рисунке 12.
Рисунок 12. Настройка свойств кнопки Submit
- В поле url введите URL-адрес, по которому будут отправляться данные.
ПРИМЕЧАНИЕ. Целевой URL может ссылаться на сервлет, cgi-скрипт или приложение с XML-интерфейсом. Более подробную информацию о приёмном приложении см. в документации по IBM Workplace Forms Designer: использование модели данных XML (EN).
- Разверните Transmit.
- Установите для свойства transmitformat значение application/xml;id="SubmissionID", как показано на рисунке 13.
Рисунок 13. Настройка свойств кнопки передачи
- Замените SubmissionID на имя вашего правила передачи (т. е. LeaveSubmission), как показано на рисунке 14.
Рисунок 14. Изменение формата передачи
- Сохраните форму.
Поздравляем! Вы выполнили все шаги по созданию модели данных XML. Чтобы передать форму, нажмите кнопку Submit. XML-данные будут отправлены по URL-адресу действия, который был определён ранее. Если приёмное приложение не используется, можно быстро протестировать пересылку XML-данных, указав в качестве URL адрес электронной почты, например mailto:example@my.ibm.com, в свойствах кнопки Submission, как показано на рисунке 15.
Рисунок 15. Свойства кнопки передачи
Сохраните изменения и выполните передачу формы. Выходные XML-данные приведены в листинге 6.
Листинг 6. Выходные XML-данные
<LeaveApplicationData>
xmlns="http://www.ibm.com/xmlns/prod/XFDL/Custom"
xmlns:custom="http://www.ibm.com/xmlns/prod/XFDL/Custom"
xmlns:designer="http://www.ibm.com/xmlns/prod/workplace/forms/designer/2.6"
xmlns:xfdl="http://www.ibm.com/xmlns/prod/XFDL/7.0"
xmnls:xforms="http://www.w3.org/2003/xforms">
<Name>David</Name>
<LeaveType>Annual</LeaveType>
<StartDate>8 Feb 2007</StartDate>
<EndDate>9 Feb 2007</EndDate>
</LeaveApplicationData>
|
Заключение
Модель данных XML облегчает интеграцию XFDL-форм с приложениями, обладающими XML-интерфейсом. Модель данных XML создаёт XML-блок, который используется для сбора данных формы. Таким образом, вместо отправки на обработку целой формы пересылаются только необходимые данные. IBM Workplace Forms Designer, который теперь носит название IBM Lotus Component Designer, предоставляет интерфейс, необходимый для создания модели данных XML для ваших XFDL-форм. Это облегчает интеграцию XFDL-формы с приложениями, имеющими XML-интерфейс.
Загрузка | Имя | Размер | Метод загрузки |
|---|
| LeaveApplicationForm.xfdl | 5 KB | HTTP |
Ресурсы Научиться
Получить продукты и технологии
Обсудить
Об авторе  | |  | Киат Синг Лай (Kiat Sing Lai) – ИТ-специалист в Центре технической поддержки разработчиков в Куала-Лумпуре, Малайзия. Он с помощью программы PartnerWorld for Developers и Виртуального инновационного центра (Virtual Innovation Center) осуществляет поддержку бизнес-партнёров IBM, применяющих IBM WebSphere Portal, IBM Workplace Services Express и IBM Workplace Collaboration Services. |
Выскажите мнение об этой странице
|  |