понедельник, 13 сентября 2010 г.

Применение XML web part

В составе Sharepoint по-моему с самого его рождения присутствует встроенная веб-часть по-русски называемая Средство просмотра XML (XML Web Part). Цель ее существования довольно простая: взять указанный XML и XSL, натравить последний на первого и результат вывести на сайт. Просто и красиво.
Однако, лично у меня никак у меня не складывалась для нее задачка. В первом случае функционала веб-части оказалось недостаточно. Во-втором случае... вот про второй случай и пишу, собственно.
Как я писал ранее в блоге, у нас имеется отличный файл PassThrough.xml на сервере Sharepoint в котором хранится информация о всех входах и выходах сотрудников в/из здания института. Файл обновляется каждые 5 минут, чего достаточно для того, чтобы информацию назвать актуальной. И родилась мысль, что из базы проходов сотрудников через турникет можно вывести некоторую статистическую информацию, например:

  • количество сотрудников пришедших за день
  • количество сотрудников пришедших вовремя
  • количество сотрудников пришедших с опозданием 10 минут
  • количество сотрудников совсем опоздавших
  • количество сотрудников в здании на текущий момент с учетом вошедших и вышедших

Вот тут веб-честь и пригодилась. XML файл с исходными данными есть, написать XSL файл для его преобразования недолго. В итоге, за сегодняшний день сформировалась табличка с показателями.


Учитывая, что все равно заинтересуются более-менее детальной информацией об опоздавших и т.п., сразу добавил возможность раскрыть список соответствующих сотрудников с указанием времени прохода через турникет.

Странной особенностью настройки веб-части оказалось указание путей поиска XML и XSL файлов. В соответствии с требованием веб-части изначально указал относительные URL пути:

_layouts/1049/styles/AlxdContactNavigator/PassThrough.xml

_layouts/1049/styles/AlxdContactNavigator/PassThrough.xsl

Проверка указанных путей прошла отлично, но веб-часть упорно отрицала существование файла. Чего только я не перепробовал, пока не догадался подсунуть локальный полный путь к файлу, а именно:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1049\STYLES\AlxdContactNavigator\PassThrought.xsl

И вот тут веб-часть успешно приняла исходные параметры и показала мне результат.

XML и XSL файл, плюсом к ним CSS файл лежат в архиве PassThrough.zip, если кому будет интересно.

вторник, 7 сентября 2010 г.

Контакты в Sharepoint 2010

Разработчики Microsoft очевидно очень любят все менять в своих продуктах, особенно интерфейс, поэтому под каждую новую версию продукта приходится перекомпилировать все доп. модули. Не обошла стороной судьба и веб-часть AlxdContactNavigator. К счастью, перекомпиляция прошла гладко, модификации кода практически не было, пришлось только поправить bat-ник, ответственный за инсталляцию веб-части (bat-ник от старой веб-части).

В итоге, получился ожидаемый результат:



Отдельно хочу остановиться на доп. возможности, которую реализовал при отображении дерева контактов и информации о контакте, а именно, информации о присутствии. Как я писал раньше, у нас есть проходная, которая работает на Paradox-овской базе данных, регулярно сбоит и падает. Данные оттуда брать крайне неудобно, поэтому мой коллега написал сервис, который запускается на машине и через определенный промежуток времени перегоняет данные из базы проходной на сервер баз данных MS SQL 2005 и заодно делает файл PassThrough.xml, в котором содержится информация о прохождении сотрудников за текущий день.

Дописав код в AlxdContact.xsl и AlxdTreeView.xsl завязанный на PassThrough.xml получил отображение присутствия или отсутствия сотрудника (см. рисунок). Код в xsl ответственный за отображение присутствия легко удалить, т.к. он отмечен комментариями.

Преимущества веб-части:
1. Бесплатно.
2. Полная custom'изация.

Недостатки веб-части:
1. Обновление дерева контактов только с перезагрузкой всей страницы.

Установка веб-части AlxdContactNavigator осуществляется с помощью bat'ника setup.bat с ключом -i. Удаление - ключ -u.
В архиве есть папка AlxdContactNavigator в которой расположены xml, xsl и css файлы, а также картинки. Рекомендую ее разместить так, чтобы к файлам можно было получить доступ по URL, например, я разместил в папке:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1049\STYLES\AlxdContactNavigator\
что соответствует URL пути:
http://server/_layouts/1049/styles/AlxdContactNavigator
Если при установке возникнут проблемы, пишите...