Задача [AI22]: Журналисты

Формулировка проблемы: необходимо иметь возможность вести «Базу данных аккредитованных журналистов» - набор карточек журналистов. Каждая карточка содержит информацию о журналисте, на каких ресурсах он пишет и под каким ником. Также необходимо иметь возможность из карточки журналиста получить доступ на просмотр ко всем его новостям; и обратно — из новости открыть карточку того журналиста (журналистов), который её написал.

Решение: на стороне Arta Synergy задача реализуется с помощью функциональности «Реестры»: создание/активация/ изменение/удаление записи, соответствующих маршрутов и специального обработчика процессов типа «Событие реестра» (см. задачу AI25, BPM1). На стороне Arta Intelligence необходима новая функциональность «Журналисты».

Начальные соглашения и требования

«База данных аккредитованных журналистов» реализуется в виде реестра Arta Synergy. Одна запись в реестре — одна карточка журналиста.

Форма реестра должна, как минимум, содержать следующие поля:

  • ФИО журналиста. Компонент должен иметь тип «Однострочное поле» и не должен находиться внутри динамической таблицы. Будет использована для различения журналистов пользователем в случае, когда паре «ник — источник» соответствует несколько карточек;

  • Динамическая таблица, в которой должны быть поля:

    • Источник. Компонент должен иметь тип «Выпадающий список», источником данных для которого должен быть справочник источников и групп источников, синхронизированнй с Arta Intelligence (см. ниже Синхронизация справочников источников Arta Intelligence → Arta Synergy);

    • Ник автора на этом источнике (см. AI16). Компонент должен иметь тип «Однострочное поле».

  • Ссылка для открытия всех новостей журналиста. Компонент должен иметь тип «Ссылка». Ссылка будет открывать модуль Arta Intelligence (задача AI15) и отображать все новости этого журналиста (Просмотр всех новостей журналиста).

Реестр должен иметь настроенные маршруты активации, изменения и удаления записи реестра, содержащие как минимум процесс «Событие реестра». Этот процесс должен быть настроен так, как необходимо для работы обработчика, описанного в задаче AI25, BPM1. Этот процесс посредством обработчика будет, соответственно, создавать/модифицировать/удалять журналиста в Arta Intelligence (см. Базовая функциональность).

Карточкой журналиста будем считать документ с файлом по форме вышеописанного реестра.

Рисунок 534. Пример формы реестра журналистов

Пример формы реестра журналистов

Функциональность «Журналисты» в Arta Intelligence.

Каждый журналист представляет собой следующую структуру:

  • ФИО журналиста (текстовая строка);

  • Уникальный идентификатор файла карточки журналиста;

  • Уникальный идентификатор документа карточки журналиста;

  • Любое количество пар вида «ник автора — источник» или «ник автора — группа источников».

Базовая функциональность.

Arta Intelligence должен давать возможность создавать, удалять, модифицировать, а также получать список имеющихся журналистов (CRUD) через REST API, а также реализовывать специфические функции, перечисленные в следующих разделах.

Просмотр карточки журналиста.

Принимает на вход два параметра: ник автора и источник новости (либо группу источников) и находит журналиста, который соответствует входным параметрам. Если количество найденных журналистов:

  1. равно нулю, тогда пользователю выводится диалоговое окно с сообщением «Журналистов с ником ник-автора на источнике название-источника-или-группы-источников не найдено».

  2. равно единице, тогда в этом же окне браузера открывается ссылка, сформированная из значения параметра dikw.journalists.card.open (см. Настройки функциональности «Журналисты» в Arta Intelligence) с подстановкой туда идентификаторов файла и документа карточки журналиста.

  3. больше единицы, тогда Arta Intelligence должен показать диалоговое окно со списком имён журналистов; клик по одному из журналистов вызывает закрытие диалогового окна и открытие в том же окне ссылки, сформированной аналогично предыдущему пункту.

Рисунок 535. Диалоговое окно отображения нескольких журналистов

Диалоговое окно отображения нескольких журналистов

При настройке параметра dikw.journalists.card.open в значение по умолчанию, равное:

#submodule=common&server_id=remote&file_identifier=${journalist.card.file.id}&action=open_document&document_identifier=${journalist.card.doc.id}

в результате выполнения пунктов 2) и 3) должен открыться документ Synergy по реестру журналистов с отображением файла по форме реестра.

Просмотр всех новостей журналиста.

Функция реализуется основным приложением Arta Intelligence, принимает на вход уникальный идентификатор файла карточки журналиста и отображает все новости, которые относятся к этому журналисту — режим «фильтр по журналисту» (см. задачу AI24). Если в этом режиме будут заданы какие-либо параметры поиска, то поиск должен производиться среди новостей этого журналиста.

Синхронизация справочников источников Arta Intelligence → Arta Synergy.

Источники и группы источников Arta Intelligence должны синхронизироваться с одним справочником Arta Synergy. При этом в справочнике Arta Synergy, служащем приёмником синхронизации, должны иметься отдельные поля, как минимум, для названий источников (групп источников) и идентификаторов, которые будут использоваться в Arta Intelligence (см. Базовая функциональность и задачу AI25, BPM1). Локализованные значения названий источников (групп источников) должны быть правильно обработаны при синхронизации. Синхронизация должна срабатывать при каждом изменении справочников либо групп справочников в Arta Intelligence. Также необходимо предусмотреть вариант первой синхронизации.

Настройки функциональности «Журналисты» в Arta Intelligence.

Вся описанная выше функциональность настраивается при помощи конфигурационного файла dikw.properties:

# Включить или нет модуль «Журналисты». При выключенном модуле не производится выполнение функциональности, описанной в задаче AI21, а также выполняется Синхронизация справочников источников Arta IntelligenceArta Synergy dikw.journalists=true

# Код справочника для синхронизации источников и групп источников:

dikw.journalists.sourceref.code=ai_sources

# Код поля справочника источников, используемый для хранения значений (идентификаторов):

dikw.journalists.sourceref.values=ai_value

# Код поля справочника источников, используемый для хранения подписей значений:

dikw.journalists.sourceref.names=ai_name

# Часть ссылки для открытия карточки журналиста.

# Подстановка ${journalist.card.file.id} будет заменена на идентификатор файла карточки журналиста

# Подстановка ${journalist.card.doc.id} будет заменена на идентификатор документа карточки журналиста:

dikw.journalists.card.open=#submodule=common&server_id=remote&file_identifier=${journalist.card.file.id}&action=open_document&document_identifier={journalist.card.doc.id}

Параметры доступа к Arta Synergy указаны в задаче AI19.