K2 blackpearl + SharePoint. С чего начать разработчику? (часть 1)

от автора

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

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

SharePoint Channel начинает публикацию серии статей об особенностях работы с данной технологией. Собственным опытом применения K2 при разаботке решений по автомтаизации процессов на базе платформы SharePoint делится Артём Уткин, разарботчик SharePoint.

До того момента, как я начал разрабатывать первое решение под K2, я уже был знаком с данной технологией, но сугубо теоретически. Поэтому приходилось преодолевать некоторые барьеры в понимании того, с чего начать и как правильно нужно спланировать проект, чтобы построить работоспособное решение на K2 для SharePoint портала. Ко всему прочему трудностей добавляло то, что у меня был опыт разработки workflow-решений с использованием SharePoint Designer, дизайнера процессов для SharePoint в Visual Studio, а также Nintex. Указанные инстурменты имеют много общих принципов (в статье я буду называть такие процессы как SharePoint-based процессы). В K2 разработка имеет несколько другие принципы, поэтому решение многих задач оказывалось совсем не там, где бы я их искал в случае с тем же Nintex.

В этой статье я хочу поделиться с коллегами, которые занимаются разработкой K2 решений, приобретёнными навыками, чтобы помочь начать использовать данную технологию.

Статья поделена на две части для более удобного восприятия.

В первой части представлены такие пункты:

Смарт-объекты
Worklist
Обособленность процессов от SharePoint
Архитектура
Интеграция с SharePoint
Worklist web-part
Во второй части:

K2 Workspace
Environment Library
K2 Process Portal
Дизайнеры процессов
Использование кода
Полезные программы
Перенос решений

Обратите внимание, что приведённая в статье информация касается использования K2 blackpearl 4.6.5 и SharePoint Server 2010. Для других версий некоторые нюансы могут отличаться. Статья не затрагивает аспекты работы со смартформами.

Смарт-объекты

Я привожу это первым пунктом, потому что, на мой взгляд, – это краеугольный камень K2, и о нём нужно знать разработчикам решений в первую очередь, еще даже до знакомства с K2 архитектурой.

Работа с данными (со смарт-форм или с рабочих процессов K2) ведётся через смарт-объекты. Смарт-объекты можно назвать своего рода посредниками между источником данных и его потребителем. К примеру, если вам нужно работать с таблицей в MS SQL базе данных, то вы не будете для этого использовать SQL-запросы или фреймворки. Вам необходимо будет создать смарт-объект под конкретную таблицу. Он будет содержать параметры (поля таблицы) и методы (создание строки, чтение одной строки, чтение строк, редактирование строки, удаление строки). То же самое касается и любых других источников данных, будь это Active Directory (для чтения данных о пользователе, к примеру) или список SharePoint.

Нужно отметить, что рабочий процесс в режиме SharePoint workflow integration позволяет работать с сайтом, списками и библиотеками SharePoint напрямую, но я всё же рекомендую использовать смарт-объекты. Это правильнее с точки зрения идеологии K2, к тому же смарт-объекты можно использовать в разных процессах или смарт-формах, их легче переносить на другую ферму.

Worklist

Об этом также необходимо сказать в самом начале. Worklist – это список задач, которые создают рабочие процессы K2. И он единый.

Для всех SharePoint-based рабочих процессов есть одна характерная особенность – задачи создаются в списке задач, расположенном на том же сайте, на котором выполняется рабочий процесс. То есть, если на ферме существует 20 сайтов и на каждом присутствуют какие-то рабочие процессы, то задачи по этим процессам создаются в 20 разных списках задач.

В K2 совсем другой подход. Существует единый список задач (Worklist), и задачи из всех процессов записываются именно туда.

Опять-таки, следует отметить, что разрабатывать процесс можно в режиме SharePoint workflow integration и тогда есть возможность настроить создание задач в списке задач сайта, но в таком случае теряется много преимуществ K2, таких как эскалации, «рабочее время», «out of office», «lazy approval», отчеты, KPI и т.д.

Обособленность процессов от SharePoint

K2 blackpearl независим от SharePoint. Об этом подробнее будет сказано ниже, но для начала нужно понимать, что процессы выполняются не в рамках SharePoint.

SharePoint-based рабочие процессы выполняются в рамках определённого сайта. Они используют определённый список задач, список истории рабочих процессов; привязаны к определённому списку, а главное к определённому элементу списка и запускаются либо вручную, либо по его созданию или редактированию. Дополнительно есть рабочие процессы уровня сайта, как например в Nintex, но они также работают с данными текущего сайта.

С K2 blackpearl процессами дело обстоит несколько иначе. Нужно, конечно, вновь отметить некоторые нюансы, связанные с SharePoint workflow integration. Запуск процесса можно настроить при создании или обновлении элемента, указать список задач, использовать SharePoint-события при конструировании процесса, но в этой и последующих статьях будет показано, что такой подход следует использовать только тогда, когда интеграция действительно требуется и без неё нельзя обойтись, а в остальных задачах не прибегать к ней.

