Меню

Использование и модификация системы рейтингования при создании корпоративных форумов на платформе SAP Portal

В версии SAP Portal 7.3 в уже знакомую большинству консультантов подсистему форумов (реализованную SAP AG, кстати, на базе стороннего продукта Jive Forums) была добавлена еще одна функция, давно востребованная на многих площадках профессионального общения – система рейтингования. Как правило, рейтинги рассчитываются в зависимости от качества ответов и создаваемых тем участникам форумов, однако в текущей реализации SAP Portal «из коробки» этот процесс выглядит несколько по-другому: рейтинги устанавливаются собственно темам и сообщениям, а статус (рейтинг) пользователей определяется просто числом созданных сообщений. В этой статье будет показан опыт по настройке и доработке системы форумных рейтингов к более привычному завсегдатаям Интернета виду (на основании качества ответов и создаваемых тем).

Введение

В состав портального решения от SAP традиционно входят средства организации собственного форума компании. Архитекторы разумно решили не изобретать велосипеда и внедрили в портальную платформу слегка модифицированное (адаптированное к интерфейсу и взаимодействующее с SAP KM) решение от Jive Software – компании, специализирующейся на автоматизации социальной составляющей. Многие странности форумной составляющей портальной платформы (например, отдельная административная консоль, собственная система настроек и контроля полномочий) связаны именно с происхождением компонентов.

В версии 7.3 компонент FORUMS также был обновлен, одним из наиболее значимых изменений SAP AG объявила ввод системы рейтингования, аналогичной существующим на многих Интернет-площадках. Традиционно пользователи указывают оценки сообщениям и на основе определенной весовой системы формируется совокупный рейтинг пользователя, при повышении рейтинга пользователям становятся доступны новые возможности, снимается ряд ограничений.

Однако в версии, поставляемой SAP, стандартной основой для установки рейтинга является просто количество сообщений и тем, созданных пользователем, что удовлетворяет далеко не всех пользователей. В ходе одного из проектов команде заказчика были заданы следующие требования к подсистеме форумов:

  • правами на установку оценок сообщениям/темам обладает выделенная группа пользователей (условно назовем ее «модераторы»);
  • рейтинг пользователя должен определяться оценками его сообщений;
  • все сообщения, созданные пользователями со статусом ниже порогового, должны помещаться в премодерационный раздел, т.е. сразу публикуются сообщения только пользователей с ненулевым рейтингом.

К сожалению, документация на компонент FORUMS от SAP AG страдает значительной неполнотой и описывает работу с ним практически исключительно с точки зрения пользователя, максимум – администратора, так что программная реализация запрошенного функционала потребовала глубокого изучения внутреннего устройства форумов, включая анализ структуры БД и частичный реинжиниринг.

Общий подход к решению

Как уже указывалось выше, официальная документация SAP не дает ответа на вопросы значительного изменения функционала форумов, ограничиваясь типовыми настройками. К счастью, разработчики Jive Software предусмотрели очень гибкую систему расширения – возможность разрабатывать собственные подгружаемые классы, реализующие программные интерфейсы так называемых «менеджеров».

Соответственно, было принято решение максимально использовать возможности настроек, дополнительно реализовав набор подгружаемых классов, реализующих недостающие в стандартной поставке возможности.

Настройка и расширение функционала подсистемы форумов

Подключение и настройка расчета рейтингов

В консоли администратора форума (Forums Administrator → Admin Console → Settings → Rating Settings) включаем функцию использования рейтингов в форумах (Рис.1).

Рис.1. Включение рейтингования в форумах

Для простоты используется пятибалльная шкала оценки (Рис. 2).

Рис. 2. Шкала оценки

После выполнения указанных настроек становится доступна возможность установки оценки сообщениям пользователей.

Для корректного расчета рейтинга пользователей выполняем следующие шаги:

1.      Создаем класс расширения upgr.ed.fsk.RatingsCalculator, который рассчитывает суммарное количество очков, начисленных за сообщения пользователям (описывается ниже);

2.      В файловой системе сервера портала создаем папку forumsExt в директории usr\sap\<SID>\ для размещения подгружаемых классов, расширяющих форумы;

3.      Настраиваем параметры для подгружаемых классов (путь Forums Administrator → Admin Console → System Properties), см. Таблицу 1.

Таблица 1. Параметры для подгружаемых классов

Наименование параметра

Значение параметра

reloading.classloader.dir.0

E:\usr\sap\DEP\forumsExt

reloading.classloader.regex

upgr.ed.fsk.+

Добавлю несколько важных примечаний:

  • По умолчанию данных свойств в списке нет, их наименования и значения требуется ввести вручную;
  • Путь к файлам может быть произвольным, главное – доступность созданной папки серверному процессу портала;
  • Файлы классов должны храниться в распакованном виде (.class) в структуре папок, соответствующих пакету класса;
  • Для применения настроек требуется перезагрузка сервера приложений;
  • Обратите внимание на значение параметра «reloading.classloader.regex» - так как предполагалась реализация нескольких классов-расширений, то значение параметра является регулярным выражением и указывает не конкретный класс, а пакет.

Класс RatingsCalculator реализует интерфейс com.jivesoftware.forum.StatusLevelCalculator. Данный интерфейс определяет по сути всего два метода в разных вариациях – getPointLevel и getLeaderIds. Как видно из названий, первый метод возвращает число баллов учетной записи пользователя, второй – перечень наиболее результативных участников форума. Каждый из методов имеет три разновидности – для подсистемы форумов в целом, для отдельного форума и для категории внутри форума. Это дает возможность отображать рейтинги в зависимости от уровня, на котором мы просматриваем форум.

Наиболее простой вариант реализации – прямое чтение баллов из таблицы форумов через встроенный класс com.jivesoftware.base.database.ConnectionManager. Реализация класса тривиальна, но объемна, поэтому в тексте статьи не приводится. Небольшое замечание: если ожидаются значительные нагрузки на форум, более корректным решением будет кэширование результатов и использование дополнительного интерфейса-слушателя (такая возможность также предоставляется библиотекой Jive), выборочно обновляющего кэш при создании или удалении сообщений и изменении оценок.

Настройка таблицы рейтингов

Теперь, когда рейтинг рассчитывается так, как нам необходимо, можно приступить к следующему шагу – созданию таблицы рейтингов. В подписи каждого сообщения под псевдонимом пользователя помещается индикатор ранга пользователя согласно таблице, а в профиль – название ранга. Настройка производится просто - в консоли администратора форума (Forums Administrator → Admin Console → Settings →Status Level Settings, прямая ссылка http://<hostname>:<port>/forums/admin/settings-statuslevels.jsp) включаем функцию ведения уровней статусов (Рис. 3).

Рис. 3. Включение уровня статусов в форумах

Там же создадим следующие уровни статусов (см. Таблицу 2, Рис. 4).

Таблица 2. Уровни статусов для форума

Наименование статуса

Описание статуса

Количество сообщений

Отображаемая картинка

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти