Pull to refresh

Электронные формы via Microsoft InfoPath

Reading time 9 min
Views 53K
Привет, хабравчане!

image
Бизнес-процессы и документооборот в любой организации требуют заполнения множества бланков и форм. Задача автоматизации этих процессов предполагает в том числе и замену допотопных бумажных форм электронными аналогами. При этом используется множество очень разных инструментов и технологий: формы на базе документов Excel, формы на базе Access, веб-формы asp.net-приложений, корпоративные десктопные приложения.

В составе пакета MS Office существует программа, специально предназначенная для создания электронных форм – это Microsoft Office InfoPath.

Я расскажу об основах разработки InfoPath-форм. Главное внимание будет уделено базовым вещам, однако в завершение будет упомянуто и о некоторых более глубоких аспектах, таких, как подключения к данным, программирование в InfoPath-формах и интеграция с Sharepoint.



Концепция


Основополагающий принцип InfoPath-форм – разделение шаблона формы и её данных.
  • Шаблон формы – это файл с расширением .xsn, содержащий описание структуры формы и её дизайна. С некоторой натяжкой можно воспринимать его как пустую форму без данных.
  • Данные формы – это xml-файл, содержащий конкретную информацию. Это полезное «наполнение» формы.

В соответствии с этим разделением InfoPath выступает в двух ипостасях – конструктора для разработки шаблонов и клиента для открытия и заполнения форм на основе шаблонов. Вплоть до версии InfoPath 2007 этот функционал был совмещён в одном приложении. В версии Office 2010 приложение разделено на два независимых компонента: InfoPath Designer (Конструктор форм), предназначенный для разработки шаблонов и InfoPath Filler, с помощью которого заполняются конкретные формы на основе шаблонов. Примеры в этой статье будут для InfoPath 2007.
Обычно шаблон формы публикуется в некотором общеизвестном месте, откуда он может быть доступен пользователям. Пользователи открывают шаблон и заполняют форму. Дальнейшие действия могут быть различными: сохранение заполненной формы в виде .xml-файла, отправка информации куда-либо.
Сохранённая в виде .xml-файла форма может быть открыта и изменена. Понятно, что .xml-файл должен «знать» где находится соответствующий шаблон формы, ведь структура и дизайн формы определены в шаблоне. Если шаблон недоступен, InfoPath возьмёт его из кэша, если он изменился, будет предоставлена возможность загрузить обновлённый шаблон. Для обеспечения связей между шаблоном формы и её данными InfoPath имеет сложную архитектуру публикации шаблонов форм.

Простой пример


Лучший способ разобраться – пощупать руками. Для начала можно поэкспериментировать с идущими «в комплекте» с программой готовыми образцами форм. Открываем Microsoft Office InfoPath 2007. Если появилось окно «Приступая к работе», выбираем слева «Настроить образец», если не появилось, то идём в меню «Файл», выбираем «Конструктор шаблонов форм...» и в открывшемся окне, опять-таки слева щёлкаем «Настроить образец...». Возьмём, например, образец «Учёт активов».

image

После двойного щелчка на образце InfoPath откроет его в режиме дизайнера. Можно отредактировать шаблон формы, удалить ненужные поля, добавить новые и т. п. Панель с доступными компоментами (поля ввода, чекбоксы, раскрывающиеся списки) открывается по ссылке «Элементы управления» на панели задач в правой части окна.

image

Сохраним наш шаблон в удобном месте как файл «Учёт активов.xsn». Возможно при этом InfoPath напомнит о том, что хорошо бы опубликовать его – но пока не будем этого делать.

image

Теперь шаблон можно открыть и заполнить форму.

После заполнения можно сохранить её. Это уже будет файл с расширением .xml — файл данных на основе нашего шаблона. Таким образом можно заполнить множество форм на основе одного шаблона.

image

Публикация


Как уже было сказано, InfoPath имеет сложную архитектуру публикации шаблонов форм. Шаблон формы учёта активов, который мы сохранили где-то у себя на компьютере, пока доступен только нам. Хотелось бы сделать его доступным для большего круга пользователей.

Сначала откроем шаблон формы в режиме конструктора (пункт «Конструктор» из контекстного меню файла).
Мастер публикации запускается командой «Опубликовать...» из меню «Файл».

InfoPath предоставляет несколько вариантов публикции формы. В данном случае давайте выложим шаблон в расшаренную папку.

image

В следующем окне мастера нужно указать место публикации. В своё время я помучался на этом шаге. Не совсем понимая смысл производимых действий, я щёлкал на кнопке «Обзор» и выбирал там сохранённый файл шаблона. Этого делать не нужно. В поле «Путь и имя файла для шаблона формы» должен быть указан путь к ещё не существующему файлу в том месте, куда мы хотим его опубликовать. Поэтому жмём «Обзор», доходим до расшаренной папки, а в поле «Имя файла» вбиваем имя будущего опубликованного шаблона, после чего жмём «ОК».

image

image

image

