...
В конфигурации очереди процессов определяются колонки с выводимыми данными, доступные фильтры и прочие параметры. При выборе родительского типа процесса в разрешённых типах все вновь появившиеся типы процессов-потомки также будут отображены в очереди без необходимости её пересохранения.
Колонки
Одна или несколько записей вида:
Блок кода | ||
---|---|---|
| ||
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 | Ссылки с операциями над процессом. | Нет | Нет | Нет |
Якорь | ||||
---|---|---|---|---|
|
...
Где <configHead> и <configRow> - JEXL выражения, генерирующие HTML для вывода заголовочного столбца таблицы и строк данных соответственно.
...
- checkAllLink - строка, содержащая ссылку для выделения всех строк в случае использования обработчиков в очереди.
При генерации строки:
...
Пример настройки отображения заголовка таблицы и строк с помощью JEXL (выражения можно более коротко оформить с помощью многострочных значений переменных конфигураций с JEXL выражениями):
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
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} |
...
Обратите внимание на группировку различных данных в столбцах описание и статус.
Фильтры
Одна или несколько записей вида:
...
Значение <type> | Фильтр | Информация |
---|---|---|
code | Числовой код процесса. | |
description | Подстрока в описании процесса. | |
openClose | Открытые либо закрытые процессы. | В отличие от фильтра по статусу данный фильтр может существенно ускорять выборку. Дополнительные параметры:
|
create_date | Диапазон дат создания процесса. | |
close_date | Диапазон дат закрытия процесса. | |
status_date | Диапазон дат когда процесс последний раз был переведён в какой-то статус. | Необязательные параметры:
|
status | Текущий статус процесса. | Необязательные параметры:
|
type | Тип процесса. | Необязательные параметры:
|
groups | Группы, исполняющие процесс. Без учёта ролей. | Необязательные параметры:
|
executors | Исполнители процесса. | Без учёта в составе какой группы участвует пользователь. Фильтр работает только совместно с фильтром groups, при этом в списке исполнителей отображаются пользователи, когда-либо состоявшие в группах, указанных в фильтре groups. Необязательные параметры:
|
grex | Совмещённый фильтр по группам и исполнителям процесса. | Фильтрует с учётом роли групп в процессах. Обязательные параметры:
Необязательные параметры:
|
param:<paramId> | Параметр процесса с кодом <paramId>. | Поддерживаются параметры одного из следующих типов: "list", "listcount", "date", "datetime", "address". Обязательные параметры:
Необязательные параметры:
|
linkedCustomer:title | Подстрока в наименовании привязанного к процессу контрагента. | Необязательные параметры:
|
linkedCustomer:param:<paramId> | Параметр привязанного к процессу контрагента с кодом <paramId>. | Поддержан только тип list. Обязательные параметры:
Необязательные параметры:
|
Сортировка
Конфигурация количества последовательных сортировок (выпадающих списков с режимами сортировки).
...
Якорь | ||||
---|---|---|---|---|
|
Операции
Настраиваемые операции над процессом, ссылки которых выводятся в колонке с value=actions.
...
Якорь | ||||
---|---|---|---|---|
|
Обработчики
Обработчики позволяют производить пакетную обработку нескольких выделенных процессов. Например, менять статус или устанавливать исполнителя. Обработчики добавляются в конфигурации очереди записями следующего вида:
...
- setStatus:<statusIds> - установка одного из статусов, коды которых через запятую перечислены в <statusIds>;
- addExecutors:<groupIds> - добавление в процесс исполнителей из групп, коды которых перечислены через запятую в <groupIds>;
- setParam:<paramId> - установка параметра процесса с кодом <paramId>, поддержаны типы 'date' и 'datetime';
- print:<patternId> - команда должна быть единственной в обработчике; генерация бланка документа типа xsltHtml jspHtml либо formPdfpdfForm.
Шаблон документа для команды print должен обладать scope=processQueue, title=<любая строка>. Пример шаблона:
Блок кода | ||
---|---|---|
| ||
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 |
Прочие параметры очереди
Блок кода | ||||
---|---|---|---|---|
| ||||
# в каком интерфейсе отображать очередь 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> - наименование кнопки.