Информация |
---|
icon | false |
---|
title | Краткое описание |
---|
|
В настройках поиска указывается конфигурация, в которой задаются атрибуты поиска, алгоритм обработки результатов их вывод |
Блок кода |
---|
language | xml |
---|
title | Структура XML |
---|
collapse | true |
---|
|
<?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> |
beans nameclassПараметр поиска | ru.intertrust.cmj.af.search.dp.CmParameter Блок кода |
---|
| <bean id="subject" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="subject" c:name="%{cmj-AF.search.param.name.subject}"
c:type-ref="tstring" c:messageSource-ref="cmj_af_search_messageSource"
c:classifier-ref="clSubject" c:dependency-ref="vdependency"/> |
|
Классификатор по ключу | ru.intertrust.cmj.af.search.dp.CmClassifierByKey Блок кода |
---|
|
<bean id="clReqType" parent="clByKey_class">
<property name="keys">
<list>
<value>CmClassifierByKey#Вид документа</value>
</list>
</property>
</bean>
<bean id="clByKey_class" class="ru.intertrust.cmj.af.search.dp.CmClassifierByKey" c:notesView="(class)" /> |
Классификатор по представлению | ru.intertrust.cmj.af.search.dp.CmClassifierByView Блок кода |
---|
| <bean id="clMeetingType" class="ru.intertrust.cmj.af.search.dp.CmClassifierByView" c:notesView="(MeetingTypeSettings)">
<property name="keys">
<list>
<value>CmClassifierByView</value>
</list>
</property>
</bean> |
Блок кода |
---|
| <bean id="clMettingSettings" class="ru.intertrust.cmj.af.search.dp.CmClassifierByView"c:notesView="Meetings_(vw_cmj_settings_search)">
<property name="keys">
<list>
<value>CmClassifierByView#Meetings#Meetings_(vw_cmj_settings_search)</value>
</list>
</property>
</bean> |
|
Статический классификатор | ru.intertrust.cmj.af.search.dp.StaticClassifier Блок кода |
---|
|
<bean id="clCorType" class="ru.intertrust.cmj.af.search.dp.StaticClassifier">
<property name="keys">
<list>
<value>StaticClassifier#Тип обращения</value>
</list>
</property>
<property name="values">
<list value-type="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Индивидуальное" />
<property name="id" value="0" />
</bean>
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Коллективное" />
<property name="id" value="1" />
</bean>
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Без ФИО и адреса" />
<property name="id" value="2" />
</bean>
</list>
</property>
<property name="type">
<ref local="tstring" />
</property>
</bean> |
Классификатор по заданной БД и виду | ru.intertrust.cmj.af.search.dp.CmClassifierEDM Блок кода |
---|
|
<bean id="clTheme_EDM" class="ru.intertrust.cmj.af.search.dp.CmClassifierEDM" c:notesView="ReadyTematika">
<property name="keys">
<list>
<value>CmClassifierEDM</value>
</list>
</property>
</bean> |
СО классификатор | ru.intertrust.cmj.af.search.dp.SOClassifier Блок кода |
---|
|
<bean id="clCurSysDeps" class="ru.intertrust.cmj.af.search.dp.SOClassifier">
<constructor-arg>
<set value-type="ru.intertrust.cmj.af.so.SOApplication$BeardsSelection$OrganizationsSet">
<value>SYS_CURRENT</value>
</set>
</constructor-arg>
<constructor-arg>
<set value-type="ru.intertrust.cmj.af.so.SOBeard$Type">
<value>SYS_ORGANIZATION</value>
<value>SYS_DEPARTMENT</value>
<value>SYS_HUMAN_HEAD</value>
</set>
</constructor-arg>
<constructor-arg ref="tvcard" />
</bean> |
Свойства страницы |
---|
Статус | Статус |
---|
colour | Yellow |
---|
title | В РАБОТЕ |
---|
Комментарий | Разбить на подстраницы |
---|
Настройка «Параметр»
Параметры поиска представлены на форме расширенного поиска в разделе параметров.
Настройка параметра выполняется через формирование бина вида:
Блок кода |
---|
|
<bean id="subject" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="subject" c:name="%{cmj-AF.search.param.name.subject}"
c:type-ref="tstring" c:messageSource-ref="cmj_af_search_messageSource"
c:classifier-ref="clSubject" c:dependency-ref="vdependency"/> |
Для параметра в xml-файле задаются следующие атрибуты:
Идентификатор (id)
При формировании пересечения множеств параметров от разных областей поиска параметры объединяются по идентификатору.
Например,
Для области поиска по ВнД есть настройка параметра «Вид документа»:
Блок кода |
---|
|
<bean id="reqType" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="reqType" c:name="%{cmj-AF.search.param.name.reqType}"
c:type-ref="tstring" c:messageSource-ref="cmj_af_search_messageSource"
c:classifier-ref="clReqType" /> |
Для области поиска по Договорам настройка параметра «Вид документа» выглядит иначе из-за использования другого классификатора:
Блок кода |
---|
|
<bean id="reqTypeContractDoc" class="ru.intertrust.cmj.af.search.dp.CmParameter"
c:id="reqType" c:name="%{cmj-AF.search.param.name.reqType}"
c:type-ref="tstring" c:messageSource-ref="cmj_af_search_messageSource"
c:classifier-ref="clReqTypeContractDoc" /> |
Но оба параметра имеют общий id= reqType. Поэтому при выборе обеих областей поиска на форме (Внд, Договоры) параметр с id= reqType попадет в пересечение и будет отображен на форме в секции параметров. При этом значения обоих классификаторов (clReqType, clReqTypeContractDoc) объединятся. Локализованное наименование параметра (name)
Блок кода |
---|
c:name="%{cmj-AF.search.param.name.subject}" |
Ссылка на тип параметра
Блок кода |
---|
|
c:type-ref="tstring" |
Тип параметра задается отдельным бином. На текущий момент имеются следующие типы параметров :
Блок кода |
---|
|
<!-- Типы параметров -->
<bean id="tstring" factory-bean="clTypeFactory" factory-method="getType" c:_0="string" />
<bean id="tboolean" factory-bean="clTypeFactory" factory-method="getType" c:_0="boolean" />
<bean id="tvcard" factory-bean="clTypeFactory" factory-method="getType" c:_0="vcard" />
<bean id="tdateinterval" factory-bean="clTypeFactory" factory-method="getType" c:_0="dateInterval" />
<bean id="tnumber" factory-bean="clTypeFactory" factory-method="getType" c:_0="number" />
<bean id="tfullQuestion" factory-bean="clTypeFactory" factory-method="getType" c:_0="fullQuestion" />
<bean id="treqTypeEDM" factory-bean="clTypeFactory" factory-method="getType" c:_0="reqType" /> |
Ссылка на служебный бин cmj_af_search_messageSourceСсылка на бин классификатора (настройка классификаторов см. ниже)Опция isAllowCustomValue:
true - разрешены ли произвольные значения,
false - только значения, выбранные из классификатораОпция searchWithAsterisk - используется для поиска различных вхождений. По умолчанию опция отключена. Используется только для параметра regFullNumberСсылка на бин зависимости условия отображения от значения других полей (используется когда нужно скрывать/отображать поле не всегда, а при определенном значении какого либо другого поля данной формы).- Бин зависимости выглядит следующим образом: <bean id=" vdShowIfNormativeISS" class="ru.intertrust.cmj.af.search.dp.CmVisibleDependency "
c:field="docCategoryEDMISS" c:value="Нормативные документы" c:visible="true" />
где: - fileld – id параметра, в зависимости от значений которого определяется необходимость отображения текущего параметра.
- Value – значение поля, при котором надо скрывать/отображать поле ткущего параметра.
- Visible – признак определяющий скрываем или отображаем поле текущего параметра, при значении «value» в поле «field».
Настройка «Классификатор параметра»
Настройка «Классификатор параметра» позволяет задать для параметра на форме расширенного поиска возможность выбора значений из справочника. Классификатор определяется в xml-файле поиска. Связь параметра с классификатором задается в в настройке бина параметра.
Модулем «Расширенный поиск» поддерживаются следующие виды классификаторов:
Простой классификатор по виду и ключу
Данный классификатор считывает набор значений по заданным в параметрах настройки виду и ключу. Классификатор реализует класс ru.intertrust.cmj.af.search.dp.CmClassifierByKey.
Пример, классификатор «Вид документа»
Блок кода |
---|
|
<bean id="clReqType" parent="clByKey_class">
<property name="keys">
<list>
<value>CmClassifierByKey#Вид документа</value>
</list>
</property>
</bean>
<bean id="clByKey_class" class="ru.intertrust.cmj.af.search.dp.CmClassifierByKey" c:notesView="(class)" /> |
Бин clReqType наследует с базового бина clByKey_class , который настроен на поиск по виду (class). В бин clReqType передается алиас типа классификатора – CmClassifierByKey и ключ Вид документа, по которому ведется поиск значений по виду (class) в тех БД СМ, которые определены областью поиска. Аналогично можно задать поиск по другому виду.
Статический классификатор
Данный классификатор задает жесткий набор значений. Классификатор реализует класс ru.intertrust.cmj.af.search.dp.StaticClassifier.
Пример,
Блок кода |
---|
|
<bean id="clCorType" class="ru.intertrust.cmj.af.search.dp.StaticClassifier">
<property name="keys">
<list>
<value>StaticClassifier#Тип обращения</value>
</list>
</property>
<property name="values">
<list value-type="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Индивидуальное" />
<property name="id" value="0" />
</bean>
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Коллективное" />
<property name="id" value="1" />
</bean>
<bean class="ru.intertrust.cmj.af.search.dp.CmClassifierValue">
<property name="value" value="Без ФИО и адреса" />
<property name="id" value="2" />
</bean>
</list>
</property>
<property name="type">
<ref local="tstring" />
</property>
</bean> |
Для данного типа классификатора характерно то, что каждый его экземпляр необходимо указать в бине сmClassifierService в списке классификаторов. Бин сmClassifierService находится в этом же xml-файле. Значение для каждого такого классификатора задаются в бине в свойстве values (см. пример выше). Значение (реализация класса CmClassifierValue) состоит из отображаемого названия и идентификатора. Например,
<property name="value" value="Коллективное" /> - отображаемое название
<property name="id" value="1" /> - идентификатор
Отображаемое название используется при выборе на форме, идентификатор - при поиске по БД. Если значения классификатора не имеют идентификатора и в БД хранятся также, как и отображаются, то в идентификатор прописываем то же значение, что и в отображаемое.
Например,
<property name="value" value="Коллективное" /> - отображаемое название
<property name="id" value=" Коллективное " /> - идентификатор
Простой классификатор по виду.
Данный классификатор считывает набор значений из заданного вида в тех БД СМ, которые определены областью поиска. Классификатор реализует класс ru.intertrust.cmj.af.search.dp.CmClassifierByView.
Пример, классификатор видов заседаний
Блок кода |
---|
|
<bean id="clMeetingType" class="ru.intertrust.cmj.af.search.dp.CmClassifierByView" c:notesView="(MeetingTypeSettings)">
<property name="keys">
<list>
<value>CmClassifierByView</value>
</list>
</property>
</bean> |
Классификатор по заданной БД и виду
Система позволяет настроить классификатор, который будет выбирать значений из заданной БД и вида независимо от области поиска. Например, выбор тематики из БД Каталог для БД Документы использует классификатор:
Реализация данного классификатора представлена в классе ru.intertrust.cmj.af.search.dp.CmClassifierEDM. Аналогично можно разработать другие реализации классификатора для поиска по другим БД независимо от выбранных областей поиска.
Блок кода |
---|
|
<bean id="clTheme_EDM" class="ru.intertrust.cmj.af.search.dp.CmClassifierEDM" c:notesView="ReadyTematika">
<property name="keys">
<list>
<value>CmClassifierEDM</value>
</list>
</property>
</bean> |
Классификатор по кастомной коллекции
Данный инструмент позволяет построить свой перечень значений на базе SQL-запроса
Блок кода |
---|
language | xml |
---|
title | Вызов справочника |
---|
|
<bean id="clMettingSettings" class="ru.intertrust.cmj.af.search.dp.CmClassifierByView"c:notesView="Meetings_(vw_cmj_settings_search)">
<property name="keys">
<list>
<value>CmClassifierByView#Meetings#Meetings_(vw_cmj_settings_search)</value>
</list>
</property>
</bean> |
Параметры:
- атрибут c:notesView - название коллекции в которой формируется SQL-запрос
- тег value = <Вызов класса ru.intertrust.cmj.af.search.dp.CmClassifierByView>#<Модуль системы>#<Название кастомной коллекции>
СО классификатор
Данный классификатор позволяет выбрать субъект из справочника Структура организации, Справочник организаций, Справочник персон. Классификатор реализует класс ru.intertrust.cmj.af.search.dp.SOClassifier. В XML-файле настроено несколько видов СО классификаторов. Один из них – выбор подразделений системной организации:
Блок кода |
---|
|
<bean id="clCurSysDeps" class="ru.intertrust.cmj.af.search.dp.SOClassifier">
<constructor-arg>
<set value-type="ru.intertrust.cmj.af.so.SOApplication$BeardsSelection$OrganizationsSet">
<value>SYS_CURRENT</value>
</set>
</constructor-arg>
<constructor-arg>
<set value-type="ru.intertrust.cmj.af.so.SOBeard$Type">
<value>SYS_ORGANIZATION</value>
<value>SYS_DEPARTMENT</value>
<value>SYS_HUMAN_HEAD</value>
</set>
</constructor-arg>
<constructor-arg ref="tvcard" />
</bean> |
Настройка «Бандл»
Для бандла задаются идентификатор, отображаемое имя и параметры. Например, бандл «Дополнительное соглашение» для БД Договоры:
Блок кода |
---|
|
<bean id="addAgrBundle" class="ru.intertrust.cmj.af.search.dp.CmBundle">
<constructor-arg name="id" value="addAgr" /> - идентификатор
<constructor-arg name="name" value="%{cmj-AF.search.bundle.name.addAgr}" /> - отображаемое имя.
<constructor-arg name="params" index="2">
<list> - параметры
<ref local="contractNumber" />
<ref local="contractDate" />
<ref local="reqType" />
<ref local="party1" />
<ref local="party2" />
<ref local="contractStatus" />
…
</list>
</constructor-arg>
<constructor-arg name="messageSource" ref="cmj_af_search_messageSource" />
</bean> colour | Yellow |
---|
title | В РАБОТЕ |
---|
|
| Комментарий | Разбить на подстраницы |
---|
|