На следующем шаге нужно ввести альтернативный путь доступа к опубликованному шаблону со стороны пользователей. Ведь отображение сетевых ресурсов может отличаться у разработчика и у конечного пользователя. Сетевой ресурс, видимый конечными пользователями может быть другим. А InfoPath требует, чтобы доступ к опубликованному шаблону производится единообразно. Поэтому при публикации задаются два пути – один для администратора (мы его уже задали), другой для конечных пользователей. Если путь со стороны пользователя не отличается, просто копируем в поле ввода тот путь, который мы указывали на предыдущем шаге.

image

После щелчка на кнопке «Далее» проверяем введённые данные и щёлкаем «Опубликовать».
В завершающем окне мастера можно насладиться сообщением об успешной публикации и попросить сразу открыть форму на основе опубликованного шаблона, дабы убедиться, что всё впорядке.

image

Безопасность


В заключительных окнах мастера публикации можно заметить строчку «Уровень безопасности: Домен».
Уровень безопасности формы определяет, что форме позволено делать, каков уровень доверия к ней.
Задаётся это при разработке шаблона формы на вкладке «Безопасность и доверие» диалогового окна «Параметры формы», которое открывается одноимённой командой из меню «Сервис». Возможных уровней доверия три: ограниченный, уровня домена и полное доверие.
  • Формы с ограниченным доверием не слишком полезны, они не могут обращаться к внешним источникам данных, их даже нельзя опубликовать в расшаренной папке, что мы с делали с шаблоном формы учёта активов. Тем не менее шаблоны с ограниченным доверием можно рассылать по электронной почте, и получатели смогут заполнить формы на их основе. Кстати, при пересылке формы InfoPath 2007 по электронной почте это можно сделать двумя способами. Первый – послать форму во вложении. Это можно сделать независимо от того, какие почтовые клиенты используются у получателя и у нас. Вторая возможность – послать форму в теле сообщения. Это возможно, если и у нас, и у получателя почтовый клиент – Microsoft Office Outlook 2007.
  • Формы с доменным уровнем безопасности могут получать доступ к содержимому в пределах домена, например заполнять раскрывающиеся списки из справочников, хранящихся в базе данных MS SQL Server, или из списков Sharepoint.
  • Полное доверие подразумевает, что форма может делать что угодно. В частности, если у формы есть программный код (обработчики событий и т. п.), она должна иметь полный уровень доверия. Шаблоны с полным уровнем доверия должны быть подписаны – это можно сделать сдесь же (чекбокс «Подписать этот шаблон формы», кнопки для создания и выбора сертификатов электронной цифровой подписи).

По умолчанию на вкладке «Безопасность и доверие» стоит флажок «Автоматически определять уровень безопасности». Из опыта могу сказать, что автоматически он определяется правильно далеко не всегда: значительная часть ошибок при открытии формы на основе некоторого шаблона была вызвана именно тем, что у шаблона был задан низкий уровень безопасности.

Понемногу о разном


Источники данных

Как уже говорилось, InfoPath-форма может обращаться к внешним источникам данных. Это может быть база данных (MS Sql или Access), список Sharepoint, web-служба, .xml-файл. Наиболее очевидное применение – заполнение раскрывающихся списков на основе различных справочников.
Напомню, что шаблон формы, обращающийся к внешним источникам данных, должен иметь уровень безопасности – домен.

На самом деле, и сама структура InfoPath-формы определяется источником данных. Даже если шаблон формы создавать с нуля, всё равно в источниках данных уже будет один – «основной» источник данных. При добавлении элементов на форму будут добавляться соответствующие узлы в источник данных. Любой источник данных в InfoPath представляется xml-деревом, таким образом и структура формы по сути – некоторое xml-дерево.

Есть возможность создавать InfoPath-формы на основе некоторых имеющихся источников данных – веб-службы, базы данных, предопределённые xml-схемы. В этом случае мы уже не сможем изменять источник данных, который является основой структуры формы, и не сможем добавить новые поля, которых нет в источнике данных.

Представления

Форма может иметь несколько представлений. Представление – это некоторый «срез», включающий в себя определённую группу полей. Ведь не обязательно на форме одновременно отображать все поля её источника данных. Если полей много, можно сгруппировать их по смыслу и разделить на несколько представлений. Кроме того, можно создать разные представления для различных групп пользователей, которые будут работать с формой в рамках некоторого бизнес-процесса. Наконец, можно создать отдельное представление для печати формы, которое будет иметь особо красивый дизайн, ориентированный именно на эту задачу. Переключаться между представлениями можно как с помощью меню «Вид» клиента InfoPath, в котором открыта форма, так и, например, программным образом, скажем, по щелчкам на кнопках в форме (при этом можно наоборот, отключить возможность ручного переключения через меню «Вид»).

Программирование

