Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Свойства страницыСтатус СтатусcolourYellowtitleВ работеАвторКомментарий
панель

На этой странице:

Оглавление

Постановка задачи

Добавить поиск для нового модуля.

Подсказка
iconfalse

Инструмент

Палитра XML, Плагин, Настройка системы

Свойства страницы
Статус
Реализация

Статус

note

colour

icon

Blue

false

title

Дорожная карта:

Редактирование конфигурации поиска applicationContext-config-search<Project>

ДОРАБОТКА

РазделПоиск
КомментарийИнформация по настройкам параметра поиска находится здесь Описание конфигурации поиска





Реализация

Информация
iconfalse

Последовательность действий по реализации поиска:

  1. Редактирование конфигурации поиска applicationContext-config-search{Project}.xml
  2. Создание области поиска
<Module>
  1. {Module}_area.xml
  2. Подключение области поиска к кастомным коллекциям
<Module>
  1. {Module}_(
<Collection>ru.
  1. {Collection})Metadata.xml
Запуск плагина реиндексации
  1. Загрузить конфигурацию поиска и перезагрузить сервер
  2. Загрузить область поиска
  3. Запуск плагина реиндексации ru.intertrust.cm_sochi.plugins.SolrReindexingPlugin
  4. Создание области поиска в системе
  5. Подключение области поиска в портальный профиль

Легенда: 

  • <Project> - название проекта
  • <Module> - название модуля
  • <Collection> - название коллекции
  • <Basic Module> - базовый модуль
  • <Object> - название объекта
  • <Basic Object> - базовый объект


    Редактирование конфигурации поиска

    Определение параметров поиска

    , которые в дальнейшем будут отображены в поисковой форме

    Блок кода
    languagexml
    titleПараметр поиска

     
    linenumberstrue
    collapsetrue
        <!--Дата-->
    	<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>
    tip

    Информация по настройкам параметра поиска находится здесь Описание конфигурации поиска

    Подключение параметров поиска к форме

    Блок кода
    languagexml
    title
    Бандл
    Отображение на поисковой форме
    linenumberstrue
    collapsetrue
    <bean id="
    rkkSuperBundle<Module>
    rkkSuperBundle{Module}" abstract="true" class="ru.intertrust.cmj.af.search.dp.CmBundle">
            <constructor-arg index="0" value="rkk"/>
            <constructor-arg index="1"
                             value="
    <Object>
    {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>
    Предупреждение

    ScopeTreeBuilder - определение

    Настройки поиска

    Определение модуля 

    Блок кода
    languagexml
    titleПодключение
    поиска<bean id="attorneySearcher
    модуля
    linenumberstrue
    collapsetrue
    <bean id="{module}Searcher" class="ru.intertrust.cm_sochi.srv.connector.sochi.search.SochiSolrSearcher">
            <constructor-arg name="cmAppSystemId" value="
    <Module>
    {Module}"/>
            <constructor-arg name="isNamed" value="true"/>
            <constructor-arg name="searchArea" value="
    <Module>
    {Module}_area"/>
            <constructor-arg name="targetCollectionName" value="(search)"/>
            <constructor-arg>
                <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.search.
    <Basic Module>SearchFilterCreator
    {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>
    {Module}"/>
            </constructor-arg>
        </bean>

    Определение объекта

    Блок кода
    languagexml
    titleПодключение
    поиска <bean id="rootScopeBuilder" class="ru.intertrust.cmj.af.search.ScopeTreeBuilder"> <property name="childs"> <list> <bean
    объекта
    linenumberstrue
    collapsetrue
    <!-- Формирует список областей поиска путём вызова дочерних билдеров.  Если дочерний билдер является тоже ScopeTreeBuilder, 
    то созданный им список областей делается дочерним к последней созданной области. Если список сделать дочерним невозможно, 
    то список просто добавляется к общему списку областей первого уровня. -->    
    	<bean id="rootScopeBuilder" class="ru.intertrust.cmj.af.search.
    dp.CmDocTypesScopeBuilder
    ScopeTreeBuilder">
            
    <constructor-arg index="0" value="<module>"/
    <property name="childs">
                <list>
    		  		<bean class="ru.intertrust.cmj.af.search.dp.CmDocTypesScopeBuilder">
                        <constructor-arg index="
    1
    0" value="
    <Module>
    {Module}"/>
                        <constructor-arg index="
    2"
    1" value="{Module}"/>
                        <constructor-arg index="2">
                            <list>
                                <ref bean="subject"/>
                            </list>
                        </constructor-arg>
                        <constructor-arg index="3">
                            <set>
                                <ref bean="
    rkkSuperBundle<Module>
    rkkSuperBundle{Module}"/>
                            </set>
                        </constructor-arg>
                        <constructor-arg index="4">
                            <list>
                                <ref bean="
    <module>Searcher
    {Module}Searcher"/>
                            </list>
                        </constructor-arg>
                        <constructor-arg index="5">
                            <ref bean="cmSearchScopeCompositExBuilder"/>
                        </constructor-arg>
                    </bean>
    			</list>
    		</property>
    	</bean>

    Создание области поиска

    Блок кода
    languagexml
    title
    Пример. Область поиска
    Индексация полей объекта
    linenumberstrue
    collapsetrue
    <search-area name="
    <Module>
    {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>

    Настройка соответствия параметров поиска и области поиска 

    Блок кода
    languagexml
    titleКонфигурация поиска
    <bean id="dominoRequestConfigAttorney
    linenumberstrue
    collapsetrue
    <bean id="dominoRequestConfig{Module}" 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
    {Basic 
    Object>
    Object}"/>
                </map>
            </property>
    </bean>

    Подключение поиска к

    бину

    кастомной коллекции

    Блок кода
    languagexml
    titleБин коллекции
    linenumberstrue
    collapsetrue
    <?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
    {Module}_(
    projects_by_registration_place
    {Collection})Metadata"
              class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.CollectionMetadataNew" p:caseSensitiveFieldNames="true" p:searchArea="
    <Module>
    {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>

    Запуск реиндексации

    1. Открыть НБР-аминку
    2. Перейти в раздел Структура Системы\Инструменты\Плагины
    3. Ввести название плагина ru.intertrust.cm_sochi.plugins.SolrReindexingPlugin
    4. Нажать "Применить"
    5. Выделить найденный плагин
    6. Нажать кнопку Play
    7. Ввести SQL-запрос. SQL-запрос нужно делать по таблицам, которые определены в области поиска тегах target-domain-object и linked-domain-object.

    Image Added

    Создать область поиска

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

    Image AddedImage Added

    Подключить область поиска к портальному профилю

    1. Открыть НБР-аминку
    2. Перейти в раздел  Организация\Профили\Профили иерархии
    3. Выбрать портальный профиль
    4. Нажать на кнопку "Редактировать"
    5. Перейти в раздел "Добавленные области поиска"
    6. Выбрать область поиска
    7. Сохранить

    Image Added

    панель
    title<Название видео>

    Примечание
    iconfalse
    titleЛегенда
    • {Project} - название проекта
    • {Module} - название модуля
    • {Collection} - название коллекции
    • {Basic Module} - базовый модуль
    • {Object} - название объекта
    • {Basic Object} - базовый объект