Статьи

Как вы настраиваете свою платформу отчетности?

После предыдущих статей « Как вы делаете свои отчеты? и « Как вы используете свои отчеты? ‘последний покажет некоторые настройки, которые вам могут понадобиться на вашем сервере. Платформа отчетности, которую нельзя настроить, не может считаться реальной возможностью.   Использование Spring позволяет легко настраивать любые компоненты, даже если они созданы для серверного бизнеса или для пользовательского интерфейса.

1. Настройки платформы

Как и любому серверному приложению, вам нужны некоторые свойства, указанные в файлах свойств или любом другом месте хранения. Вам необходимо определить URL-адреса и домашние каталоги, хранилища, такие как источники данных или репозитории, определить почтовый сервер, настроить планировщик и любые другие параметры, необходимые для сервера отчетов. Эти типы свойств могут быть двух типов: те, которые устанавливаются один раз при запуске и не будут изменены в будущем, и те, которые могут быть изменены администраторами чаще. Последние могут зависеть от клиента, поэтому рекомендуется вносить изменения непосредственно из пользовательского интерфейса сервера.

2. Настройки бизнеса

Любой отчет, диаграмма, задание планировщика могут иметь некоторые свойства, которые определяются пользователем. Здесь мы можем рассмотреть параметры отчета, форматы экспорта, типы диаграмм, все параметры, используемые для определения задания планировщика.

3. Настройки кеша

Любая платформа отчетов должна учитывать кеш, чтобы уменьшить количество обращений к вашему хранилищу. Даже если у вас есть только одна диаграмма на приборной панели, если ее просматривает много одновременно работающих пользователей, без кеша система захлебнется рано или поздно. NextReports Server позволяет определять параметры кэша для всех объектов, которые могут быть добавлены на информационные панели: диаграммы, отчеты таблиц, отчеты о тревогах, а пользователь может установить время истечения в минутах, если используется кэш.

4. Интеграция

Вы хотите интегрировать свой сервер с другими приложениями. Но ваше приложение имеет свою безопасность, его  пользователей, и будет неудобно создавать всех ваших пользователей с их паролями к вашему серверу отчетов. Более того, если какой-либо пользователь будет добавлен, изменен или удален позже, вам придется обновить пользователей на сервере отчетов. Это невыполнимая задача. Поэтому, если вы хотите воспользоваться преимуществами безопасности вашего приложения, сервер отчетов должен предложить задание синхронизации. В зависимости от того, какой тип безопасности используется в вашем приложении, эта работа должна соответствовать вашим потребностям. NextReports определяет процесс, который приводит и обновляет пользователей в хранилище контента. Простая конфигурация xml определит процесс синхронизации с базой данных. Вы должны указать свой источник данных и свои запросы, чтобы получить имена пользователей и атрибуты пользователей (что позволяет сопоставить любые поля, которые могут у вас быть, с хранилищем NextReports Server):  

<bean id="syncUserDetailsService" class="com.asf.nextserver.security.DatabaseExternalUsersService">
  <property name="dataSource" ref="syncDataSource"/>
  <property name="userNamesQuery">
   <value>SELECT USER_NAME FROM USERS</value>         
  </property>      
  <property name="userQuery">
    <value>SELECT * FROM USERS WHERE USER_NAME = ?</value>
  </property>
  <property name="mapping">
    <map>
      <!--  required -->
      <entry key="user.username" value="USER_NAME"/>
      .......
    </map>
  </property>
</bean>

Вы также должны подумать об интеграции с более чем одним приложением. В этом случае у вас будет больше заданий синхронизации, и вы должны расширить свой сервер отчетов с определением « области ». Думайте об этом как о домене, который может быть, например, именем приложения. В этом случае ваш логин должен содержать принципал, учетные данные и область.

5. Профили

Иногда вам может потребоваться настроить сервер отчетов, чтобы пользователи могли видеть все меньше и больше вашего пользовательского интерфейса в отношении функциональности. Не путайте это с безопасностью, где у вас есть разрешения,  чтобы увидеть, какие данные видны пользователям.    NextReports Server использует концепцию профиля, которая привязана к пользователям, которые не являются администраторами. Профиль определяет две вещи:

  • Какую функциональность пользовательского интерфейса могут видеть пользователи с таким профилем: возможно, некоторые пользователи хотят просматривать результаты только на панелях мониторинга, другие могут просто захотеть настроить свои задания планировщика, а другие заинтересованы в мониторинге и так далее.
  • какие действия нужно скрывать   для пользователей с таким профилем не потому, что у них нет разрешений, а просто потому, что им это не интересно.

 Конфигурация может быть выполнена в XML-файле, например:

<bean id="businessAnalystProfile" class="com.asf.nextserver.security.Profile">
  <property name="name" value="businessAnalyst"/>
<property name="displayName" value="Business Analyst"/>
<property name="sectionIds">
   <list>                                        
<value>section_class</value>
   . . .           
  </list>
</property>
<property name="hiddenActionContributorIds">
  <list>
    <value>contributor_class</value>
    . . . 
  </list>
</property>
</bean>

Таким образом, очень легко добавлять новые профили с желаемыми функциями (разделами) и видимыми действиями, что делает интеграцию NextReports Server с вашим приложением максимально простой.

6. Единый вход

Если вам нужен единый вход, чтобы после подключения пользователя к его приложению его не запрашивали учетные данные на платформе отчетности, Spring приходит на помощь с интеграцией CAS. NextReports Server обеспечивает интеграцию со всеми вашими приложениями через единый вход с использованием CAS.

Чтобы определить ваш CAS, должен быть написан проверочный билет, в котором будут указаны адреса входа в систему и выхода из нее:    

<bean id="ticketValidator" class="com.asf.nextserver.web.security.cas.CasServiceTicketValidator">

  <constructor-arg index="0" value="https://myurl:myport/cas"/>
  <property name="loginUrl" value="https://myurl:myport/cas/login"/>
  <property name="logoutUrl" value="https://myurl:myport/cas/logout"/>
</bean>

Spring поддерживает интеграцию с CAS через фильтр:

<bean id="casProcessingFilter" class="org.springframework.security.ui.cas.CasProcessingFilter">
  <property name="authenticationManager" ref="authenticationManager"/>
  <property name="defaultTargetUrl" value="/app/"/>
  <property name="filterProcessesUrl" value="/app/j_spring_cas_security_check"/>
</bean>

Чтобы использовать его casProcesingFilter, вы должны добавить его в прокси цепочки фильтров:

<bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
  <security:filter-chain-map path-type="ant">                       
<security:filter-chain pattern="/**" filters="httpSessionContextIntegrationFilter, casProcessingFilter"/>                  
</security:filter-chain-map>
</bean>

7. Модульность и настройка интерфейса

Это   хорошая практика , чтобы настроить , как ваш интерфейс выглядит и пользовательского функциональность непосредственно из файлов конфигурации XML. Таким образом, вы можете создать слабосвязанную функциональность (вы можете внести свой вклад), а когда вы хотите добавить или удалить ее из своего приложения, вам просто нужно изменить этот XML-файл. Например, если мы хотим настроить, какие действия будут видны для заданий планировщика, мы можем определить, какие из них являются глобальными (действие меню), какие для конкретной сущности (всплывающее действие) и какие для множественного выбора (массовое действие). ). Это можно рассматривать как нечто похожее на плагины.  

<bean id="schedulerSection" class="com.asf.nextserver.web.schedule.SchedulerSection">
  <property name="menuContributors">           
<list>               
<bean class="com.asf.nextserver.web.action.SearchEntityActionContributor"/>           
</list>       
</property>       
  <property name="popupContributors">
    <list>
     <bean class="com.asf.nextserver.web.action.schedule.ModifyActionContributor"/>
      <bean class="com.asf.nextserver.web.action.schedule.HistoryActionContributor"/>
....
</list>
  </property>
 <property name="bulkMenuContributors">           
<list>                               
<bean class="com.asf.nextserver.web.action.DeleteActionContributor"/>           
</list>
  </property>
</bean>

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

связи