Дерево страниц
Skip to end of metadata
Go to start of metadata

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 7 Следующий »

Статус

В РАБОТЕ

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

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



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

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

Инструмент

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

Реализация

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

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

Легенда: 

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


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

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

Параметр поиска
    <!--Дата-->
	<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>

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

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

Подключение поиска
<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>
Подключение поиска
    <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>
  • Нет меток