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

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

Ключ

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

Якорь
config_process_queueconfig_process_queue
Оглавление
indent25px
printablefalse

Очередь процессов - это интерфейс доступа к массиву процессов определённых типов. Очередь определяет вид таблицы, доступные сортировки и фильтры. Очереди отображаются в пользовательском интерфейсе оснасткой Процессы.

...

В конфигурации очереди процессов определяются колонки с выводимыми данными, доступные фильтры и прочие параметры. При выборе родительского типа процесса в разрешённых типах все вновь появившиеся типы процессов-потомки также будут отображены в очереди без необходимости её пересохранения.

Колонки

Одна или несколько записей вида:

Блок кода
languagejavaruby
linenumbersfalse
column.<id>.title=<title>
column.<id>.value=<type>
# необязательные параметры
# запрет переносов в столбце 
column.<id>.nowrap=1
# выравнивание в столбце
column.<id>.align=<align>
# стиль столбца
column.<id>.style=<style>
# форматирование переносов строк в столбце к HTML формату (переносы строк отображаются в таблице)
column.<id>.formatToHtml=1
# обрезание значения столбца с добавлением ссылки на развёртывание полного текста, если длина текста больше <maxSymbols> символов
column.<id>.cutIfMore=<maxSymbols>
# обрезание значение столбца с отображением полного значения по наведению мыши
column.<id>.titleIfMore=<titleIfMore>
# отображать значение как ссылку
column.<id>.showAsLink=<linkTitle>
# значения параметров берутся у процесса, к которому данный привязан (родительский)
#column.<id>.process=linked
# преобразование значения в UNSIGNED - может быть полезным при сортировке
#column.<id>.convert=int
# агрегирующая функция
column.<id>.aggregate=<aggregateFunction>

Где:

  • <id> - уникальный числовой идентификатор колонки;
  • <title> - заголовок;
  • <type> - выводимое значение, см. значения далее;
  • <align> - выравнивание: "left", "center", "right";
  • <style> - CSS стиль столбца;
  • <maxSymbols>, <titleIfMore> - максимальная не обрезаемая длина текста;
  • <linkTitle> - текст со ссылкой, linkUrl - разместить в качестве текста саму ссылку (значение колонки);
  • <aggregateFunction> - агрегирующая функция для столбца, допустимые значения: SUM, AVG, COUNT.

При указании для столбца агрегирующей функции - в заголовке столбца помимо его названия будет выводится значение функции для всех отфильтрованных процессов в квадратных скобках. Для каждого столбца допустима только одна функция.

Предупреждение

Использование агрегирующих функций предполагает дополнительный запрос для каждого вывода таблицы очереди процессов, что может замедлить отображение.

Выводимое значение <type> может быть следующим:

...

Значение <type>Что выводитсяtitleIfMore, cutIfMoreСортировкаВывод на печать
idКод процесса со ссылкой на открытие процесса на нём.

Да

Да

Да

type_titleНаименование типа процесса

Да

Да

Да

status_titleТекущий статус процесса.

Да

Да

Да

status_dtДата и время установки текущего статуса.

Да

Да

Да

status_user

Пользователь, установивший текущий статус.

Да

Да

Да

status_commentКомментарий текущего статуса.

Да

Да

Да

status:<statusIds>:dtДата и время последней установки статуса с кодом из перечисленных в <statusIds> через запятую.

Да

Да

Да

status:<statusIds>:userПользователь, последним установивший статус из перечисленных в <statusIds> через запятую.

Да

Да

Да

status:<statusIds>:commentКомментарий последнего статуса с кодом из перечисленных через запятую в <statusIds>.

Да

Да

Да

priorityПриоритет процесса. Строка в таблице очереди процесса окрашивается в цвет приоритета.

Нет

Да

Выводится число

create_dtДата и время создания процесса.

Да

Да

Да

create_userПользователь, создавший процесс.

Да

Да

Да

close_dtДата и время закрытия процесса.

Да

Да

Да

close_userПользователь, закрывший процесс.

Да

Да

Да

executors:<groupIds>:<roleIds>Исполнители процесса через запятую. Необязательные дополнения :<groupIds> и :<roleIds> позволяют ограничить исполнителей по группам и ролям, указывая их через запятую. Если необходимо ограничение только по ролям, использовать executors:*:<roleIds>.

Да

Нет

Да

groups:<roleIds>Группы решения процесса через запятую. Необязательное дополнение :<roleIds> позволит ограничить группы по ролям, указывая их через запятую.

Да

Нет

Да

