понедельник, октября 01, 2007

WorkFlow на WSS 2007

Произвёл НИР по переносу алгоритма поиска страниц с заданными типами веб-частей, имеющих заданную информацию в параметрах. Для WSS 2003 алгоритм был реализован в виде консольной утилиты hseDigger, запускаемой системным планировщиком. С появлением WorkFlow такая реализация прямо таки просится в переделку.

В итоге (при использовании Visual Studio 2005/2008, после тщательного изучения достаточно хорошего руководства), в общем-то, реализовать алгоритм в технике WorkFlow получилось. Получилось даже соорудить установщик в виде .wsp-файла. Но эмоции-то никуда не денешь smile_embaressed

Что получилось не так (или вовсе не получилось):

  • Конфигурирование параметров работы процесса (WF) (для утилиты делалось через файл конфигурации) делать неизвестно как. Точнее, известно - через ASP.NET association-форму, вызываемую при редактировании параметров WF и указанную в атрибуте AssociationUrl="_layouts/formName.aspx". Но как эту форму делать и как эти параметры сохранить в WF - неведомо, найти полезной информации по этому поводу не удалось, а имеющаяся информация по изготовлению похожих initialization-страниц оказывается малополезной). В итоге получилась "некрашенная" страница (ХЗ, как в Студии подцепить и попользоваться Шарепойнтовскими стилями), содержащая код прямо в теле (указания типа CodeBehind и Inherits как-то вовсе не воспринимаются smile_sad)  и сохраняющая данные в Properies узла, на котором размещён список, обслуживаемый РП. Соответственно, в WF в процедуре onActivated_Invoked производится считывание данных из этих "свойств".
  • "Отложенное" выполнение тяжёлой процедуры обшаривания деревьев Шарепойнта реализовать не удалось. Ввёл параметры начала и окончания рабочего дня и пытался использовать DelayActivity, но в итоге выяснилось, что больше нескольких минут задержки никому получить не удалось (такая уж вот конструкция у этой activity smile_baringteeth). В итоге при попадании на "рабочее время" сделал запуск рабочей actyvity с пониженным приоритетом:
    Thread.CurrentThread.Priority = ThreadPriority.Lowest;
  • Удалённая отладка (когда Студия с отладчиком на одном компьютере, а Шарепойнт с WF - на другом, физическом или виртуальном) не работает совсем - кто-то (что-то?) перекрывает доступ (access denied). Хотя все прочие типы объектов (утилиты, веб-части, веб-сервисы) отлажиаются нормально.
  • Отладка получившейся association-страницы с кодом в теле страницы - вообще тёмный лес. Хорошо хоть, что отлаживать там особо нечего.
  • Так и не нашёл, как в установщик запихнуть процедуру генерации нужного списка (может, искал не сильно упорно...).

В общем, работать, конечно, с WorkFlow можно, но сыровато... Становится уже фирменным стилем MS: первая версия - эксперимент на пользователях.

Комментариев нет: