Очередь процессов - это интерфейс доступа к массиву процессов определённых типов. Очередь определяет вид таблицы, доступные сортировки и фильтры. Очереди отображаются в пользовательском интерфейсе оснасткой Процессы.
Редактирование очередей процессов производится в оснастке Администрирование => Процессы => Очереди процессов.
В свойствах очереди определяются доступные в ней типы процессов, прочие параметры вводятся в конфигурации.
В конфигурации очереди процессов определяются колонки с выводимыми данными, доступные фильтры и прочие параметры. При выборе родительского типа процесса в разрешённых типах все вновь появившиеся типы процессов-потомки также будут отображены в очереди без необходимости её пересохранения.
Колонки
Одна или несколько записей вида:
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 | Ссылки с операциями над процессом. | Нет | Нет | Нет |
Для всех типов столбцов, выводящих дату и время возможна установка после наименования столбца формата через двоеточие в формате Java. Например: status_dt:dd.MM.yy выведет только дату с двухзначным годом. Если столбец используется для сортировки и сортировка требуется по значению даты и времени а не по их строковому представлению, то вместо формата указывается :value. Если столбец требуется и для сортировки и для отображения - следует сделать два столбца один из которых скрыть
Очередь процессов может быть выведена в таблицу HTML либо на печать с помощью вызова Ещё - Печать.
По-умолчанию в таблице оснастки отображаются все настроенные столбцы, ограничить их и поменять порядок можно с помощью опции media.html.columns=<columnIds>, где <columnIds> - id столбцов через запятую в порядке вывода. Например:
media.html.columns=1,2,3
Допустима склейка значений нескольких столбцов на одной позиции с помощью символа сложения, например:
media.html.columns=1,3+4,5,6
Для вывода таблицы на печать определите таким же образом параметр конфигурации media.print.columns. Обратите внимание на таблицу, не все столбцы могут быть выведены на печать.
Для выгрузки таблицы в XLS файл, укажите переменную media.xls.columns, правила заполнения аналогичны. Пункт выгрузки в Excel появляется также в Ещё.
Выводимую в очереди таблицу с процессами можно настроить ещё более гибко, указав в конфигурации очереди:
rowConfig.1.media=html rowConfig.1.stringExpressionHead=<configHead> rowConfig.1.stringExpressionRow=<configRow>
Где <configHead> и <configRow> - JEXL выражения, генерирующие HTML для вывода заголовочного столбца таблицы и строк данных соответственно.
В контекст JEXL выражения передаются объекты, при генерации заголовка:
- checkAllLink - строка, содержащая ссылку для выделения всех строк в случае использования обработчиков в очереди.
При генерации строки:
- priority - строка с цветом, соответствующим приоритету процесса;
- colX - HTML со значением столбца с кодом X.
Пример настройки отображения заголовка таблицы и строк с помощью JEXL (выражения можно более коротко оформить с помощью многострочных значений переменных конфигураций с JEXL выражениями):
В результате очередь будет выглядеть приблизительно подобным образом.
Обратите внимание на группировку различных данных в столбцах описание и статус.
Фильтры
Одна или несколько записей вида:
filter.<id>.type=<type> # при необходимости сделать фильтр скрытым #filter.<id>.show=0 # дополнительные обязательные и необязательные параметры различные для разных фильтров filter.<id>.<param1>=<value1> .. filter.<id>.<paramX>=<valueX>
Где:
- <id> - уникальный числовой идентификатор фильтра;
- <type> - тип фильтра, единственный обязательный параметр, см. значения далее.
Порядок фильтров в конфигурации определяет их порядок в отображении.
Пример. Фильтр по статусу с выбранным по-умолчанию значением и ограничениям на значения, фильтр по дате создания, по группам решения, исполнителям, коду и дате закрытия.
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>), обязательные и необязательные параметры. В таблице перечислены типы фильтров и их параметры
Таблица. Типы фильтров
Значение <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. Обязательные параметры:
Необязательные параметры:
|
Сортировка
Конфигурация количества последовательных сортировок (выпадающих списков с режимами сортировки).
sort.combo.count=<count>
Где:
- <count> - количество последовательных сортировок.
Пример:
sort.combo.count=3
Для каждого выпадающего списка возможно определение значния по-умолчанию:
sort.combo.<combo_id>.default=<defaultValue>
Где:
- <combo_id> - порядковый номер выпадающего списка начиная с 1;
- <defaultValue> - выбранное по-умолчанию значение в выпадающем списке начиная с 1.
Либо жёстко определить значение (используется в основном для мобильного интерфейса):
sort.combo.<combo_id>.value=<value>
Где:
- <combo_id> - порядковый номер выпадающего списка начиная с 1;
- <value> - выбранное значение в выпадающем списке начиная с 1.
Конфигурация режимов сортировок (значения для выпадающих списков), одна или несколько записей вида:
sort.mode.<id>.columnId=<col_id> sort.mode.<id>.title=<title> # обратный режим сортировки 1 - обратный, 0 - прямой sort.mode.<id>.desc=1
Где:
- <id> - уникальный числовой идентификатор режима сортировки;
- <col_id> - числовой идентификатор колонки, по которой производится сортировка, либо "0" - случайный режим сортировки;
- <title> - название режима сортировки.
Пример. Режимы сортировки по типу процесса, выводимому в колонке 1 и режим обратной соротировке по id процесса.
sort.mode.1.columnId=1 sort.mode.1.title=Тип sort.mode.2.column.id=2 sort.mode.2.title=Создан обр. sort.mode.2.desc=1
Операции
Настраиваемые операции над процессом, ссылки которых выводятся в колонке с value=actions.
Действия могут отображаться в виде ссылок либо кнопок.
По-умолчанию операции отображаются в виде ссылок, для "кнопочного" отображения добавить в конфигурацию очереди.
actionShowMode=buttons
Операции определяются в конфигурации очереди следующим образом:
action.<id>.title=<title> action.<id>.statusIds=<statusIds> action.<id>.commands=<commands> # # необязательные параметры # подпись кнопки action.<id>.shortcut=<shortcut> action.<id>.style=<style>
Где:
- <id> - уникальный числовой идентификатор режима сортировки;
- <title> - наименование операции.
- <statusIds> - коды статусов через запятую, в которых разрешена операция;
- <commands> - команды макроса обработки процесса;
- <shortcut> - сокрашённый текст на кнопке;
- <style> - атрибут HTML style для кнопки.
Пример настройки операций в очереди процессов.
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
Обработчики
Обработчики позволяют производить пакетную обработку нескольких выделенных процессов. Например, менять статус или устанавливать исполнителя. Обработчики добавляются в конфигурации очереди записями следующего вида:
processor.<id>.title=<title> processor.<id>.class=<class> # # необязательные параметры processor.<id>.page=<jspPage> processor.<id>.responseType=file
Где:
- <id> - числовой идентификатор обработчика;
- <class> - динамический либо обычный класс, расширяющий ru.bgcrm.event.listener.DynamicEventListener
- <jspPage> - JSP страница со свойствами обработчика.
Параметр responseType=file необходимо указывать для обработчиков, генерирующих файлы, например для печати.
Пример обработчиков в конфигурации:
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, позволяющий выполнять некоторые типовые обработки процессов в очереди. Шаблон добавления обработчика:
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
Где:
- <id> - числовой идентификатор обработчика;
- <commands> - команды, см. далее.
Поддержанные команды:
- setStatus:<statusIds> - установка одного из статусов, коды которых через запятую перечислены в <statusIds>;
- addExecutors:<groupIds> - добавление в процесс исполнителей из групп, коды которых перечислены через запятую в <groupIds>;
- setParam:<paramId> - установка параметра процесса с кодом <paramId>, поддержаны типы 'date' и 'datetime';
- print:<patternId> - команда должна быть единственной в обработчике; генерация бланка документа типа jspHtml либо pdfForm.
Шаблон документа для команды print должен обладать scope=processQueue, title=<любая строка>. Пример шаблона:
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> - наименование кнопки.