descriptionОписание процесса.

Да

Да

Да

descriptionLinkОписание процесса со ссылкой на открытие карточки процесса.

Да

Да

Да

param:<param_id>

Значение параметра процесса с кодом <param_id>.

Для параметров с типами date и datetime возможно указание формата и необходимости вывода непосредственного значения.

Для параметров адресного типа возможно указание param:<param_id>:quarter и param:<param_id>:street - вывод наименования квартала и улицы.

Да

Да

Да

ifListParam:<paramId>:<value>:<existFag>:<notExistFlag>Вывод <existFlat> если списковый параметр процесса с кодом <paramid> установлен в значение <value> либо <notExistFlag> в противоположном случае, :<existFag>:<notExistFlag> - необязательные параметры, по умолчанию это символы "✓" и "✗

Нет

Нет

Нет, числовое значение спискового параметра

messageInCountКоличество входящих сообщений в процессе.

Да

Да

Да

messageInLastDtДата и время отправки последнего входящего сообщения.

Да

Да

Да

messageInUnreadCountКоличество входящих непрочитанных сообщений в процессе.

Да

Да

Да

messageInLastTextТекст последнего входящего сообщения.ДаДаДа
messageInLastUserПользователь, принявший последнее входящее сообщение.ДаДаДа
messageInLastSubjectТема последнего входящего сообщения в процессе.ДаДаДа
messageOutCountКоличество исходящих сообщений в процессе (обратите внимание, что все сообщение типа "Заметка" считаются исходящими).ДаДаДа
messageOutLastTextТекст последнего исходящего сообщения.ДаДаДа
messageOutLastUserПользователь, создавший последнее исходящее сообщение.ДаДаДа
messageOutLastSubjectТема последнего исходящего сообщения в процессе.ДаДаДа
linkCustomer:param:<param_id>Параметр привязанного к процессу контрагента, где <param_id> - код параметра. Возможны все те же опции, что и для столбца param.

Да

Да

Да

linkCustomer:<column>Значения столбца <column> из таблицы customer для привязанных контрагентов; id - код, title - наименование.

Да

Да

Да

linkObject:<object_type_prefix>Названия привязанных к процессу сущностей в таблице process_link с префиксом типа <object_type_prefix>.

Да

Да

Да

linkObject:<object_type_prefix>:idАналогично предыдущему, но выводится идентификатор привязанного объекта. Например: linkObject:bgbilling-helpdesk:id - код привязанного топика HelpDesk.

Да

Да

Да

linkCustomerLinkПеречень контрагентов, привязанных к процессу со ссылками на открытие их карточек.

Нет

Нет

Нет

linkObject:processПеречень кодов привязанных к процессу процессов со ссылками на открытие карточки через запятую.

Нет

Нет

Нет

linkObject:contract:<billingIds>Перечень привяазанных к процессу договоров BGBilling, необязательный суффикс :<billingIds> позволяет уточнить идентификаторы биллингов через запятую.

Нет

Нет

Нет

linkProcessList:<linkType>:<open>Отображение привязанных процессов к данному процессу. Отображаются дата создания, статус и тип. Необязательный параметр <linkType> - тип связи, * - любой тип; <open> - если указать open, то выводятся только открытые процессы.

Да

Нет

Да

linkedProcessList:<linkType>:<open>Аналогично предыдущему, но выводятся процессы, к которым привязан данный.

Да

Нет

Да

actionsСсылки с операциями над процессом.

Нет

Нет

Нет

Якорь
dt_desc
dt_desc

...

Где <configHead> и <configRow> - JEXL выражения, генерирующие HTML для вывода заголовочного столбца таблицы и строк данных соответственно.

...

  • checkAllLink - строка, содержащая ссылку для выделения всех строк в случае использования обработчиков в очереди.

При генерации строки:

...

Пример настройки отображения заголовка таблицы и строк с помощью JEXL (выражения можно более коротко оформить с помощью многострочных значений переменных конфигураций с JEXL выражениями):

Блок кода
languagejavaruby
titleКод
linenumbersfalse
collapsetrue
column.1.title=ID
column.1.value=id
column.2.title=Причины
column.2.value=param:500
column.3.title=Работы
column.3.value=param:466
column.4.title=Создан
column.4.value=create_dt
column.5.title=Приор.
column.5.value=priority
column.6.title=Статус
column.6.value=status_title
column.7.title=Группа
column.7.value=groups
column.8.title=Адрес
column.8.value=param:345
column.30.title=Описание
column.30.value=description
column.31.title=Исполнители
column.31.value=executors
column.32.title=Время
column.32.value=param:610
column.33.title=Время (значение)
column.33.value=param:610:value
column.34.title=Действия
column.34.value=actions
column.34.align=center

