...
В конфигурации очереди процессов определяются колонки с выводимыми данными, доступные фильтры и прочие параметры. При выборе родительского типа процесса в разрешённых типах все вновь появившиеся типы процессов-потомки также будут отображены в очереди без необходимости её пересохранения.
Колонки
Одна или несколько записей вида:
...
Значение <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.
...
Якорь | ||||
---|---|---|---|---|
|
Обработчики
Обработчики позволяют производить пакетную обработку нескольких выделенных процессов. Например, менять статус или устанавливать исполнителя. Обработчики добавляются в конфигурации очереди записями следующего вида:
...
Блок кода | ||
---|---|---|
| ||
document:pattern.100.scope=processQueue document:pattern.100.script=ru.bgcrm.plugin.document.docgen.CommonDocumentGenerator document:pattern.100.type=jspHtml document:pattern.100.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> - наименование кнопки.
Работа с очередями процессов
Возможный вид очереди процессов изображён на рисунке ниже. Чтобы очередь появилась в списке доступных она должна быть добавлена в свойствах пользователя или его группы.
Нажатие кнопки в выпадающем списке очередей выделяет очередь в отдельную кнопку быстрого доступа рядом с выпадающим списком. Обратно в список кнопка может быть перемещена нажатием креста на ней.
По-умолчанию очередь открывается с полным фильтром, определённым в конфигурации.
Для управления видимыми фильтрами используется одноимённый выпадающий список. Полужирный текст обозначает заполненность фильтра, при этом фильтр может быть скрыт.
Часто используемые фильтры могут быть сохранены. Для сохранения фильтра используется меню Ещё - Фильтр - сохранить. Все сохранённые фильтры отображаются в виде отдельных кнопок, доступных для быстрого переключения с отображением на них количества текущих процессов.
Переключение из полного фильтра в сохранённые производится также через меню Ещё. Кнопки сохранённых фильтров возможно перемещать мышью, изменяя их порядок. Для корректировки сохранённого фильтра следует извлечь его в полный посредством Ещё - Фильтр - извлечь в полный, после чего скорректировать и сохранить, удалив впоследствии старый фильтр. Таким же образом можно оценить, какие параметры у сохранённого фильтра.
...
Кнопки сохранённых фильтров возможно перемещать с помощью мыши. Редко используемые сохранённые фильтры могут быть перетащены в выпадающий список Фильтр. Также перетаскиванием мышью их можно извлечь обратно.
Кнопка с символом * открывает список общих фильтров, в которые можно экспортировать любой из сохранённых. Общие фильтры становятся доступны всем пользователям, имеющим доступ к данной очереди процессов. Они могут быть импортированы и использованы. С помощью общих фильтров администратор может настроить типовые фильтры для остальных пользователей.