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="<Module>_(<Collection>)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.

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


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