Палитра XML
tipРеализация
Доработать конфигурацию настройки поиска
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- {Модуль} -->
<bean id="newModuleSearcher" 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}"/>
<constructor-arg name="targetCollectionName" value="(search)"/>
<constructor-arg>
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.search.InternalDocsSearchFilterCreator"/>
</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>
<!-- Модуль end-->
<!-- {Модуль} -->
<!-- Иерархия билдеров областей поиска -->
<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="rkkInternalBundle"/>
<ref bean="resolutionBundle"/>
<ref bean="reportBundle"/>
<ref bean="mainDocBundleForCustom"/>
</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>
<!-- {Модуль} end-->
</list>
</property>
</bean>
<!-- Иерархия билдеров простого поиска -->
<bean id="rootScopeBuilderSimple" 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="mainDocBundleSimple"/>
</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>
<!-- {Модуль} end-->
</list>
</property>
</bean>
<!-- Иерархия билдеров однострочного поиска. Однострочный поиск повторяет структуру расширенного поиска, но урезан по бандлам -->
<bean id="oneLineRootScopeBuilder" 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="mainDocBundleOneLine"/>
</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>
<!-- {Модуль} end-->
</list>
</property>
</bean>
<!-- Конфигурация параметров запроса ({Модуль}) -->
<bean id="dominoRequestConfig{Module}" parent="dominoRequestConfigSuper">
<!-- Отображение ID параметров запроса на поля notes документа -->
<property name="nsFieldsByParamByBundleID">
<map merge="true">
<entry key="rkk#regDate" value="outdate"/>
<entry key="rkk#addressees" value="To"/>
<entry key="rkk#signer" value="UserFrom"/>
<entry key="rkk#executor" value="Mast"/>
<entry key="resolution#regDate" value="outdate"/>
<entry key="mainDoc#regDate" value="outdate"/>
<entry key="mainDoc#signer" value="UserFrom"/>
<entry key="mainDoc#docDate" value="outdate"/>
<entry key="mainDoc#docDateSimple" value="outdate"/>
<entry key="report#regDate" value="outdate"/>
</map>
</property>
<!-- Отображение ID бандла на имя формы notes документа -->
<property name="formsByBundleID">
<map merge="true">
<entry key="rkk" value="Input"/>
<entry key="mainDoc" value="Input"/>
</map>
</property>
</bean>
<!--Параметры сортировки результатов поиска ({Модуль}) -->
<bean id="sortingParams{Module}Date" class="ru.intertrust.cmj.af.search.dp.docinfo.SortingParams">
<property name="columnName" value="regDate"/>
<property name="sortingFieldType" value="String"/>
<property name="default" value="true"/>
<property name="defaultSortingDirection" value="descendant"/>
<property name="sortingDirections">
<set>
<value>descendant</value>
<value>ascendant</value>
</set>
</property>
</bean>
<!-- Конфигурация отображения результатов поиска ({Модуль}) -->
<bean id="moduleExtractorConfig{Module}" parent="moduleExtractorConfigSuper">
<!-- Отображение формы документа на имя корневого типа -->
<property name="rootTypesByBundleID">
<map merge="true">
<entry key="rkk" value="rkk-search-result"/>
</map>
</property>
<!-- Отображение имя формы notes документа на ID бандла -->
<property name="bundleIDsByForm">
<map merge="true">
<entry key="Input" value="rkk"/>
</map>
</property>
<property name="nsFieldsByClTypeByBundleID">
<map merge="true">
<entry key="rkk#regDate" value="outdate"/>
<entry key="rkk#to" value="S"/>
<entry key="rkk#from" value="S2"/>
<entry key="mainDoc#regDate" value="outdate"/>
<entry key="mainDoc#signer" value="S2"/>
</map>
</property>
<property name="formulasByClTypeByBundleID">
<map merge="true">
<entry key="rkk#hasAttachments" value="doc.getItemValueString('IsHasContent').trim() == '1'"/>
<entry key="rkk#id" value="ctx.getString('Links_DocReplID').trim() == '' ? '' : (ctx.getString('Links_DocReplID').trim() + ':' + ctx.getString('Links_DocUNID').trim())"/>
</map>
</property>
</bean>
</beans>
|
Доработать область поиска
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
<search-area name="{Module}">
<target-domain-object type="F_DP_OutputRkk">
<indexed-field name="Module">
<doel>Module</doel>
</indexed-field>
<linked-domain-object type="Tn_Field_String" nested="true">
<indexed-field name="ReasonDeliv" language="" search-by="substring">
<script>if (ctx.get('cmjfield').equals('ReasonDeliv')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="ReasonCanc" language="" search-by="substring">
<script>if (ctx.get('cmjfield').equals('ReasonCanc')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="ReestrNum" language="" search-by="substring">
<script>if (ctx.get('cmjfield').equals('ReestrNum')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="Srok" language="" search-by="substring">
<script>if (ctx.get('cmjfield').equals('Srok')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="confidant" language="" search-by="substring">
<script>if (ctx.get('cmjfield').equals('confidant')){ ctx.get('value').split('%')[0]; }</script>
</indexed-field>
<parent-link>
<doel>Owner</doel>
</parent-link>
</linked-domain-object>
<linked-domain-object type="Tn_Field_Datetime" nested="true">
<indexed-field name="DateControl" solr-prefix="cm_dt">
<script>if (ctx.get('cmjfield').equals('DateControl')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="DateControlEnd" solr-prefix="cm_dt">
<script>if (ctx.get('cmjfield').equals('DateControlEnd')){ ctx.get('value'); }</script>
</indexed-field>
<indexed-field name="dateAttorney" solr-prefix="cm_dt">
<script>if (ctx.get('cmjfield').equals('dateAttorney')){ ctx.get('value'); }</script>
</indexed-field>
<parent-link>
<doel>Owner</doel>
</parent-link>
</linked-domain-object>
<!-- Заголовок -->
<indexed-field name="Subject" search-by="substring"/>
<!--Подпись -->
<linked-domain-object type="F_DP_Rkk_SigningInfo">
<indexed-field name="Superior" search-by="substring" language="">
<doel>signer.orig_shortname</doel>
</indexed-field>
<parent-link>
<doel>Owner</doel>
</parent-link>
</linked-domain-object>
<!-- Вид документа -->
<indexed-field name="reqType" search-by="substring" language="">
<doel>Type</doel>
</indexed-field>
<!-- Регистрационный номер -->
<indexed-field name="regFullNumber" search-by="substring" language="">
<script>var rn = ctx.get('regnumcnt'); if (rn == null) rn; else {
var prist = ctx.get('regnumprist'); if (prist == null) prist = '';
var fin = ctx.get('regnumfin'); if (fin == null) fin = '';
prist + rn + fin + ' ' + rn }
</script>
</indexed-field>
<!-- Регистрационный номер, по точному совпадению -->
<indexed-field name="regNumberExact" search-by="exactmatch">
<script>var rn = ctx.get('regnumcnt'); if (rn == null) rn; else {
var prist = ctx.get('regnumprist'); if (prist == null) prist = '';
var fin = ctx.get('regnumfin'); if (fin == null) fin = '';
prist + rn + fin }
</script>
</indexed-field>
<target-collection name="(search)"/>
<filter>
<conditions-script>ctx.get('Module.Type.Alias') == 'Attorney'</conditions-script>
</filter>
</target-domain-object>
</search-area> |
Результаты поиска
Результаты поиска выводятся в представление ВнД InternalDocs_(search)
Индексация таблиц
Запустить ru.intertrust.cm_sochi.plugins.SolrReindexingPlugin по таблицам: F_DP_Report, F_DP_Resolution,F_DP_IntRkk