21 октября 2011 г.

Explainum Feeds aka QlikComment

Коллеги, как Вы, наверное, заметили, я решил немного подкорректировать изначальный план и разбить свой рассказ на два отдельных поста. Первая часть целиком и полностью была посвящена проекту Explainum, а сейчас я хочу сконцентрироваться исключительно на деталях, а именно на специальном расширении для QlikView
И так, что из себя представляет проект Explainum Feeds?
На мой взгляд, это логичное ответвление основного проекта в сторону специализации на конкретные BI системы, в данном случае, на QlikView. Explainum Feeds - это сервис, предоставляющий возможность создавать комментарии в ваших QlikView приложениях. Причем не просто комментарии, а комментарии, привязанные к конкретным выборкам, иными словами, контекстно-зависимые. Сервис на данный момент находится на стадии бета-тестирования и регистрация открыта для всех желающих. Из заявленных возможностей данного сервиса особо хочется отметить:
   Общая лента комментариев для разных QlikView приложений и даже QlikView серверов;
   наличие тэгов, позволяющих разделять/объединять потоки для разных отделов, стран, языков и т.п.;
   возможность привязки к различным пользователям;
   работа как в режиме Desktop’а (локально), так и возможность инсталляции на QlikView сервере;
   возможность использования нескольких потоков в рамках одного приложения.
Что касается технической стороны вопроса, то Explainum Feeds – это некий интернет сервер, хранящий ваши комментарии (Clouds нынче в моде, как ни крути) и отдельное QlikView расширение, которое взаимодействует с этим облаком и вашими приложениями. Ну а раз мы имеем дело с QlikView расширениями, то все это актуально начиная с 10ой версии и никак не раньше. Более того, на сегодняшний день сервис работает исключительно с QlikView 10 SR2 и Internet Explorer версии 8. Не густо, но, как говорится, что имеем… Все-таки сервис на данный момент в бете, и ждать поддержки всего и вся, я думаю, пока преждевременно...
Теперь давайте перейдем уже к конкретным вещам, а именно к инсталляции и использованию данного сервиса. Первым делом вам необходимо загрузить себе последнюю версию расширения с сайта проекта.
Небольшая ремарка к данному пункту:
по умолчанию у вас должна стартовать закачка файлика с расширением .qar. Однако, у меня в некоторых случаях браузер “чудным” образом понимал, что .qar это есть старый добрый ZIP-архив и начинал загружать именно в виде ZIP’а. Если вдруг у вас произойдет нечто подобное, то после загрузки файла просто смените расширение с zip на qar.
Далее, если у вас установлен QlikView Desktop 10 SR2, 2 раза кликаем по только что скачанному файлу и произойдет автоматическая инсталляция расширения в нужную директорию.
Для Win7:
%USERPROFILE%\AppData\Local\QlikTech\QlikView\Extensions\Objects
Следующий шаг – это регистрация на сайте, после чего вы получите специальный уникальный ключ (token), по которому сервис будет производить привязку всех ваших комментариев в своем хранилище.
Далее можно переходить непосредственно к настройке и использованию расширения. Открываем QlikView Desktop, переключаемся в веб-режим и добавляем расширение Feeds на страницу приложения, как обычный страничный объект QlikView. Теперь необходимо настроить параметры вновь созданного объекта, для чего открываем его свойства и видим нечто подобное:
Давайте попробуем разобраться с основными параметрами данного расширения… Как видно на картинке, всего их 4:

    Listbox IDs – в данном поле через запятую необходимо указать идентификаторы всех списков значений (listbox), в контексте которых будет происходит привязка комментариев. Поле является обязательным к заполнению. 
    Username textbox ID – здесь указывается идентификатор текстового объекта, в котором должна содержится строка, определяющая имя пользователя для привязки комментариев. Например, можно задать имя пользователя обычным строкой, либо использовать встроенную функцию OSUser() для определения текущего пользователя приложения QlikView. Данное поле не обязательно для заполнения, в случае отсутствия данной настройки все комментарии будут автоматически привязываться к пользователю anonymous
    Token в этом поле вам необходимо указать ваш личный ключ, который вы получили после регистрации на сайте проекта.
    Domain-tags – здесь вы можете указать различный набор тэгов для гибкого управления вашими комментариями. Тэг all проставляется по умолчанию.
