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

Добавить вывод результатов поиска для нового модуля

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

Статус

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

Реализация

Последовательность действий по отображению поиска:

  1. Редактирование конфигурации поиска applicationContext-config-search<Project>.xml
  2. Создание представления типа объекта
  3. Загрузить конфигурацию поиска и перезагрузить сервер
  4. Загрузить Палитру XML

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

<!-- Конфигурация отображения результатов поиска ({Module}) -->
    <bean id="moduleExtractorConfig{Module}" parent="moduleExtractorConfigSuper">
        <!-- Настройка соответствий «id бандла – представление типа объекта» -->
        <property name="rootTypesByBundleID">
            <map merge="true">
                <entry key="rkk" value="{Cell-View}" />
                <entry key="mainDoc" value="{Cell-View}" />
            </map>
        </property>
        <!-- Настройка соответствий «Форма – id бандла» -->
        <property name="bundleIDsByForm">
            <map merge="true">
                <entry key="{Module}" value="rkk" />
            </map>
        </property>
		<!--Настройка соответствий «колонки- системного поля»-->
        <property name="nsFieldsByClTypeByBundleID">
            <map merge="true">
                <entry key="rkk#{Column}" value="{Field}" />
                <entry key="mainDoc#{Column}" value="{Field}" />
            </map>
        </property>
		<!--Настройка соответствий «колонки - кастомного поля»-->
        <property name="formulasByClTypeByBundleID">
            <map merge="true">
                <entry key="rkk#{Column}" value="doc.getItemValueString('{Field}')" />
                <entry key="mainDoc#{Column}" value="doc.getItemValueInteger('{Field}') == 0 ? doc.getItemValueString('<Field 1>'):doc.getItemValueString('<Field 2>')"/>
            </map>
        </property>
		<!--Сортировка-->
	   	<property name="sortingsByFields">
            <set>
                <ref bean="sortingParams{Field}"/>
            </set>
        </property>
    </bean>
    <!--Список параметров, которые используются при создании бинов SortingParams:
    -columnName - имя колонки, при клике на которую будет происходить сортировка
    -sortingFieldName - имя поля в Notes, по значению которого будет идти сортировка nodes из ресурса.
                       Если sortingFieldName = null, то сортировка  будет идти по значению поля columnName в ресурсе.
    -sortingFieldType - тип значения в сравниваемом поле
                       Если sortingFieldType = Integer, то при сортировке значения сравниваются как числа, иначе - как строки.
                       Предполагается, что тип DateTime не нужен, т.к. маловероятно, что при клике на колонку, в которой отображается
                       дата/время, будет идти сортировка по какому-то значению, отличному непосредственно от дата/время, а в JSON дата/время
                       всегда будут в формате yyyy-mm-ddThh:mm:ssZ (такие значения можно сортировать, сравнивая как строки).
    -default - указывает будет ли совершена эта сортировка по умолчанию
               (может быть только одна сортировка по умолчанию для бандла, для добавления другой необходимо разнести по бандлам сортировки)
    -defaultSortingDirection - Указывает направление сортировки по умолчанию (descendant/ascendant)
    -bundleId - указывает id бандла для которого применяется сортировка, для каждого бандла надо делать свою, так как поля у объектов и имена колонок могут отличаться
                id бандлов: rkk-search-result, mainDoc-search-result и др. По умолчанию rkk-search-result
    -sortingDirections - выбранное направление сортировки (по убыванию/по возрастанию) - принимает <set>  -->
     <bean id="sortingParams{Field}"
          class="ru.intertrust.cmj.af.search.dp.docinfo.SortingParams">
        <property name="columnName" value="{Column}" />
        <property name="sortingFieldName" value="{Field}" />
        <property name="sortingFieldType" value="String" />
        <property name="default" value="true" />
        <property name="defaultSortingDirection" value="descendant" />
        <property name="bundleId" value="{Cell-View}" />
        <property name="sortingDirections">
            <set>
                <value>descendant</value>
                <value>ascendant</value>
            </set>
        </property>
    </bean>


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

<!-- Колонка -->
<column name="{Column}" subject="${column.Name:Название колонки}" extends="string"/>

<!--Представление типа объекта -->
<cell-view name="{Cell-View}">
   <column-ref ref="{Column}"/>
</cell-view>




  • {Project} - название проекта
  • {Module} - название модуля
  • {Cell-View} - название представление типа объекта
  • {Column} - название колонки
  • {Field}- название поля