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

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

Ключ

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

Статус
titleЧЕРНОВИК

АвторКомментарий
панель

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

Оглавление

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

Инструмент

Блок кода
languagexml
titleПараметр поиска
<bean id="attorneyConfidant" class="ru.intertrust.cmj.af.search.dp.CmParameter" c:id="confidant" c:name="Доверенное лицо:" c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tvcard"> <constructor-arg name="classifier"> <list value-type

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

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

Подсказка
iconfalse

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

Свойства страницы
Статус

Статус
colourBlue
titleДОРАБОТКА

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





Реализация

Информация
iconfalse

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

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


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

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

Блок кода
languagexml
titleПараметр поиска
linenumberstrue
collapsetrue
    <!--Дата-->
	<bean id="exampleDate" class="ru.intertrust.cmj.af.search.
Classifier
dp.CmParameter"
>

          
<ref bean="fvCurrHumanHH"/>
c:id="testDate" c:name="Дата:"
          
<ref bean="clCurSysEmps"/> <ref bean="clNosys"/> </list> </constructor-arg> </bean> Блок кода
languagexml
titleКонфигурация поиска
c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tdateinterval"/>
 	<!--Сотрудник-->
	<bean id="
dominoRequestConfigAttorney
exampleVCard" class="ru.intertrust.cmj.af.search.dp.
request.DominoRequestConfig
CmParameter"
>

        
<!-- Отображение ID параметров запроса на поля notes документа --
  c:id="testVCard" c:name="Сотрудник:"
          c:messageSource-ref="cmj_af_search_messageSource" c:type-ref="tvcard">
        
<property
<constructor-arg name="
nsFieldsByParamByBundleID
classifier">
            
<map
<list 
merge
value-type="
true
ru.intertrust.cmj.af.search.Classifier">
                
<entry
<ref 
key
bean="
rkk#reqType" value="ReqType"
fvCurrHumanHH"/>
                
<entry
<ref 
key
bean="
rkk#subject" value="Subject
clCurSysEmps"/>
                
<entry
<ref 
key
bean="
rkk#regFullNumber" value="RNumber_Full"
clNosys"/>
            
<entry key="rkk#dateAttorney" value="dateAttorney"/>
</list>
        
<entry key="rkk#Srok" value="Srok"/>
</constructor-arg>
    
<entry key="rkk#confidant" value="confidant"/>
</bean>

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

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

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

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

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

Блок кода
languagexml
titleПодключение
поиска <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="attorney"/>
объекта
linenumberstrue
collapsetrue
<!-- Формирует список областей поиска путём вызова дочерних билдеров.  Если дочерний билдер является тоже ScopeTreeBuilder, 
то созданный им список областей делается дочерним к последней созданной области. Если список сделать дочерним невозможно, 
то список просто добавляется к общему списку областей первого уровня. -->    
	<bean id="rootScopeBuilder" class="ru.intertrust.cmj.af.search.ScopeTreeBuilder">
        <property name="childs">
            
<constructor-arg index="1" value="Attorney"/
<list>
		  		<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"/> <ref bean="mainDocBundleForCustom
rkkSuperBundle{Module}"/>
                        </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"/>
Индексация полей объекта
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="
isNamed
tDate" 
value
solr-prefix="
true
cm_dt"
/
>
            
<constructor-arg
 
name="searchArea"
 
value="Attorney"/>
  <script>if (ctx.get('cmjfield').equals('DateControl')){ ctx.get('value'); }</script>
   
<constructor-arg
 
name="targetCollectionName"
 
value="(search)"/>
       
<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" search-by="substring" language="">
        
<constructor-arg>
        <doel>signer.orig_shortname</doel>
            </indexed-field>
   
<bean class="ru.intertrust.cmj.af.search.dp.docinfo.CustomModuleInfoExtractor" c:messageSource-ref="cmj_af_search_messageSource" c:ident="Attorney"/>
         <parent-link>
          
</constructor-arg>
    
</bean> Блок кода
languagexml
titleПример. Область поиска
<search-area name="Attorney">
  <doel>Owner</doel>
     
<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="">
</linked-domain-object>
	</target-domain-object>
</search-area>

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

Блок кода
languagexml
titleКонфигурация поиска
linenumberstrue
collapsetrue
<bean id="dominoRequestConfig{Module}" class="ru.intertrust.cmj.af.search.dp.request.DominoRequestConfig">
      
<doel>signer.orig_shortname</doel>
  <!-- Отображение ID параметров запроса на поля notes документа 
</indexed-field>
-->
        
<parent-link>
<property name="nsFieldsByParamByBundleID">
            
<doel>Owner</doel>
<map merge="true">
                
</parent-link>
<entry key="rkk#testDate" value="tDate"/>
                
</linked-domain-object> </target-domain-object> </search-area>

Реализация

ПримечаниеЕсли есть какие-то нюансы по реализации, указать. Если нет, то удалить данный пункт
<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>

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

Блок кода
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="{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>

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

  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} - базовый объект