Таким образом, при стандартном сценарии (то есть без использования SharePoint workflow integration) рабочий процесс выполняется обособленно от SharePoint и от какой-то сайтовой коллекции в принципе. Данные с нужного сайта процесс получает, используя смарт-объекты. Задачи при этом назначаются при помощи Client Event, что ведёт за собой размещение такой задачи в единый worklist пользователя. ИД элемента, по которому выполняется процесс, передаётся в качестве переменной рабочего процесса при его инициации либо из K2 SmartForms, либо из кода, используя Client API K2. (Пример использования K2 Client API из кода будет показан в следующих статьях).

Архитектура

Теперь, конечно же, стоит привести немного теории об архитектуре K2.

Платформа K2 независима от SharePoint, но для её функционирования необходимы компоненты Microsoft, в частности SQL Server, IIS, .NET Framework (WWF, WCF и WPF).

Все компоненты K2 blackpearl логически можно поделить на три группы:

1. Серверные компоненты

K2 сервер работает как служба Windows. В основе лежит платформа, на которой установлен .NET Framework, и которая предоставляет базовые сервисы и функциональность для K2 hosted серверов и сервисов. Эту основу K2 называют host-сервером.

K2 использует модулярную архитектуру, что позволяет расширять многие компоненты или устанавливать их на разных серверах.

На картинке ниже изображена иллюстрация K2 blackpearl Server платформы.

Hosted-сервисы используются как непосредственно host-сервером, так и клиентскими API для обеспечения коммуникации с клиентами или другими серверами в сети. Слой TCPIOP обрабатывает все коммуникации со стандартных клиентских API, которые обычно используют разработчики, например, SourceCode.Workflow.Client или SourceCode.SmartObjects.Client. Далее такие запросы передаются runtime-компоненту конкретного hosted-сервера (будь это Workflow hosted-сервер или SmartObject hosted-сервер).

Hosted-серверы могут быть установлены на разные физические или виртуальные сервера, в то время как core-сервисы и hosted-сервисы должны быть установлены везде, где устанавливается K2 blackpearl.

Ниже приводится описание основных core-сервисов и hosted-сервисов:

Workflow: runtime-компонент сервера рабочих процессов. Отвечает за все задачи, связанные с рабочими процессами, например, запуск рабочего процесса, инициация активностей, оценка правил, назначение задач и др.
Workflow Log: компонент логирования.
Workflow Management: компонент управления процессами, который отвечает, к примеру, за назначение прав и доступ к глобальному worklist.
Environment Settings: компонент, отвечающий за работу с библиотекой сред (Environment Library).
В K2 определённые настройки и глобальные переменные могут иметь разные значения для всех сред, которые были созданы. Например, тестовая среда или среда разработки может хранить какие-то тестовые значения, чтобы не взаимодействовать с реальной средой компании (например, значения тестовых е-мейлов или значения адресов тестовых hosted-серверов), а реальная продуктивная среда – использовать то, с чем будут работать конечные пользователи.
Компонент «Environment Settings», к примеру, копирует значения переменных из Environment Library при деплое процесса в таблицу переменных рабочего процесса (его String Table), и далее уже отсутствует взаимосвязь между этими переменными с переменными уровня Environment Library.
Management: компонент управления для host-сервера. Как написано в справке, в данный момент не используется, но оставлен для будущей функциональности.
Event Bus: runtime-компонент для отправки уведомлений по запланированным событиям. Такие события настраиваются через Notification Event Designer в K2 Workspace.
SmartObjects: runtime-компонент для работы с установленными смарт-объектами.
SmartObject Management: компонент управления смарт-объектами.
Dependency: core-сервис для регистрации зависимостей таких объектов, как процессы или смарт-объекты.
Category: core-сервис, который обеспечивает иерархическую систему для деплоя процессов и смарт-объектов, категоризацию отчетов, уведомлений и др.
User Role Manager (URM): core-service, который обеспечивает возможность создания ролей и разрешений.
Если взглянуть подробно на схему архитектуры Workflow-сервера, то видно, что интеграционные компоненты K2 для SharePoint или InfoPath являются всего лишь частью клиентского API K2:

Подробней о серверных компонентах смотрите тут:

Architectural Overview of K2 blackpearl
Architecture of Authoring, Management and Runtime aspects of the K2 platform
Architecture of the Workflow Server
Architecture of the SmartObject Server
2. Клиентские компоненты

K2 компоненты, установленные на клиентские машины и использующиеся для разработки процессов и смарт-объектов (дизайнеры процессов K2 Studio и K2 Designer for Visual Studio).

3. База данных K2

При установке K2 создается отдельная база данных. Она может располагаться на сервере, где не установлен K2, поэтому базу данных выделяют в отдельную от серверных компонент группу.

Также рекомендую почитать статью Андрея Холинова «Как подготовить среду для установки K2 blackpearl и smartforms», в которой рассматривается терминология K2, архитектура и варианты конфигурации фермы.

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

Как уже было сказано выше, K2 blackpearl независим от SharePoint. Интеграционные компоненты, которые устанавливаются на SharePoint, используют K2 Management API или K2 Client API для взаимодействия с сервером K2.

