Сводная информация о проекте Пандора Цель проекта Обеспечить клиентам возможность автоматического получения данных проекта WebIndex. Общие условия 1. Разрабатываемые клиентами программные средства должны взаимодействовать по протоколу http путем формирования запросов методами POST и GET на заранее оговоренные URL. 2. Все расчеты ведутся на основании базы данных комплекса iStar, что накладывает требования: a. Объекты измерения должны быть организованы в виде стандартного четырехуровневого дерева: Holdings-Projects-Sections-Subsections b. Ведение этого дерева (добавление/изменение/удаление объектов) проводится стандартным образом – силами наших менеджеров, после согласования всех деталей с клиентом Основные объекты и концепция системы: Отчет - это именно то, что необходимо посчитать и что называется отчетом в iStar. Шаблон отчета – это набор данных, описывающих структуру отчета. Задача - это тот контекст, в рамках которого производится расчет одного или нескольких отчетов. Шаблон задачи – список шаблонов отчетов, многократно запускаемых в рамках одной задачи Клиент – компания, использующая Пандору для своих нужд. Пользователь – представитель клиента, работающий в Пандоре. При доступе к защищенным частям системы использует собственный логин и пароль. Имеет собственный пул потоков на сервере (размер пула определяется администратором Пандоры), а также свой набор доступных для просмотра сайтов. Ресурсы пользователя К персональным ресурсам пользователя относятся - набор шаблонов отчетов - набор шаблонов задач - набор результатов вычислений задач - собственная очередь задач и пул потоков для их выполнения. Одновременно выполняется только число задач, равное размеру пула потоков пользователя. Если задач больше – они ставятся в очередь. Просмотр и управление очередью задач доступны из web-интерфейса и, отчасти, через web-методы (см. раздел «http-сервис») Выполнение задачи Перед добавлением задачи пользователь должен указать следующие параметры: - период времени, для которого вычисляются все отчеты задачи - набор отчетов (точнее их шаблонов), которые надо посчитать При добавлении задачи (это можно сделать как из web-интерфейса, так и вызвав web-метод) она либо ставится в очередь задач клиента, либо, если один из потоков в пуле свободен, немедленно запускается на исполнение. В процессе выполнения задачи последовательно рассчитываются все включенные в нее отчеты. После завершения вычислений все результаты сохраняются в БД и могут быть извлечены пользователем в любое время (просмотрены визуально или получены в формате XML). С помощью http-сервиса (команда run_custom_report) можно создать задачу для расчета отчета, шаблон которого передается в команде в формате xml. http-сервис http-сервис позволяет осуществлять управление вычислениями и извлечение результатов автоматически. Для удобства настройки автоматов на web-сайте Пандоры сделан раздел «Примеры http-обращений к сервису», где можно посмотреть и прямо «руками» попробовать вызывать web-методы и посмотреть возвращаемый ими XML. http-cервис предоставляет следующие методы: vars_get – возвращает список демографических переменных с идентификаторами, необходимый для анализа результатов вычислений (в XML результата переменные и их значения представлены идентификаторами) media_get – возвращает список медиа-объектов, также необходимый для анализа результатов вычислений. report_id_get – возвращает список названий и идентификаторов шаблонов отчетов клиента. Идентификаторы шаблонов отчетов необходимы для указания в методе task_add. data_status_get – возвращает даты, по которые есть данные. DataExistLastDate – последняя дата, на которую есть данные. Так как данные выкладываются понедельно, это всегда последний день недели. ClosedMonthLastDate – последний день последнего закрытого месяца. ClosedMonthWithUcpLastDate – последний день последнего закрытого месяца, для которого уже были добавленные данные по сайтам, измеряемым с помощью User-Centric подхода. months_get – возвращает список месяцев с флагами готовности данных. weeks_get – возвращает список недель, для которых есть данные. data_reloads_get – возвращает список повторных выгрузок данных задним числом. Подробности см. ниже в разделе «выгрузки данных задним числом». task_add - добавляет в систему задачу вычисления одного или нескольких отчетов. Параметры – диапазон дат и список идентификаторов отчетов. Возвращает идентификатор добавленной задачи. task_delete - удаляет задачу по ее идентификатору (идентификатор возвращается методом task_add). Если задача стоит в очереди или выполняется – она отменяется и удаляется. Если задача уже выполнена – удаляется задача и ее результаты. run_custom_report - добавляет в систему задание по вычислению пользовательского отчета. Параметры – диапазон дат и шаблон отчета в формате xml (передается в POST-потоке данных). Возвращает идентификатор добавленной задачи. get_task_status – возвращает XML статуса задачи по ее идентификатору. <State> <Code>[код статуса задачи]</Code> <Text>[описание состояния/текст ошибки]</Text> </State> Возможные значения кода статуса задачи: NOT_EXIST, IN_QUEUE, IN_PROGRESS, COMPLETED, TERMINATED. get_task_result – возвращает результат выполнения задачи по ее идентификатору. Резльтат выполнения задачи представляет собой XML следующего вида: <TaskResult> <ReportOutput/> <ReportOutput/> … <ReportOutput/> </TaskResult> Т.е. выдаются все результаты выполнения отчетов, вычисленных в рамках задания. Формат выходных данных отчета (ReportOutput) описан в отдельном документе. get_task_report_templates – возвращает шаблоны вычисленных в задании отчетов по идентификатору задания. Результат команды выглядит так: <TaskReportTemplates> <ReportDescription/> <ReportDescription/> … <ReportDescription/> </TaskReportTemplates> Каждый тег ReportDescription представляет собой стандартный для системы XML шаблона отчета. Вспомогательная команда error_sample при выполнении только порождает исключение, сообщение о котором возвращается пользователю серверной системой обработки исключений. Т.е. предоставляет достоверный пример сообщения сервиса об ошибке выполнения команды. Выгрузки данных задним числом Выполняются редко и только в случае ошибок в первоначальных данных. Данные за некий период времени удаляются и заменяются новыми. Для получения информации о таких выгрузках можно использовать команду data_reloads_get, которая возвращает XML-список следующего вида: <DBReloadTable> <Reloads> <Reload FinishDay="YYYY-MM-DD" StartDay=" YYYY-MM-DD " ReloadDate=" YYYY-MM-DD "> <Comments>[Комментарий]</Comments> </Reload> </Reloads> </DBReloadTable> Здесь атрибуты StartDay и FinishDay обозначают период, за который были повторно выгружены данные. ReloadDate – день, когда была произведена повторная выгрузка. Сохранность вычислений В случае остановки WEB-сервера Пандоры для технических работ, либо внеплановой остановки, все пользовательские очереди и пулы заданий восстанавливаются после запуска сервера из базы данных и будут доведены до конца. Сохранение заданий в БД происходит в момент их добавления пользователем. В случае необходимости отменить (или удалить) свои задания пользователь может воспользоваться WEB-интерфейсом. Есть средства как для отмены заданий по одному, так и для массовой отмены/удаления заданий. Старые задачи и их результаты хранятся на сервере не более 90 дней. По истечении этого срока задачи и их результаты автоматически удаляются. Обработка ошибок сервиса В случае возникновения ошибки в процессе выполнения команды сервиса вместо штатного xml возвращается xml ошибки следующего вида: <Error> <ErrType>UNKNOWN</ErrType> <Message> EXCEPTION: Пробное исключение INNER EXCEPTION: Пробное вложенное исключение </Message> </Error> В процессе выполнения сервисом команд возникают ошибки, зачастую обусловленные некорректными параметрами команд. Для автоматизации обработки таких ошибок наиболее частые ошибки типизированы. Сервис распознает тип ошибки и добавляет в xml сообщения об ошибке строковый тип ошибки (ErrType). Возможные значения типа ошибки: UNKNOWN – неизвестный тип ошибки WRONG_METHOD – попытка вызова несуществующего метода http-сервиса WRONG_INTERVAL – неверный временной интервал (команды task_add и run_custom_report) USER_CANCELLATION – задание отменено пользователем REPORT_TEMPLATE_UNKNOWN – неизвестный шаблон отчета (команда task_add) Служба уведомлений об изменении данных На сервере Пандоры работает служба, отправляющая подписанным клиентам сообщения об обновлениях/изменениях в данных. См. документ Notification_service.docx в разделе «документация» сайта Пандоры.