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

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

Ключ

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

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

Оглавление

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

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

Подсказка
iconfalse

Инструмент

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

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

Статус

note

colour

icon

Blue

falseРедактирование/Создание конфигурации

title

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

ДОРАБОТКА

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





Реализация

Информация
iconfalse

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

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

    Легенда: 


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

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

    Блок кода
    languagexml
    titleПараметр поиска
    linenumberstrue
    collapsetrue
        
    <!--Дата-->
    	<bean id="
    attorneyConfidant
    exampleDate" class="ru.intertrust.cmj.af.search.dp.CmParameter"
              c:id="
    confidant
    testDate" c:name="
    Доверенное лицо
    Дата:"
              c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="
    tvcard
    tdateinterval"/>
     
    <constructor-arg name="classifier"> <list value-type
    	<!--Сотрудник-->
    	<bean id="exampleVCard" class="ru.intertrust.cmj.af.search.dp.
    Classifier
    CmParameter"
    >
    
              
    <ref bean="fvCurrHumanHH"/>
    c:id="testVCard" c:name="Сотрудник:"
              
    <ref bean="clCurSysEmps"/
    c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tvcard">
            
    <ref bean="clNosys"/
    <constructor-arg name="classifier">
                
    </list> </constructor-arg> </bean> Блок кода
    languagexml
    titleКонфигурация поиска
    <bean id="dominoRequestConfigAttorney" class
    <list value-type="ru.intertrust.cmj.af.search.
    dp.request.DominoRequestConfig
    Classifier">
            
    <!--
     
    Отображение
     
    ID
     
    параметров
     
    запроса
     
    на
     
    поля
     
    notes
     
    документа --
    <ref bean="fvCurrHumanHH"/>
            
    <property
     
    name="nsFieldsByParamByBundleID">
           
    <map merge
    <ref bean="
    true
    clCurSysEmps"/>
                    
    <entry
    <ref 
    key
    bean="
    rkk#reqType" value="ReqType
    clNosys"/>
                </list>
        
    <entry
     
    key="rkk#subject"
     
    value="Subject"/>
      </constructor-arg>
        </bean>

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

    Блок кода
    languagexml
    titleОтображение на поисковой форме
    linenumberstrue
    collapsetrue
    <bean 
    <entry key="rkk#regFullNumber" value="RNumber_Full"/
    id="rkkSuperBundle{Module}" abstract="true" class="ru.intertrust.cmj.af.search.dp.CmBundle">
            
    <entry key="rkk#dateAttorney
    <constructor-arg index="0" value="
    dateAttorney
    rkk"/>
            <constructor-arg index="1"
           
    <entry
     
    key="rkk#Srok"
     
    value="Srok"/>
                    
    <entry key
    value="
    rkk#confidant" value="confidant
    {Object}"/>
            <constructor-arg index="2">
              
    <entry
     
    key="rkk#authorizedPerson" value="Superior"/>
     <list>
                    
    <entry
    <ref 
    key
    bean="
    rkk#executor" value="From"
    exampleDate"/>
                    
    <entry
    <ref 
    key
    bean="
    rkk#ReasonDeliv" value="ReasonDeliv"
    exampleVCard"/>
                
    <entry key="rkk#ReasonCanc" value="ReasonCanc"/>
    </list>
            </constructor-arg>
            
    <entry
    <constructor-arg 
    key
    index="
    rkk#ReestrNum
    3" 
    value
    ref="
    ReestrNum
    cmj_af_search_messageSource"/>
    
        
    </map> </property>
    </bean>

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

    Блок кода
    languagexml
    titleПодключение модуля
    linenumberstrue
    collapsetrue
    <bean id="{module}Searcher" class="ru.intertrust.cm_sochi.srv.connector.sochi.search.SochiSolrSearcher">
            
    <property
    <constructor-arg name="
    formulasByParamByBundleID
    cmAppSystemId"
    >
     value="{Module}"/>
            <constructor-arg 
    <map>
    name="isNamed" value="true"/>
            <constructor-arg 
    <entry key="rkk#searchInContent"
    name="searchArea" value="{Module}_area"/>
            <constructor-arg 
    value="[Body]="%par%" OR [Appendix]="%par%" OR [$File]="%par%"
    name="targetCollectionName" value="(search)"/>
            
    </map>
    <constructor-arg>
            
    </property>
        
    <!-- Отображение ID бандла на имя формы notes документа -->
    <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.search.{Basic Module}SearchFilterCreator"/>
            </constructor-arg>
            
    <property name="formsByBundleID">
    <constructor-arg>
                
    <map
    <bean 
    merge
    class="
    true"> <entry key="rkk" value="Output
    ru.intertrust.cmj.af.search.dp.docinfo.CustomModuleInfoExtractor" c:messageSource-ref="cmj_af_search_messageSource" c:ident="{Module}"/>
            </constructor-arg>
        </
    map> </property> </
    bean>

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

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

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

    Блок кода
    languagexml
    title
    Подключение поиска<bean id="attorneySearcher" class="ru.intertrust.cm_sochi.srv.connector.sochi.search.SochiSolrSearcher"> <constructor-arg name="cmAppSystemId" value="Attorney"/> <constructor-arg name="isNamed" value="true"/>
    Индексация полей объекта
    linenumberstrue
    collapsetrue
    <search-area name="{Module}_area">
    	<target-domain-object type="F_DP_OutputRkk"> 
    
     		<linked-domain-object type="Tn_Field_Datetime" nested="true">
                
    <constructor
    <indexed-
    arg
    field name="
    searchArea
    tDate" 
    value
    solr-prefix="
    Attorney
    cm_dt"
    /
    >
            
    <constructor-arg name="targetCollectionName" value="(search)"/>
            <script>if (ctx.get('cmjfield').equals('DateControl')){ ctx.get('value'); }</script>
            
    <constructor-arg>
        </indexed-field>
    		</linked-domain-object>
        
          
    <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.search.OutputDocsSearchFilterCreator"/
      <linked-domain-object type="F_DP_Rkk_SigningInfo">
            
    </constructor-arg>
        <indexed-field name="tVCard" 
    <constructor-arg>
    search-by="substring" language="">
                
    <bean class="ru.intertrust.cmj.af.search.dp.docinfo.CustomModuleInfoExtractor" c:messageSource-ref="cmj_af_search_messageSource" c:ident="Attorney"/>
        <doel>signer.orig_shortname</doel>
                </
    constructor
    indexed-
    arg>
    field>
        
    </bean> Блок кода
    languagexml
    titleПример. Область поиска
    <search-area name="Attorney">
            
    <target-domain-object type="F_DP_OutputRkk">
    <parent-link>
            
    <linked-domain-object
     
    type="F_DP_Rkk_SigningInfo">
           
    <indexed-field name="Superior" search-by="substring" language=""> <doel>signer.orig_shortname<
    <doel>Owner</doel>
                </
    indexed
    parent-
    field>
    link>
            
    <parent-link> <doel>Owner</doel> </parent-link> </linked-
    </linked-domain-object>
    	</target-domain-object>
    </search-area>

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

    Блок кода
    languagexml
    title
    Бин коллекции<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
    Конфигурация поиска
    linenumberstrue
    collapsetrue
    <bean id="dominoRequestConfig{Module}" class="ru.intertrust.cmj.af.search.dp.request.DominoRequestConfig">
           
    xmlns:p="http://www.springframework.org/schema/p"
     <!-- Отображение ID параметров запроса на поля notes документа -->
            <property name="nsFieldsByParamByBundleID">
           
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
         <map merge="true">
                    
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" default-lazy-init="true"> <bean id="Attorney_(projects_by_registration_place)Metadata"
    <entry key="rkk#testDate" value="tDate"/>
                    <entry key="rkk#testVCard" value="tVCard"/>
              
    class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.CollectionMetadataNew"
     
    p:caseSensitiveFieldNames="true" p:searchArea="Attorney_uicoll">
     </map>
            
    <constructor-arg>
    </property>
            <!-- Отображение ID бандла 
    <list value-type="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field">
    на имя формы notes документа -->
            
    <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:
    <property name="
    self
    formsByBundleID">
                
    <property name
    <map merge="
    virtualField
    true">
                    <entry 
    <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField"
    key="rkk" value="{Basic Object}"/>
                </map>
            
    <property name="realFields">
    </property>
    </bean>

    Подключение поиска к кастомной коллекции

    Блок кода
    languagexml
    titleБин коллекции
    linenumberstrue
    collapsetrue
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           
    <list>
    xmlns:p="http://www.springframework.org/schema/p"
           
    <value>self_1</value>
    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"
              
    <value>Module</value>
    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">
            
    <value>self_2</value>
            <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="self">
                        <property name="virtualField">
         
    <value>ID</value>
                       <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField">
                    
    <value>created_date</value>
                <property name="realFields">
                            
    <value>self_3</value>
            <list>
                            
    </list>
                <value>self_1</value>
                    
    </property>
                        <value>Module</value>
              
    <property
     
    name="pattern"
     
    value="<id>([0-9]{16}):([0-9A-F]{32})</>"
     
    />
                           <value>self_2</value>
         
    <property
     
    name="separator"
     
    value=""/>
                                
    <property name="emptySeparator" value="true"/>
     <value>ID</value>
                                        
    <
    <value>created_date</
    bean>
    value>
                        
    </property>
                    
    <
    <value>self_3</
    bean>
    value>
                         
    <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="regPlace" p:sortOrder="ASCENDING" p:categorized="true" p:sortPriority="0" />
               </list>
                 
    </list>
            
    </constructor-arg>
        
    </bean> </beans>
       </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} - базовый объект