February 2012
M T W T F S S
« Jan    
 12345
6789101112
13141516171819
20212223242526
272829  

Бег с препятствиями

clip_image002Давняя, как мир ПО проблема: формы, шаблоны и прочее, прочее. Пользователю надо вводить данные, нам надо их обрабатывать. Пользователь хочет отчеты, статистику, красивые графики и удобный функционал. Все это давно написано, оттестировано и внедрено. И тут возникает не менее старая задача: теперь пользователь хочет сам делать для себя формы, сам изменять существующие, делиться этими формами, а также шаблонами с другими пользователями и жить счастливо. А самое главное, пользователь хочет, чтобы все отчеты, статистики и графики точно также как раньше рисовались, строились и считались.

Что же делать разработчику, чтобы пользователь мог рисовать формы? В самом деле, не ставить же ему Visual Studio, учить C# и публиковать сборки в GAC? А даже если и так, то как потом привязывать данные к модели, сохранять их в базе и обрабатывать? Казалось бы, за столько лет развития ПО данная проблема должна была уже сто раз решена и рынок должен был бы быть пересыщен самыми разными предложениями. Только покупай да интегрируй.

И такие решение конечно есть, и не одно.  Пожалуй, самые удобные формы на платформе Windows предлагает  InfoPath. Новую форму нарисовать — проще некуда. Печатается, сохраняется в XML (да еще и классный XML, без тегов с атрибутами «тип записи» и подобными). Хорошо, удобно и красиво. Ну как не поддаться на сладкую рекламу и не попробовать? Тем более у версии 2007 есть и интеграция с WinForms, что еще надо счастливому разработчику?

Сказано, сделано — работа понеслась. Тестовый шаблон, документы, контролы, редакторы шаблонов, интеграция в продукт. И тут возникает проблема. Одна (сначала), ну как обычно. Шаблоны оказывается надо публиковать и никак иначе. Причем методов публикации столько, что глаза разбегаются. Исследуем: электронная почта — хм, не подходит, у нас все же настольное приложение. Share Point — странное решение тащить его опять же для настольного приложения. Что там еще осталось? А, публикация по абсолютному пути в расшаренную папку или локальную файловую систему. Расшаренная папка сразу отметается — клиенты могут быть в разных сетях, да и не безопасно. Остается публиковать в локальную файловую систему. Но очень не хочется. Ведь формы должны обновляться централизовано, один пользователь поменял что-то, у остальных новая версия. Начинаем искать обходные пути. О! Оказывается если на основе формы сначала создать пустой документ, поймать исключение что форма не опубликована правильно, а потом открыть еще раз, то все работает. Замечательно, и всего-то один костыль.

Идем дальше. Хотим, страшно хотим справочники, в том числе иерархические, с поиском и асинхронным поведением. Ну а куда сегодня без этого? Стоп-стоп-стоп. Как внешние сборки можно подключать только к шаблонам, а к блокам шаблонов нельзя? Это что, пользователь при создании новой формы должен все сборки снова сам добавлять? Ладно, а если без сборок попробовать — о, внешние источники данных, что у нас тут? Так, Share Point (проходили уже), веб служба (еще ниче), XML-файл (тьфу, он опять только локальный), база данных (не, куда с клиента в базу лазить, небезопасно ведь). Ладно, пусть будет веб-служба. Пробуем. Ой, из контролов справочников только выпадающий список. А у нас там 20 000 элементов. И поиск хотим. И древовидное представление. Надо думать.

Вот так – либо ты все формы и шаблоны делаешь сам, потому долго и муторно публикуешь их у пользователь в локальной файловой системе (либо работаешь через «костыль», который так и норовит упасть и выдать ошибку), либо пользователя надо долго и упорно учить подключать сборки, запоминать url’ы, красочно стучать по клавишам и генерировать тонны кода.

Нехорошо получается

Ну и вывод. Share Point практически обязательная зависимость для InfoPath. Без него все становиться сильно долго, сложно, неочевидно и совсем не так красочно как в Overview от MS. Шаблоны обречены на публикацию, таскать их из базы не получиться ну почти никак (можно конечно свой менеджер написать, который будет обновлять и публиковать, но мы же хотим просто и в одно действие?). Внешние источники данных могут только получить эти самые данные и вставить куда-то. Механизма справочников нет как класса (а хотелось бы). Справедливости ради следует сказать, что мы пробовали InfoPath 2007, может в 2010 все сильно лучше.

  • http://twitter.com/vzzvzz Константин Быченков

    Судя по блогу комманды Infopath 2010, ничего принципиально не изменится: http://blogs.msdn.com/infopath/archive/2009/07/…. И я их понимаю. В принципе, Infopath + Sharepoint – это очень мощная связка, идеологически верная, перспективная. Вот только для того, чтоб на этой связке сделать нечто действительно стоящее, надо знать Sharepoint очень и очень хорошо. Не все команды могут быстро освоить такой продукт на требуемом уровне. Технология форм Infopath хороша, а могла бы быль прекрасна, если бы позволяла чуть больше, чем она позволяет сейчас.

  • http://www.gwgroup.ru Denial

    А есть какие-нибудь приколы насчет этого повода?