Сложные формы могут содержать программный код (наибольший интерес представляет управляемый код на C# или на Visual Basic .Net). Напомню, что уровень безопасности таких форм должен быть «Полное доверие». В коде можно, например, выполнять необходимую обработку событий, сложный контроль вводимых данных (в дополнение к более простой валидации, которую можно настроить через интерфейс конструктора InfoPath). Есть возможность динамически изменять интерфейс и элементы формы, добавлять и скрывать определённые поля ввода, переключаться между представлениями. Можно программно подключаться к таким источникам данных, подключение к которым не предусмотрено в конструкторе InfoPath (скажем, к БД Oracle).

Интеграция с Sharepoint

Связка InfoPath-форм и Sharepoint – это, вероятно, одно из наиболее перспективных и распространённых на сегодняшний день применений InfoPath-форм. Скажем, моё знакомство с InfoPath произошло совсем недавно в процессе изучения разработки рабочих процессов (Workflows) для Sharepoint. В течение многих лет до этого InfoPath тихо жил на моём компьютере в составе пакета MS Office, никак не привлекая к себе внимание.

Итак, что можно сказать об интеграции InfoPath с Sharepoint?
  • Шаблон формы можно опубликовать в качестве библиотеки форм Sharepoint. В этом случае при публикации на сайте Sharepoint создаётся библиотека InfoPath-форм, основанная на этом шаблоне. Пользователи смогут заполнять формы и добавлять их в библиотеку.
  • В продолжение предыдущего пункта – служба InfoPath Forms Services, доступная в MOSS 2007 (Microsoft Office Sharepoint Server 2007), позволяет заполнять InfoPath-формы прямо в окне браузера. В этом случае пользователям не придётся устанавливать приложение InfoPath – они смогут заполнять и добавлять формы в библиотеку форм, используя только браузер. К сожалению, InfoPath Forms Services доступна только в MOSS, в WSS (Windows Sharepoint Services) этой службы нет. Другое ограничение состоит в том, что далеко не все возможности полноценных InfoPath-форм можно задействовать в формах, совместимых с InfoPath Services: для того, чтобы форму можно было отображать непосредственно в браузере, приходится отказываться от некоторых элементов управления (рисунки, элементы ActiveX, блок «Основной/Подробности», маркированные и нумерованные списки и другие), а при написании программного кода для такой формы иметь дело с сильно урезанной объектной моделью (главным образом, не доступны возможности, связанные с динамическим изменением элементов формы).
  • Публикация шаблона в качестве библиотеки форм имеет один недостаток – невозможность повторного использования. Если нам потребуется ещё одна библиотека, придётся произвести публикацию заново. К счастью, можно опубликовать шаблон формы в качестве типа содержимого Sharepoint и уже на его основе создавать сколько угодно библиотек форм.
  • InfoPath-формы могут быть использованы в качестве форм рабочих процессов Sharepoint. О Windows Workflow Foundation (WF) и рабочих процессах на Хабре уже писалось. Платформа Sharepoint (как WSS, так и MOSS) предлагает инфраструктуру рабочих процессов, базирующуюся на WF, для списков, библиотек и типов содержимого. Например, можно создать рабочий процесс утверждения документов (да тех же InfoPath-форм!), который будет запускаться при добавлении документа в библиотку. Рабочий процесс подразумевает формирование задач пользователям или группам пользователей (в данном случае это задачи утверждающим на рассмотрение добавленного документа). При разработке рабочего процесса необходимо создать различные формы, которые требуется заполнять на разных этапах жизненного цикла рабочего процесса: при ассоциации рабочего процесса со списком, при запуске рабочего процесса, при выполнении назначенных задач. И эти формы рабочего процесса Sharepoint могут быть как классическими asp.net-страницами, так и формами InfoPath.
  • Наконец, именно посредством InfoPath-форм производтся ввод метаданных при загрузке и редактировании документов в библиотеках документов на сайте Sharepoint. На рисунке ниже показан документ Word, у которого имеется информационная панель для ввода метаданных – поля Author, Title, Subject и другие. Эта панель является не чем иным, как внедрённой формой InfoPath. При желании такую форму можно кастомизировать, заменить на собственноручно разработанную, если чем-то не устраивает та, которая была сформирована автоматически для данной библиотеки документов.

    image


Послесловие


В этой статье я постарался обзорно рассказать о разработке электронных форм с использованием InfoPath, ориентируясь главным образом на версию Microsoft Office InfoPath 2007. Многие вопросы упомянуты лишь вскользь, другие аспекты остались и вовсе незатронутыми – в первую очередь потому, что сам я столкнулся с InfoPath-формами сравнительно недавно и процесс их изучения ещё далеко не закончен. Процесс этот мог бы быть намного более трудоёмким без одной книги, служившей мне главным источником информации по теме – это книга Фило Джануса «InfoPath 2007 для профессионалов».

  • Джанус, Фило. InfoPath 2007 для профессионалов.: Пер. с англ. — М.: ООО «И. Д. Вильямс», 2009. — 272 с.: ил. — Парал. тит. англ. ISBN 978-5-8459-1484-2 (рус.)
Tags:
Hubs:
+4
Comments 7
Comments Comments 7

Articles