В целом интеграционные компоненты я условно поделил на такие группы:

Управление и настройка:
страницы настроек на сайте Central Administration,
страницы настроек K2 Site Settings уровня отдельной сайтовой коллекции,
шаблон сайта K2 Process Portal (можно создавать как отдельную сайтовую коллекцию, так и подсайт для существующей коллекции сайтов).
SmartObject Management.
K2 Designer for SharePoint.
K2 Workflow Integration.
K2 веб-части.
Стартовая точка, с которой осуществляется настройка K2 для SharePoint, – это Central Administration. По большому счету тут активируются возможности для сайтовых коллекций, и уже дальше для них производится разработка K2 решений или установка готовых. Но также присутствуют и глобальные для всей фермы SharePoint настройки.

Здесь представлено:

Run the K2 for SharePoint Configuration Wizard.
Мастер настройки конфигурации K2 для SharePoint (конфигурация выполняется в момент установки K2, но тут можно произвести переконфигурацию, если это потребуется).
Management Console.
Настройка некоторых аспектов K2-сервера через Management Console, в частности переменных Environment Library.
K2 for SharePoint Configuration.
Создание SharePoint серверов, что влечёт за собой добавление адреса сайтовой коллекции в Environment Library, создание провайдеров групп для возможности использования групп сайта в URM (User Role Management), активацию K2-фич на сайтовых коллекциях.
Обратите внимание, что понятие «SharePoint сервер» приведено здесь в понимании K2 как единой точки доступа к спискам, библиотеками, группам и подсайтам сайтовой коллекции.

(Перечень SharePoint серверов в K2 Object Browser)

Также есть возможность активировать только часть фич K2 для сайтовой коллекции. Для этого необходимо снять галочку потребности в их активации на странице «K2 for SharePoint Configuration», и дополнительно активировать через «Features Management».

K2 Designer for SharePoint Configuration.
Настройка K2 Designer for SharePoint. Добавление для сайтовой коллекции возможности создавать рабочие процессы через K2 Designer for SharePoint: указание пула приложений для деплоя таких процессов, указание групп пользователей, которые могут создавать такие процессы.
Features Management.
Возможность выбора K2-фич, которые должны быть активированы на сайтовой коллекции (если, допустим, не нужно активировать все K2-фичи):
добавление K2 Site Settings (страницы настроек), шаблона сайта K2 Process Portal,
добавление пункта «K2 Site Settings» в меню «Site actions» сайта,
SmartObject Management – управление смарт-объектами (автоматическая генерация, импорт/экспорт),
K2 Workflow Integration – создание необходимых типов контента и маппингов для интеграции процессов,
веб-части – Worklist web-part с представлением задач текущего пользователя, а также веб-части отчетов и др.
Data Management.
Настройка SQL или CRM смарт-объектов.
Таким образом, для сайтовой коллекции, которая используется в решении, необходимо произвести настройку через Central Administration – создать SharePoint сервер для K2 и активировать на ней необходимые фичи.

Страница настроек на сайтовой коллекции выглядит таким образом:

Особый интерес представляет пункт SmartObject Service Management. Зайдя в него, вы можете указать списки и библиотеки, для которых будут автоматически сгенерированы готовые смарт-объекты:

Сгенерированные смарт-объекты можно использовать в рабочих процессах для работы со списками или библиотеками нужного сайта.

Важно! Привязки к Guid списка нет, то есть вы можете удалить список и создать его повторно с тем же названием и набором полей. Созданный изначально смарт-объект будет корректно с ним работать.

Как уже было сказано выше, если рабочий процесс нужно привязать к определённому элементу списка, то следует передавать его ИД через переменную рабочего процесса в момент его инициации, а далее загружать необходимые поля элемента через смарт-объект в самом процессе. Это влечёт за собой еще одну особенность в сравнении с SharePoint-based процессами – то, что можно запускать какое угодно количество экземпляров процесса на элементе. В SharePoint-based процессах можно запустить только один экземпляр определённого процесса на одном элемента. Если нужно воссоздать такой сценарий и для K2 процесса, то это следует учесть при разработке: например, при старте процесса параллельно обновлять элемент, записывая в какую-нибудь скрытую колонку индикатор того, что процесс запущен, и запрещать запуск, если индикатор уже присутствует.

Worklist web-part

Данная веб-часть специально разработана для возможности отображения задач текущего пользователя на страницах SharePoint. Но, на мой взгляд, есть существенный минус этой веб-части – она отображает задачи со всех рабочих процессов, в которых участвует пользователь. Поэтому если для конкретного сайта вы разработали пару рабочих процессов, то не получится использовать эту веб-часть на этом сайте так, чтобы фильтровались только задачи по указанным процессам, – будут показываться также и задачи с процессов, никак не связанных с этим сайтом в глазах конечного пользователя. Поэтому такую веб-часть логичнее размещать где-то централизовано, например, на сайте MySites или использовать готовый интерфейс на K2 Workspace.

ссылка на оригинал статьи http://habrahabr.ru/post/201910/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *