Skip to end of metadata
Go to start of metadata
Постановка задачи
Добавить поиск для нового модуля.
Инструмент
Палитра XML, Плагин, Настройка системы
Реализация
Редактирование конфигурации поиска
Определение параметров поиска, которые в дальнейшем будут отображены в поисковой форме
<!--Дата-->
<bean id="exampleDate" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="testDate" c:name="Дата:"
c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tdateinterval"/>
<!--Сотрудник-->
<bean id="exampleVCard" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="testVCard" c:name="Сотрудник:"
c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tvcard">
<constructor-arg name="classifier">
<list value-type="ru.intertrust.cmj.af.search.Classifier">
<ref bean="fvCurrHumanHH"/>
<ref bean="clCurSysEmps"/>
<ref bean="clNosys"/>
</list>
</constructor-arg>
</bean>
Подключение параметров поиска к форме
<bean id="rkkSuperBundle<Module>" abstract="true" class="ru.intertrust.cmj.af.search.dp.CmBundle">
<constructor-arg index="0" value="rkk"/>
<constructor-arg index="1"
value="<Object>"/>
<constructor-arg index="2">
<list>
<ref bean="exampleDate"/>
<ref bean="exampleVCard"/>
</list>
</constructor-arg>
<constructor-arg index="3" ref="cmj_af_search_messageSource"/>
</bean>
Определение модуля
<bean id="attorneySearcher" class="ru.intertrust.cm_sochi.srv.connector.sochi.search.SochiSolrSearcher">
<constructor-arg name="cmAppSystemId" value="<Module>"/>
<constructor-arg name="isNamed" value="true"/>
<constructor-arg name="searchArea" value="<Module>_area"/>
<constructor-arg name="targetCollectionName" value="(search)"/>
<constructor-arg>
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.search.<Basic Module>SearchFilterCreator"/>
</constructor-arg>
<constructor-arg>
<bean class="ru.intertrust.cmj.af.search.dp.docinfo.CustomModuleInfoExtractor" c:messageSource-ref="cmj_af_search_messageSource" c:ident="<Module>"/>
</constructor-arg>
</bean>
Определение объекта
<!-- Формирует список областей поиска путём вызова дочерних билдеров. Если дочерний билдер является тоже ScopeTreeBuilder, то созданный им список областей делается дочерним к последней созданной области. Если список сделать дочерним невозможно, то список просто добавляется к общему списку областей первого уровня. -->
<bean id="rootScopeBuilder" class="ru.intertrust.cmj.af.search.ScopeTreeBuilder">
<property name="childs">
<list>
<bean class="ru.intertrust.cmj.af.search.dp.CmDocTypesScopeBuilder">
<constructor-arg index="0" value="<module>"/>
<constructor-arg index="1" value="<Module>"/>
<constructor-arg index="2">
<list>
<ref bean="subject"/>
</list>
</constructor-arg>
<constructor-arg index="3">
<set>
<ref bean="rkkSuperBundle<Module>"/>
</set>
</constructor-arg>
<constructor-arg index="4">
<list>
<ref bean="<module>Searcher"/>
</list>
</constructor-arg>
<constructor-arg index="5">
<ref bean="cmSearchScopeCompositExBuilder"/>
</constructor-arg>
</bean>
</list>
</property>
</bean>
Создание области поиска
<search-area name="<Module>_area">
<target-domain-object type="F_DP_OutputRkk">
<linked-domain-object type="Tn_Field_Datetime" nested="true">
<indexed-field name="tDate" solr-prefix="cm_dt">
<script>if (ctx.get('cmjfield').equals('DateControl')){ ctx.get('value'); }</script>
</indexed-field>
</linked-domain-object>
<linked-domain-object type="F_DP_Rkk_SigningInfo">
<indexed-field name="tVCard" search-by="substring" language="">
<doel>signer.orig_shortname</doel>
</indexed-field>
<parent-link>
<doel>Owner</doel>
</parent-link>
</linked-domain-object>
</target-domain-object>
</search-area>
Настройка соответствия параметров поиска и области поиска
<bean id="dominoRequestConfigAttorney" class="ru.intertrust.cmj.af.search.dp.request.DominoRequestConfig">
<!-- Отображение ID параметров запроса на поля notes документа -->
<property name="nsFieldsByParamByBundleID">
<map merge="true">
<entry key="rkk#testDate" value="tDate"/>
<entry key="rkk#testVCard" value="tVCard"/>
</map>
</property>
<!-- Отображение ID бандла на имя формы notes документа -->
<property name="formsByBundleID">
<map merge="true">
<entry key="rkk" value="<Basic Object>"/>
</map>
</property>
</bean>
Подключение поиска к кастомной коллекции
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" default-lazy-init="true">
<bean id="Attorney_(projects_by_registration_place)Metadata"
class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.CollectionMetadataNew" p:caseSensitiveFieldNames="true" p:searchArea="<Module>_area">
<constructor-arg>
<list value-type="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field">
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="self">
<property name="virtualField">
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField">
<property name="realFields">
<list>
<value>self_1</value>
<value>Module</value>
<value>self_2</value>
<value>ID</value>
<value>created_date</value>
<value>self_3</value>
</list>
</property>
<property name="pattern" value="<id>([0-9]{16}):([0-9A-F]{32})</>" />
<property name="separator" value=""/>
<property name="emptySeparator" value="true"/>
</bean>
</property>
</bean>
</list>
</constructor-arg>
</bean>
</beans>
Запуск реиндексации
- Открыть НБР-аминку
- Перейти в раздел Структура Системы\Инструменты\Плагины
- Ввести название плагина ru.intertrust.cm_sochi.plugins.SolrReindexingPlugin
- Нажать "Применить"
- Выделить найденный плагин
- Нажать кнопку Play
- Ввести SQL-запрос. SQL-запрос нужно делать по таблицам, которые определены в области поиска тегах target-domain-object и linked-domain-object.

Создать область поиска
- Открыть НБР-аминку
- Перейти в раздел Структура системы\Каталог\Области поиска
- Нажать на кнопку "Создать"
- Заполнить название области поиска
- В качестве приложения указать Портал
- В поле "Область" указать приложение, по которому будет производиться поиск
- Сохранить


Подключить область поиска к портальному профилю
- Открыть НБР-аминку
- Перейти в раздел Организация\Профили\Профили иерархии
- Выбрать портальный профиль
- Нажать на кнопку "Редактировать"
- Перейти в раздел "Добавленные области поиска"
- Выбрать область поиска
- Сохранить
