QlikView 11 – Call EDX task from web-client on click button

Введение

Загрузку данных в QlikView-отчетах (с расширением .qvw) можно осуществить несколькими путями:
1. В разработчике отчетов (Qv.exe), нажав кнопку Загрузка.
2. При запуске разработчика с опцией загрузки: qv.exe /r reportname.qvw
3. Используя консоль управления QlikView Management Console (http://localhost:4780/qmc/SourceDocuments.htm), в которой настраивается задание по расписанию (scheduler task) для выбранного отчета.
4. В веб-клиенте для пользователей (Access Point), используя внешние расширения (QlikView Extension), которые запускают задания по расписанию созданные в QlikView Management Console (QlikView Management Service).
Первые два метода (1, 2) применяют для загрузки новых данных вручную. Два нижних метода (3, 4), автоматизируют процесс обновления данных в отчетах. Метод 4 работает в связке с методом 3, и привносит расширенные возможности автоматизации обновления данных в отчетах самим пользователем отчета.

Загрузка данных в web-клиенте QlikView по нажатию кнопки

За основу инструкции взяты файлы и информация, предоставленные на сайте: http://qvextcalledxfromajax.codeplex.com/wikipage?title=Installation&referringTitle=Documentation.
CallEDXFromAjax_ArchitectureOverview

Все настройки выполнялись на машине под Windows Server 2008 R2, где развернута серверная часть QlikView 11.

1. Для начала качаем файлы:
• The web service — EDX Wrapper Webservice v1.0.1.zip
• The QlikView extension — CallEDXFromAjax_v1_0_0.qar
2. Разархивируем EDX Wrapper Webservice v1.0.1.zip на диск C (получим C:\ EDXWrapper_v_1_0_1).
3. От имени администратора запускаем CallEDXFromAjax_v1_0_0.qar, который проинсталлирует новые расширения для QlikView в профиль пользователя (будет создана папка с объектами %LOCALAPPDATA%\QlikTech\QlikView\Extensions\Objects\CallEDXFromAjax).
4. Чтобы эти расширения могли использовать все пользователи QlikView, следует скопировать папку %LOCALAPPDATA%\QlikTech\QlikView\Extensions\Objects\CallEDXFromAjax в C:\ProgramData\QlikTech\QlikViewServer\Extensions\Objects.

5. Далее настраиваем веб-службу EDX Wrapper Webservice на IIS 7.0 под .NET Framework 4.0.30319.
5.1. Заходим в консоль IIS (Internet Information Services (IIS) Manager)
5.2. Добавляем новый веб сайт с именем EDXWrapper и портом 8080:

Web Site

5.3. Затем добавим в пул приложений новый пул EDXWrapper с поддержкой .NET Framework 4.0.30319:

App pool properties

5.4. Проверяем в добавленном сайте EDXWrapper версию используемого aspnet_client (должна присутствовать в списке версия 4_0_30319):

Если в списке отсутствует версия aspnet_client – system_web — 4_0_30319, то следует выполнить следующий код в командной строке:
cmd> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe –i
После чего в ISS во всех веб сайтах должна появиться версия aspnet client – 4.0.30319.

5.5. Перезапускаем IIS.
5.6. Проверяем работу нашего сайта, для этого в Internet Explorer вводим адрес: http://localhost:8080/QlikViewTasks.asmx
home edxtrigger
В разделе TiggerEDXTask можно проверить работу процесса обновления данных в отчете, но для этого следует выполнить п.6 данной инструкции.
test edxtrigger

6. Создаем задание по расписанию в QlikView Management Console для обновления данных в имеющемся отчете (в моем случае отчет KPI.qvw).
6.1. Для этого заходим в консоль управления QlikView Management Console и переходим в раздел Documents. Поскольку отчеты размещены в каталоге по умолчанию C:\ProgramData\QlikTech\SourceDocuments, то заходим в закладку Source Documents и выбираем отчет, например, KPI.qvw.
console docs

6.2. Справа нажимаем на кнопку (Add Task Manually). Откроется окно настройки задания. В закладке General – задаем имя задания (например, KPITASK) и включаем его (Enabled).
task general
В закладке Reload разрешаем перезагрузку (Enable).
tasks reload
Далее переходим в закладку Triggers и добавляем ( Add) новый триггер, срабатывающий на событие On an external events. Пароль можно не задавать.
trigger edx
В остальных закладках (Reduce, Distribute, Document Information, Server) я оставил все как есть по умолчанию.
После того, как все параметры заданы, жмем Apply.

7. Задание создано, теперь заходим в разработчик отчетов (QV.exe), где нужно добавить новый объект для обновления данных из веб-клиента.
7.1. В разработчике открываем наш отчет (например, KPI.qvw), далее включаем вид WebView.
qv web mode

7.2. Жмем по форме правой кнопкой мыши и в контекстном меню выбираем Новый Объект Листа (New object page).
new object

7.3. В открывшемся меню заходим в Объекты расширения и выбираем Call EDX From Ajax. И перетаскиваем объект на форму отчета.
New object on form

7.4. Далее заходим в Свойства нового объекта и настраиваем его.
edx properties
В Свойствах в разделе Call EDX From Ajax параметру Webservice URL задаем значение: http://:<QV server>:<port>/QlikViewTasks.asmx (где <QV server> — имя компьютера, где установлена серверная часть QlikView, <port> — указанный в IIS, 8080).

NOTE:
Следует знать, что имя компьютера указывается также, как и при вызове QlikView Access Point. Например, если веб-клиент вызывается http://srvqv.test.int:8080/qlikview/index.htm, тогда в параметре Webservice URL указывается адрес: http://srvqv.test.int:8080/QlikViewTasks.asmx.

Для параметра Task Name: имя задания созданного в п.6 (в моем случае, KPITASK).
edx properties 1
В разделе Behaviour оставляем все по умолчанию, и переходим в раздел Translation, где зададим новое имя для кнопки и уведомления выполнения загрузки.
edx properties 2
В разделе Caption задаем имя объекту, например, Load data.
edx properties 3

7.5. Теперь уменьшим размер нашего объекта, чтобы он мог разместиться на форме, и сохраним все изменения в отчете.
resize edx on form

ВНИМАНИЕ! Объект Call EDX From Ajax предназначен и работает только в веб-клиенте QlikView (Access Point)! В разработчике отчетов (Qv.exe) он не поддерживается, и при нажатии будет выдавать ошибку:
warning
А также Call EDX From Ajax корректно работает в браузере Internet Explorer 8, 9, 10, 11.

8. Откроем наш отчет (KPI.qvw) в веб-клиенте QlikView через Internet Explorer, и испытаем добавленный в него объект Call EDX From Ajax. Нажмем на кнопку UPLOAD и дождемся выполнения загрузки данных:
web-client
EDX status
Если все завершилось успешно, то все настройки были выполнены, верно. Иначе сверьте свои настройки с данной инструкцией, или проверяйте корректность вашего кода в редакторе скриптов, или смотрите в сторону прав доступа.