Отдельно хочется заострить внимание на первом параметре, так как с ним не все так просто… Во-первых, несмотря на то, что в настройках необходимо указывать идентификатор(ы) списков значений (listbox’ов), привязка ваших комментариев происходит не на основании этих самых идентификаторов, а на основе наименования (текст заголовка) списка. Поэтому в списке значений обязательно должен быть активирован заголовок объекта (см. последнюю закладку в свойствах объекта), не забываем про это. Во-вторых, Explainum Feeds оперирует двумя типами списков значений: привязанный (attached field) и полу-привязанный (semi-attached field). Различия между этими двумя типами списков мы разберем далее на небольшом примере.
После настройки данных параметров можно приступать к использованию нового функционала, то есть начинать непосредственно создавать свои комментарии.
Как же это использовать?
Сейчас мы сделаем простенький пример, который нам поможет понять всю полезность данного расширения. Но для упрощения нашей задачи давайте воспользуемся одним из 2х подготовленных демонстрационных примеров, доступных на сайте проекта. Я выбрал файл про американских президентов, который в свою очередь реализован на базе стандартного приложения Presidents.qvw. Так вот в скачанном по этой ссылке файле я создал 2 новых объекта Feeds. Свойства первого объекта (правый верхний Comments (RU)) вы видели на предыдущем скриншоте, свойства второго вот:
Как видно из этих 2х скриншотов, оба объекта “смотрят” на одни и те же списки значений – listbox’ы (пока не обращаем внимание на символ ‘~’), имеют привязку к одному и тому же текстовому объекту, описывающего пользователя, та же ситуация с полем Token. А вот тэги у меня разные, комментарии из первого объекта привязываются к тэгу RU, второго – к EN. Таким образом, я хочу отделять пользовательские комментарии сделанные на русском и английском языке.
Теперь вернемся к той самой тильде (‘~’), на которую мы временно забили про которую мы временно забыли. Данный символ, предваряющий идентификатор списка значений, говорит сервису о том, что разработчик (то есть мы с вами) желает использовать для текущего потока комментариев, так называемое “semi-attached” (“полу-привязанное”) поле (вспоминаем два типа списков в настройках потока).
Так в чем же все-таки отличие между двумя этими типами?
Все достаточно просто... “semi-attached” поле – это поле, которое прописывается в контекст комментариев только в том случае, если сделана определенная выборка по нему.  Иными словами, по умолчанию (без символа тильды) привязка комментариев происходит по всем возможным значениям данного списка - как по “зеленым” (выбранным) значениям, так и по “белым” (возможным). А в случае с “semi-attached” – привязка идет только по “зеленым” (выбранным) значениям.
Приведу 2 скриншота наглядно демонстрирующих эту разницу:
В первой ситуации мы создали по одному комментарию в каждом из потоков (на русском и английском) при этом выборка была произведена только в списке Name (LB1456). Несмотря на это привязка наших комментариев произведена по обоим полям, так как список Party (LB1454) используется в потоке в полноценном режиме.
Во втором случае мы, наоборот, создали комментарии при текущей выборке только по одному полю Party, а список значений Name остался без нашего внимания. Учитывая, что Name (LB1456) в настройках потоков указан с тильдой (‘~’), то привязка новых комментариев прошла только по полю Party.
Вот как то так… Надеюсь мне удалось снять все вопросы относительно использования нюансов параметра Listbox IDs. Теперь давайте попробуем разобраться зачем вообще нужны эти “заморочки” с тильдой и разными способами привязки комментариев? Представим, что у нас есть некий список, в котором несколько сотен (или даже тысяч) различных значений, и мы указали идентификатор такого списка в свойствах объекта Feeds в “обычном” режиме (без символа ‘~’), т.е. мы создаем поток контекстно-зависимых от значений этого поля комментариев. Далее, не делая никакую выборку по данному списку значений, создаем какой-либо комментарий. В результате наш очередной комментарий должен был бы привязаться ко всем сотням(тысячам) значениям из указанного в настройках списка. Данное поведение не есть оптимальное и достаточно накладное с точки зрения необходимости хранения всех подобных “хвостов”. Поэтому команда разработчиков решила ввести ряд дополнительных ограничений, которые помогают оградиться от подобных проблем.
Для начала было введено ограничение на количество списков значений, которое можно указать в свойствах потока. На данном этапе развития проекта оно составляет не более 7 полей. Таким образом у вас есть возможность привязать свои комментарии в контексте семи различных полей, что, на мой взгляд, не так уж и мало. Вторым существенным ограничением является ограничение по количеству значений каждого поля. На сегодня нам позволено использовать до 31 значения для “обычного” контекстного поля (списка значений). Для полей, в которых больше чем 31 значение – необходимо использовать тильду (‘~’), то есть “полу-привязанное” поле.
Вот мы и ответили на вопрос зачем нужна тильда, а заодно и раскрыли с вами еще парочку ограничений, про которые не стоит забывать при работе с этим замечательным сервисом…
На этом позвольте закончить мой поток связанных и не очень мыслей относительно данного сервиса.
Всем спасибо за внимание, и отдельное спасибо Дмитрию и его команде за замечательное расширение, позволяющее выйти за рамки стандартных возможностей QlikView. Будем надеяться, что проект не остановится на достигнутом, и в будущем разработчики нас порадуют новыми возможностями и, возможно, интеграцией данного сервиса с другими программными продуктами. По крайней мере, я думаю, это было бы логичным продолжением хорошего начинания.
P.S. Мой вариант демки вы можете найти здесь.
P.P.S. Возможно, данный пост заставит меня начать небольшой  цикл статей, так или иначе связанных с расширениями и другими дополнительными возможностями, облегчающими жизнь при работе с QlikView. По крайней мере, мысли на эту тему у меня в голове крутятся давно. Осталось самое сложное - найти время на их воплощение (с чем обычно, к сожалению, и возникают проблемы). В общем, ждите новых публикаций…


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

Отправить комментарий