configHead="<tr><td width='20' class='printHide'>".concat( checkAllLink ).concat("</td>")
configHead+=.concat( "<td>ID</td>" )
configHead+=.concat( "<td>Статус [создан]</td>" )
configHead+=.concat( "<td>Адрес</td>" )
configHead+=.concat( "<td>Описание</td>" )
configHead+=.concat( "<td>Группа [исполнители]</td>" )
configHead+=.concat( "<td>Время</td>" )
configHead+=.concat( "<td class='printHide'>Действия</td></tr>" )

configRow="<tr bgcolor='".concat( urgColor ).concat( "' processId='" ).concat( process.getId().toString() ).concat( "'>" )
configRow+=.concat( "<td class='printHide'><input type='checkbox' name='processId' value='" ).concat( process.getId().toString() ).concat( "'/></td>" )
configRow+=.concat( "<td>" ).concat( col1 ).concat( "</td>" )
configRow+=.concat( "<td><b>" ).concat( col6 ).concat( "</b> [" ).concat( col4 ).concat( "]" ).concat( "</td>" )
configRow+=.concat( "<td>" ).concat( col8 ).concat( col36 ).concat( "</td>" )
configRow+=.concat( "<td><b>" ).concat( process.getTypeTitle() ).concat( "</b><br/>" )
configRow+=.concat( process.getTypeId() != 9432 ? "Причины: ".concat( col2 ).concat( "Работы: ").concat( col3).concat( "<br/>" ) : "" )
configRow+=.concat( process.getTypeId() == 9432 ? "И: ".concat( col40 ).concat( "; КТВ: ").concat( col45 ).concat( "; ТЛФ: ").concat( col50 ).concat( "; VOIP: ").concat( col55 ).concat( "<br/>" ) : "" )
configRow+=.concat( col30 ).concat( "</td>" )
configRow+=.concat( "<td>" ).concat( col7 ).concat( " [" ).concat( col31 ).concat( "]</td>" )
configRow+=.concat( "<td>" ).concat( col32 ).concat( "</td>" )
configRow+=.concat( "<td class='printHide'>" ).concat( col34 ).concat( "</td>" )
configRow+=.concat( "</tr>" )

rowConfig.1.media=html
rowConfig.1.stringExpressionHead={@configHead}
rowConfig.1.stringExpressionRow={@configRow}

...

Обратите внимание на группировку различных данных в столбцах описание и статус.

Фильтры

Одна или несколько записей вида:

Блок кода
languagejavaruby
linenumbersfalse
filter.<id>.type=<type>
# при необходимости сделать фильтр скрытым
#filter.<id>.show=0
# дополнительные обязательные и необязательные параметры различные для разных фильтров
filter.<id>.<param1>=<value1>
..
filter.<id>.<paramX>=<valueX>

...

Пример. Фильтр по статусу с выбранным по-умолчанию значением и ограничениям на значения, фильтр по дате создания, по группам решения, исполнителям, коду и дате закрытия.

Блок кода
languagejavaruby
linenumbersfalse
filter.1.type=status
filter.1.show=1
filter.1.availableValues=9,10,12
filter.1.defaultValues=10
#
filter.2.type=create_date
#
filter.3.type=groups
filter.3.defaultValues=17
#
filter.4.type=executors
#
filter.5.type=code
filter.6.type=close_date

...

Значение <type>ФильтрИнформация
codeЧисловой код процесса. 
descriptionПодстрока в описании процесса. 
openCloseОткрытые либо закрытые процессы.

В отличие от фильтра по статусу данный фильтр может существенно ускорять выборку.

Дополнительные параметры:

  • defaultValue - 'open' либо 'close'.
create_dateДиапазон дат создания процесса. 
close_dateДиапазон дат закрытия процесса. 
status_dateДиапазон дат когда процесс последний раз был переведён в какой-то статус.

Необязательные параметры:

  • availableValues - отображаемые в фильтре коды статусов, в порядке их отображения; если параметр не указан - отображаются все статусы.
statusТекущий статус процесса.

Необязательные параметры:

  • width - ширина фильтра в пикселях;
  • values - жёстко заданные в фильтре коды статусов, в этом случае фильтр имеет смысл только скрытым;
  • availableValues - отображаемые в фильтре коды статусов, в порядке их отображения; если параметр не указан - отображаются все статусы;
  • defaultValues - коды статусов, выбранные в фильтре по-умолчанию через запятую;
  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.
