Формулировка проблемы: необходимо иметь возможность вести «Базу данных аккредитованных журналистов» - набор карточек журналистов. Каждая карточка содержит информацию о журналисте, на каких ресурсах он пишет и под каким ником. Также необходимо иметь возможность из карточки журналиста получить доступ на просмотр ко всем его новостям; и обратно — из новости открыть карточку того журналиста (журналистов), который её написал.
Решение: на стороне Arta Synergy задача
реализуется с помощью функциональности «Реестры»:
создание/активация/ изменение/удаление записи, соответствующих
маршрутов и специального обработчика процессов типа «Событие
реестра» (см. задачу AI25, BPM1). На
стороне Arta Intelligence
необходима новая
функциональность «Журналисты».
«База данных аккредитованных журналистов» реализуется в виде
реестра Arta Synergy
. Одна запись в реестре —
одна карточка журналиста.
Форма реестра должна, как минимум, содержать следующие поля:
ФИО журналиста. Компонент должен иметь тип «Однострочное поле» и не должен находиться внутри динамической таблицы. Будет использована для различения журналистов пользователем в случае, когда паре «ник — источник» соответствует несколько карточек;
Динамическая таблица, в которой должны быть поля:
Источник. Компонент должен иметь тип «Выпадающий список»,
источником данных для которого должен быть справочник
источников и групп источников, синхронизированнй с
Arta Intelligence
(см. ниже
Синхронизация справочников источников
Arta Intelligence → Arta Synergy
);
Ник автора на этом источнике (см. AI16). Компонент должен иметь тип «Однострочное поле».
Ссылка для открытия всех новостей журналиста. Компонент должен
иметь тип «Ссылка». Ссылка будет открывать модуль
Arta Intelligence
(задача
AI15) и отображать все новости
этого журналиста (Просмотр всех новостей журналиста).
Реестр должен иметь настроенные маршруты активации, изменения и
удаления записи реестра, содержащие как минимум процесс «Событие
реестра». Этот процесс должен быть настроен так, как необходимо
для работы обработчика, описанного в задаче
AI25, BPM1. Этот процесс посредством
обработчика будет, соответственно,
создавать/модифицировать/удалять журналиста в
Arta Intelligence
(см. Базовая
функциональность).
Карточкой журналиста будем считать документ с файлом по форме вышеописанного реестра.
Каждый журналист представляет собой следующую структуру:
ФИО журналиста (текстовая строка);
Уникальный идентификатор файла карточки журналиста;
Уникальный идентификатор документа карточки журналиста;
Любое количество пар вида «ник автора — источник» или «ник автора — группа источников».
Arta Intelligence
должен давать возможность
создавать, удалять, модифицировать, а также получать список
имеющихся журналистов (CRUD) через REST API
,
а также реализовывать специфические функции, перечисленные в
следующих разделах.
Принимает на вход два параметра: ник автора и источник новости (либо группу источников) и находит журналиста, который соответствует входным параметрам. Если количество найденных журналистов:
равно нулю, тогда пользователю выводится диалоговое окно с сообщением «Журналистов с ником ник-автора на источнике название-источника-или-группы-источников не найдено».
равно единице, тогда в этом же окне браузера открывается
ссылка, сформированная из значения параметра
dikw.journalists.card.open
(см. Настройки
функциональности «Журналисты» в
Arta Intelligence
) с подстановкой туда
идентификаторов файла и документа карточки журналиста.
больше единицы, тогда Arta Intelligence
должен показать диалоговое окно со списком имён журналистов;
клик по одному из журналистов вызывает закрытие диалогового
окна и открытие в том же окне ссылки, сформированной
аналогично предыдущему пункту.
При настройке параметра 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 Synergy
, служащем приёмником
синхронизации, должны иметься отдельные поля, как минимум, для
названий источников (групп источников) и идентификаторов,
которые будут использоваться в
Arta Intelligence
(см. Базовая
функциональность и задачу AI25,
BPM1). Локализованные значения названий источников (групп
источников) должны быть правильно обработаны при синхронизации.
Синхронизация должна срабатывать при каждом изменении
справочников либо групп справочников в
Arta Intelligence
. Также необходимо
предусмотреть вариант первой синхронизации.
Вся описанная выше функциональность настраивается при помощи
конфигурационного файла dikw.properties
:
#
Включить или нет модуль «Журналисты». При
выключенном модуле не производится выполнение функциональности,
описанной в задаче AI21, а также
выполняется Синхронизация справочников источников
Arta Intelligence
→
Arta 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.