typeТип процесса.

Необязательные параметры:

  • width - ширина фильтра в пикселях;
  • availableValues - отображаемые в фильтре коды типов процессов, в порядке их отображения; если параметр не указан - отображаются все типы процессов;
  • defaultValues - коды типов процессов, выбранных в фильтре по-умолчанию через запятую;
  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.
groupsГруппы, исполняющие процесс. Без учёта ролей.

Необязательные параметры:

  • width - ширина фильтра в пикселях;
  • availableValues - отображаемые в фильтре коды групп, в порядке их отображения; если параметр не указан - отображаются все группы;
  • defaultValues - коды типов групп, выбранных в фильтре по-умолчанию через запятую;
  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.
executorsИсполнители процесса.

Без учёта в составе какой группы участвует пользователь. Фильтр работает только совместно с фильтром groups, при этом в списке исполнителей отображаются пользователи, когда-либо состоявшие в группах, указанных в фильтре groups.

Необязательные параметры:

  • width - ширина фильтра в пикселях;
  • values - "current", если необходимо отображать только процессы с текущим пользователем в исполнителях, фильтр в этом случае желательно скрыть;
  • showEmptyExecutor - "1", отображение в фильтре исполнителей пункта "не указан" для выбора процессов без исполнителя.
grexСовмещённый фильтр по группам и исполнителям процесса.

Фильтрует с учётом роли групп в процессах.

Обязательные параметры:

  • roleId - код роли.

Необязательные параметры:

  • groups.show - 0, если выбор групп необходимо скрыть;
  • groups.width - ширина выбора групп в пикселях;
  • groups.availableValues - отображаемые в фильтре коды групп, в порядке их отображения; если параметр не указан - отображаются все группы;
  • groups.defaultValues - коды типов групп, выбранных в фильтре по-умолчанию через запятую;
  • groups.onEmptyValues - значения групп фильтра, используемые, если никакие значения пользователем не выбраны;
  • executors.show - 0, если выбор исполнителей необходимо скрыть;
  • executors.width - ширина выбора исполнителей в пикселях.
param:<paramId>Параметр процесса с кодом <paramId>.

Поддерживаются параметры одного из следующих типов: "list", "listcount", "date", "datetime", "address".

Обязательные параметры:

  • title - подпись к фильтру.

Необязательные параметры:

  • orEmpty - "1", для включения в выборку процессов с пустым значением параметра; для параметров "date", "datetime".
  • width - ширина фильтра в пикселях; для параметров типа "list", "address";
  • availableValues - доступные значения спискового параметра;
  • defaultValues - выбранные по-умолчанию значения спискового параметра;
  • onEmptyValues - значения параметра, используемые, если никакие значения пользователем не выбраны;
  • valueFrom - "curdate", для принудительного задания начала периода равным текущей дате; для параметров "date", "datetime";
  • valueTo - "curdate", для принудительного задания конца периода равным текущей дате; для параметров "date", "datetime";
  • fields -  разделённые точкой с запятой поля для параметра типа "address", доступные значения: "city;quarter;street;house;flat"; поля город, улица и дом отображаются всегда, вне зависимости от наличия в конфигурации.
linkedCustomer:title

Подстрока в наименовании привязанного к процессу контрагента.

Необязательные параметры:

  • width - ширина фильтра в пикселях.
linkedCustomer:param:<paramId>Параметр привязанного к процессу контрагента с кодом <paramId>.

Поддержан только тип list.

Обязательные параметры:

  • title - подпись к фильтру.

Необязательные параметры:

  • width - ширина фильтра в пикселях;
  • availableValues - доступные значения спискового параметра;
  • defaultValues - выбранные по-умолчанию значения спискового параметра;
  • onEmptyValues - значения параметра, используемые, если никакие значения пользователем не выбраны.

Сортировка

Конфигурация количества последовательных сортировок (выпадающих списков с режимами сортировки).

...

Пример. Режимы сортировки по типу процесса, выводимому в колонке 1 и режим обратной соротировке по id процесса.

Блок кода
languagejavaruby
linenumbersfalse
sort.mode.1.columnId=1
sort.mode.1.title=Тип
sort.mode.2.column.id=2
sort.mode.2.title=Создан обр.
sort.mode.2.desc=1

Якорь
process_queue_operation
process_queue_operation

Операции

Настраиваемые операции над процессом, ссылки которых выводятся в колонке с value=actions.

...

Операции определяются в конфигурации очереди следующим образом:

Блок кода
languagejavaruby
linenumbersfalse
action.<id>.title=<title>
action.<id>.statusIds=<statusIds>
action.<id>.commands=<commands>
#
# необязательные параметры
# подпись кнопки
action.<id>.shortcut=<shortcut>
action.<id>.style=<style>

...

Пример настройки операций в очереди процессов.

Блок кода
languagejavaruby
linenumbersfalse
actionShowMode=buttons
action.1.title=Принять
action.1.shortcut=П
action.1.statusIds=10,13
action.1.style=padding: 0.2em 0.6em;
action.1.commands=setStatus:9;setCurrentExecutor;refreshCurrentQueue
action.2.title=Принять и открыть
action.2.shortcut=ПО
action.2.statusIds=10,13
action.2.style=padding: 0.2em 0.6em;
action.2.commands=setStatus:9;setCurrentExecutor;open
action.3.title=Отложить
action.3.shortcut=ОТЛ
action.3.statusIds=9,10,15
action.3.style=padding: 0.2em 0.6em;
action.3.commands=setStatus:13;clearExecutors;refreshCurrentQueue

Якорь
processQueueProcessor
processQueueProcessor

Обработчики

Обработчики позволяют производить пакетную обработку нескольких выделенных процессов. Например, менять статус или устанавливать исполнителя. Обработчики добавляются в конфигурации очереди записями следующего вида:

Блок кода
languagejavaruby
linenumbersfalse
processor.<id>.title=<title>
processor.<id>.class=<class>
#
# необязательные параметры
processor.<id>.page=<jspPage>
processor.<id>.responseType=file

...

Пример обработчиков в конфигурации:

Блок кода
languagejavaruby
linenumbersfalse
processor.1.title=Создать компанию обзвона Астериск
processor.1.class=ru.bgcrm.dyn.ufanet.otm.CreateTMCallCampaign

processor.2.title=Принять на 
processor.2.class=ru.bgcrm.dyn.ufanet.stp.SetProcessExecutor
processor.2.page=/WEB-INF/jspf/user/process/queue/custom/executor_list.jsp

...

В системе поставляется обработчик ru.bgcrm.event.listener.DefaultMarkedProcessor, позволяющий выполнять некоторые типовые обработки процессов в очереди. Шаблон добавления обработчика:

Блок кода
languagejavaruby
linenumbersfalse
processor.<id>.title=<title>
processor.<id>.class=ru.bgcrm.event.listener.DefaultMarkedProcessor
processor.<id>.commands=<commands>
#
# если не печать
processor.<id>.page=/WEB-INF/jspf/user/process/queue/default_marked_processor.jsp
# если печать
processor.<id>.responseType=file

...

  • setStatus:<statusIds> - установка одного из статусов, коды которых через запятую перечислены в <statusIds>;
  • addExecutors:<groupIds> - добавление в процесс исполнителей из групп, коды которых перечислены через запятую в <groupIds>;
  • setParam:<paramId> - установка параметра процесса с кодом <paramId>, поддержаны типы 'date' и 'datetime';
  • print:<patternId> - команда должна быть единственной в обработчике; генерация бланка документа типа xsltHtml jspHtml либо formPdfpdfForm.

Шаблон документа для команды print должен обладать scope=processQueue, title=<любая строка>. Пример шаблона:

Блок кода
languagejavaruby
linenumbersfalse
document:pattern.37.title=BLANK
document:pattern.37.100.scope=processQueue
document:pattern.37100.script=ru.bgcrm.plugin.document.docgen.CommonDocumentGenerator
document:pattern.37.xslt=docpattern/ktv_blank.xsl
document:pattern.37.type=xsltHtml100.type=jspHtml
document:pattern.37100.documentTitle=report.html

...

jsp=/WEB-INF/jspf/user/plugin/document/template/example/process_queue_processor_html.jsp

Прочие параметры очереди

Блок кода
languageruby
linenumbersfalse
# в каком интерфейсе отображать очередь
showIn=<show_in>
# для мобильного интерфейса кнопки создания процессов в очереди
createAllowedProcessList=<process_id_1>:<title_1>;<process_id_2>:<title_2>;..<process_id_n>:<title_n>
# для стационарного интерфейса - запрет создания процессов в очереди (нет кнопки "Создать")
allowCreateProcess=0

...

  • <show_in> - может быть usermob, user; по-умолчанию принимается значение user.
  • <process_id_x> - код типа процесса;
  • <title_x> - наименование кнопки.

 

 

Документация BGCRM 3.0