A process queue is a table view of processes in DB with configured types, columns, filter and sort.

Setup

You can see the feature operation in Demo System.

Queue configuration happens in Administration / Processes / Process Queues tool.

setup queues
setup queue

In queue properties have been defined the process types.

Enabling a parent type, like on the screen above, implicitly includes all its children types.

The rest of settings is done in the queue configuration.

Columns

You can see (queue Kernel Process Queue Column) the feature operation in Demo System.

One or more records of the following format:

column.<ID>.title=<TITLE>
column.<ID>.value=<TYPE>

# optional

# do not wrap column value
column.<ID>.nowrap=1
# horizontal align: left, center, right
column.<ID>.align=
# CSS style
column.<ID>.style=
# convert line brakes to HTML <br> tags, to make them visible in the column
column.<ID>.formatToHtml=1
# truncate a column value longer than <MAX_SYMBOLS> characters with link to show the full value
column.<ID>.cutIfMore=<MAX_SYMBOLS>
# truncate a column value longer than <TITLE_IF_MORE> characters, the full value is shown as HTML title popup on mouse hover
column.<ID>.titleIfMore=<TITLE_IF_MORE>
# show the value as URL for HTML link
column.<ID>.showAsLink=<LINK_TITLE>

# different process to take value for
#column.<ID>.process=<TARGET_PROCESS>
# convert the column value text to unsigned int, can be useful for sorting
#column.<ID>.convert=int
# aggregating function
column.<ID>.aggregate=<AGGREGATE_FUNCTION>

Where:

  • <ID> - unique numeric column ID;

  • <TITLE> - title;

  • <TYPE> - the selected value, see the possible variants below;

  • <MAX_SYMBOLS>, <TITLE_IF_MORE> - maximal not truncated column value text;

  • <LINK_TITLE> - text for the HTML link, linkUrl - use the column value itself;

  • <TARGET_PROCESS> - linked the column value has been taken for the parent linked process;

  • <AGGREGATE_FUNCTION> - aggregating function: SUM, AVG, COUNT.

When an aggregate function is specified for a column, the column header will display the function’s value for all filtered processes in square brackets, in addition to the column name. Only one function is allowed per column.

Using aggregate functions requires an additional query for each process queue table output, which may slow down display performance.
column aggregate

Types

<TYPE> can have the following values:

<TYPE> what is selected titleIfMore, cutIfMore Sorting Print

id

process ID with link to open it

Yes

Yes

Yes

title

Yes

No

Yes

type_title

process type title

Yes

Yes

Yes

status_title

current process status title

Yes

Yes

Yes

status_pos

position of the current process status

Yes

Yes

Yes

date and time when the current status was set

Yes

Yes

Yes

status_user

user which set the current status

Yes

Yes

Yes

status_comment

comment of the current status

Yes

Yes

Yes

date and time of the last set status with ID in comma-separated <STATUS_IDS> values

Yes

Yes

Yes

status:<STATUS_IDS>:user

user of the last set status with ID in comma-separated <STATUS_IDS> values

Yes

Yes

Yes

status:<STATUS_IDS>:comment

comment of the last set status with ID in comma-separated <STATUS_IDS> values

Yes

Yes

Yes

priority

the column colors process row with priority background

No

Yes

Priority number

date and time of process creation

Yes

Yes

Yes

create_user

created process user

Yes

Yes

Yes

date and time of closing process

Yes

Yes

Yes

close_user

closed process user

Yes

Yes

Yes

executors:<GROUP_IDS>:<ROLE_IDS>

Comma-separated process executors. Optional suffixes :<GROUP_IDS> and :<ROLE_IDS> allow restriction the executors by comma-separated process execution group and role IDs. For only roles restriction use: executors:*:<ROLE_IDS>

Yes

No

Yes

groups:<ROLE_IDS>

Comma-separated process execution groups. Optional suffix :<ROLE_IDS> restricts those by comma-separated execution role IDs.

Yes

No

Yes

description

process description

Yes

Yes

Yes

descriptionLink

process description with link opening the process

Yes

Yes

Yes

param:<PARAM_ID>

Value of process parameter with ID equal to <PARAM_ID>.

For parameters with types date and datetime can be defined the output format.

For parameter with type address param:<PARAM_ID>:quarter or param:<PARAM_ID>:street - for showing only address quarter or street.

Yes

Yes

Yes

ifListParam:<PARAM_ID>:<VALUE>:<SET_FLAG>:<UNSET_FLAG>

Show <SET_FLAG> if list parameter value with ID <PARAM_ID> is set to <VALUE>, or <UNSET_FLAG> in another case; :<SET_FLAG>:<UNSET_FLAG> are optionally needed, by default are used symbols and .

No

No

the numeric value

messageInCount

quantity of incoming process messages (messages type Note are also counted there too)

Yes

Yes

Yes

date and time sending of the last incoming message

Yes

Yes

Yes

messageInUnreadCount

quantity of unread incoming process messages

Yes

Yes

Yes

messageInLastText

text of the last incoming process message

Yes

Yes

Yes

messageInLastUser

the user, read the last incoming process message

Yes

Yes

Yes

messageInLastSubject

subject of the last incoming process message

Yes

Yes

Yes

messageOutCount

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

Yes

Yes

Yes

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

Yes

Yes

Yes

messageOutLastText

Текст последнего исходящего сообщения.

Yes

Yes

Yes

messageOutLastUser

Пользователь, создавший последнее исходящее сообщение.

Yes

Yes

Yes

messageOutLastSubject

Тема последнего исходящего сообщения в процессе.

Yes

Yes

Yes

message:<type_ids>:systemId

Идентификатор привязанного к процессу сообщения с типом из <type_ids> - разделённого запятыми списка типов. Можно выбирать, например, код темы форума.

Yes

Yes

Yes

linkCustomer:param:<PARAM_ID>

Параметр привязанного к процессу контрагента, где <PARAM_ID> - код параметра. Возможны все те же опции, что и для столбца param.

Yes

Yes

Yes

linkCustomer:<column>

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

Yes

Yes

Yes

linkObject:<object_type_prefix>

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

Yes

Yes

Yes

linkObject:<object_type_prefix>:id

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

Yes

Yes

Yes

linkCustomerLink

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

No

No

No

linkObject:process

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

No

No

No

linkObject:contract:<billingIds>

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

No

No

No

linkProcessList:<linkType>:<open>:<typeIds>

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

  • <linkType> - тип связи;

  • <open> - open для вывода только открытых процессов;

  • <typeIds> - коды типов процессов через запятую.

Yes

No

Yes

linkedProcessList:<linkType>:<open>:<typeIds>

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

Yes

No

Yes

actions

Links or buttons with process actions.

No

No

No

Для всех типов столбцов, выводящих дату и время возможна установка после наименования столбца формата через двоеточие в формате Java. Например: status_dt:dd.MM.yy выведет только дату с двухзначным годом. Если столбец используется для сортировки и сортировка требуется по значению даты и времени а не по их строковому представлению, то вместо формата указывается :value. Если столбец требуется и для сортировки и для отображения - следует сделать два столбца один из которых скрыть.

По-умолчанию в таблице оснастки отображаются все настроенные столбцы, ограничить их и поменять порядок можно с помощью опции media.html.columns=<columnIds>, где <columnIds> - id столбцов через запятую в порядке вывода. Например:

media.html.columns=1,2,3

JEXL

Выводимую в очереди таблицу с процессами можно настроить ещё более гибко, указав в конфигурации очереди:

rowConfig.1.media=html
rowConfig.1.expressionHead=<configHead>
rowConfig.1.expressionRow=<configRow>

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

В контекст JEXL выражения передаются объекты, при генерации заголовка:

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

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

  • priority - строка с цветом, соответствующим приоритету процесса;

  • colX - HTML со значением столбца с кодом X.

Пример настройки отображения заголовка таблицы и строк с помощью 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=<<END
   return "<td width='20' class='printHide'>" + checkAllLink  + "</td>"
    + "<td>ID</td>"
    + "<td>Статус [создан]</td>"
    + "<td>Адрес</td>"
    + "<td>Описание</td>"
    + "<td>Группа [исполнители]</td>"
    + "<td>Время</td>"
    + "<td class='printHide'>Действия</td>";
END

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

rowConfig.1.media=html
rowConfig.1.expressionHead={@configHead}
rowConfig.1.expressionRow={@configRow}

В результате очередь будет выглядеть приблизительно подобным образом.

i0115

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

Actions

You can see (queue Kernel Process Queue Action) the feature operation in Demo System.

The actions are configurable operations, performed over a process in a queue. The list of them is shown in queue column actions as links.

actions

Or buttons.

actions buttons

Case in the process queue configuration is defined:

actionShowMode=buttons

Any of action has been added to the configuration:

# link text or buttons' tooltip
action.{@inc:cnt}.title=<TITLE>
# action logic, see below
action.{@cnt}.doExpression=<EXPRESSION>
# optional
# comma-separated status IDs for displaying the action
action.{@cnt}.statusIds=<STATUS_IDS>
# buttons' text
action.{@cnt}.shortcut=<SHORTCUT>
# html style for button
action.{@cnt}.style=<STYLE>

The <EXPRESSION> contains JEXL expression with action logic.

Previously used commands key must be replaced to doExpression

Example of process queue action configuration:

// PzdcDoc snippet of: 'Configuration of "Kernel Process Queue Action" queue', lines: 13 - 28

actionShowMode=buttons
action.{@inc:cnt}.title=Accept to Progress
action.{@cnt}.shortcut=A
action.{@cnt}.statusIds={@STATUS_OPEN_ID},{@STATUS_WAIT_ID}
action.{@cnt}.style=padding: 0.2em 0.6em;
action.{@cnt}.doExpression=setStatus({@STATUS_PROGRESS_ID});addExecutors({ctxUser.getId()});ui.refreshQueue()
action.{@inc:cnt}.title=Accept to Progress and Open
action.{@cnt}.shortcut=P&O
action.{@cnt}.statusIds={@STATUS_OPEN_ID},{@STATUS_WAIT_ID}
action.{@cnt}.style=padding: 0.2em 0.6em;
action.{@cnt}.doExpression=setStatus({@STATUS_PROGRESS_ID});addExecutors({ctxUser.getId()});ui.open()
action.{@inc:cnt}.title=Back to Open
action.{@cnt}.shortcut=O
action.{@cnt}.statusIds={@STATUS_PROGRESS_ID},{@STATUS_WAIT_ID}
action.{@cnt}.style=padding: 0.2em 0.6em;
action.{@cnt}.doExpression=setStatus({@STATUS_OPEN_ID});deleteExecutors(p.getExecutorIds());ui.refreshQueue()

Check Column

Enabled with:

checkColumn=1

Allows print or export to Excel only selected rows. The column appears with key, if any processor is used.

checkbox column

Print

For generation PDF print form for queue, place to the configuration media.print.columns key with comma-separated column IDs, have to be visible. Page orientation for that setup is lanscape, all column widths are same, except process description with doubled one.

The print setting may by defined more precisely with configuration blocks:

media.print.{@inc:cnt}.title=<TITLE>
media.print.{@cnt}.columns=<COLUMNS_MAPPING>
# optional
# portrait orientation
#media.print.{@cnt}.orientation=portrait
# file name
#media.print.{@cnt}.fileName=bgerp_process_queue.pdf

Where:

  • <TITLE> - item title for the queue’s More drop-down;

  • <COLUMNS_MAPPING> - semicolon-separated pairs <COLUMN_ID>:<WIDTH_PROPORTION>

Here is the configuration sample:

// PzdcDoc snippet of: 'Configuration of "Kernel Process" queue', lines: 34 - 41

# print columns with default widths
media.print.columns=1,17,4,11,19

# fine print configuration
media.print.{@inc:cnt}.title=Print Special
# column width proportion mapping
media.print.{@cnt}.columns=1:2;4:10;9:4
media.print.{@cnt}.orientation=portrait

And how does it look in UI:

print items

Export to Excel

To export table data in XLS format, define comma-separated column IDs in media.xls.columns like here:

// PzdcDoc snippet of: 'Configuration of "Kernel Process" queue', lines: 43 - 44

# export to Excel
media.xls.columns=1,17,4,11,19
export excel

Фильтры

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

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

Где:

  • <ID> - уникальный числовой идентификатор фильтра;

  • <TYPE> - тип фильтра, единственный обязательный параметр, см. значения далее.

Порядок фильтров в конфигурации определяет их порядок в отображении.

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

filter.{@inc:cnt}.type=status
filter.{@cnt}.availableValues=9,10,12
filter.{@cnt}.defaultValues=10

filter.{@inc:cnt}.type=create_date

filter.{@inc:cnt}.type=groups
filter.{@cnt}.defaultValues=17

filter.{@inc:cnt}.type=executors
filter.{@inc:cnt}.type=code
filter.{@inc:cnt}.type=close_date

Далее описываются фильтры по их типу (параметр <TYPE>), обязательные и необязательные параметры. В таблице перечислены типы фильтров и их параметры.

Значение <TYPE> Фильтр Информация

type

Тип процесса.

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

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

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

  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.

status_date

Диапазон дат когда процесс последний раз был переведён в какой-то статус.

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

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

status

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

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

  • width - ширина фильтра в пикселях;

  • values - жёстко заданные в фильтре коды статусов, в этом случае фильтр имеет смысл только скрытым;

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

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

  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.

param:<PARAM_ID>

Параметр процесса с кодом <PARAM_ID>.

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

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

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

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

  • orEmpty - "1", для включения в выборку процессов с пустым значением параметра; для параметров "date", "datetime".

  • width - ширина фильтра в пикселях; для параметров типа "list", "address";

  • values - hardly defined values;

  • availableValues - доступные значения спискового параметра;

  • defaultValues - выбранные по-умолчанию значения спискового параметра;

  • onEmptyValues - значения параметра, используемые, если никакие значения пользователем не выбраны;

  • valueFrom - "curdate", для принудительного задания начала периода равным текущей дате; для параметров "date", "datetime";

  • valueTo - "curdate", для принудительного задания конца периода равным текущей дате; для параметров "date", "datetime";

  • fields - разделённые точкой с запятой поля для параметра типа "address", доступные значения: "city;quarter;street;house;flat"; поля город, улица и дом отображаются всегда, вне зависимости от наличия в конфигурации.

openClose

Открытые либо закрытые процессы.

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

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

  • defaultValue - open либо close, значение по-умолчанию;

  • values - open либо close, жестко заданные значения.

linkedCustomer:title

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

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

  • width - ширина фильтра в пикселях.

linkedCustomer:param:<PARAM_ID>

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

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

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

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

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

  • width - ширина фильтра в пикселях;

  • availableValues - доступные значения спискового параметра;

  • defaultValues - выбранные по-умолчанию значения спискового параметра;

  • onEmptyValues - значения параметра, используемые, если никакие значения пользователем не выбраны.

linkedObject

Привязка процесса, все фильтры жёстко заданы.

Параметры:

  • objectTypeMask - SQL LIKE выражение по типу объекта;

  • objectTitleRegExp - SQL REGEXP выражение по названию привязанного объекта;

  • notMode - 1, если необходимо искать процессы без привязки.

linkObject

Привязка процесса, в отличие от linkedObject, значения для фильтра вводится пользователем

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

  • title - filter’s title;

  • objectType - type of linked objects;

  • whatFilter - what to filter: id - ID of linked object, title - its title.

Пример фильтра по коду темы HelpDesk:

filter.{@inc:cnt}.type=linkObject
filter.{@cnt}.objectType=bgbilling-helpdesk:bitel
filter.{@cnt}.whatFilter=id
filter.{@cnt}.title=Тема HelpDesk

groups

Группы, исполняющие процесс. Без учёта ролей.

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

  • width - ширина фильтра в пикселях;

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

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

  • onEmptyValues - значения фильтра, используемые, если никакие значения пользователем не выбраны.

grex

Совмещённый фильтр по группам и исполнителям процесса.

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

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

  • roleId - код роли.

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

  • groups.show - 0, если выбор групп необходимо скрыть;

  • groups.width - ширина выбора групп в пикселях;

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

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

  • groups.onEmptyValues - значения групп фильтра, используемые, если никакие значения пользователем не выбраны;

  • groups.title - title for the groups selection, for example: Follower Group;

  • executors.show - 0, если выбор исполнителей необходимо скрыть;

  • executors.width - ширина выбора исполнителей в пикселях;

  • executors.title - подпись к выбору исполнителей, например: Наблюдение.

executors

Исполнители процесса.

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

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

  • width - ширина фильтра в пикселях;

  • values - "current", если необходимо отображать только процессы с текущим пользователем в исполнителях, фильтр в этом случае желательно скрыть;

  • showEmptyExecutor - "1", отображение в фильтре исполнителей пункта "не указан" для выбора процессов без исполнителя.

create_user

User created of process.

User list includes the current one and other users, having the same groups as the current.

close_user

User closed of process.

User list includes the current one and other users, having the same groups as the current.

description

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

create_date

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

code

Числовой код процесса.

close_date

Диапазон дат закрытия процесса.

message:systemId

Системный идентификатор сообщения.

Sort

Sort modes have been defined using multiple configuration blocks:

sort.mode.<ID>.columnId=<colId>
sort.mode.<ID>.title=<TITLE>
# desceniding
#sort.mode.<ID>.desc=1

Where:

  • <ID> - unique numeric mode’s ID, starting from 1;

  • <colId> - the column ID, used in the mode;

  • <TITLE> - mode’s title for the combobox item;

Amount of sort comboboxes with modes, are configured in this way:

sort.combo.count=<amount>

For each of the comboboxes can be set a default selected mode:

sort.combo.<comboId>.default=<defaultModeId>

Or the fixed one, used as example in Mobile interface:

sort.combo.<comboId>.value=<fixedModeId>

Here is the sample of sort configuration:

// PzdcDoc snippet of: 'Configuration of "Kernel Process" queue', lines: 62 - 73

sort.mode.1.columnId=4
sort.mode.1.title=Description
sort.mode.2.columnId=1
sort.mode.2.title=Created desc
sort.mode.2.desc=1
sort.mode.3.columnId=3
sort.mode.3.title=Priority desc
sort.mode.3.desc=1

sort.combo.count=2
sort.combo.1.default=3
sort.combo.2.default=2

And how does it look like in UI. By default sorting is first performed by descending priority and after by decending creation time.

sort

Processor

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

processor.<ID>.title=<TITLE>
processor.<ID>.class=<CLASS>
#
# необязательные параметры
processor.<ID>.page=<jspPage>
processor.<ID>.responseType=file
# optional parameters for open interface only
processor.<ID>.page.url=<pageUrl>

Где:

  • <ID> - числовой идентификатор обработчика;

  • <CLASS> - динамический либо обычный класс, расширяющий org.bgerp.app.event.iface.EventListener

  • <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

Обработчики отображаются в пункте меню Ещё очереди процессов наряду со стандартными пунктами.

i0105

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

processor.<ID>.title=<TITLE>
processor.<ID>.class=DefaultMarkedProcessor
processor.<ID>.commands=<commands>
# additional JEXL script, without UI defined params
processor.<ID>.doExpression=<doExpression>

# если печать
#processor.<ID>.responseType=file
# если печать - открытие диалога печати браузера
#processor.<ID>.openPrintDialog=1

Где:

  • <ID> - числовой идентификатор обработчика;

  • <commands> - команды, см. далее;

  • <doExpression> - JEXL script with standard context for process.

Поддержанные команды:

  • setStatus:<STATUS_IDS> - установка одного из статусов, коды которых через запятую перечислены в <STATUS_IDS>;

  • addExecutors:<GROUP_IDS> - добавление в процесс исполнителей из групп, коды которых перечислены через запятую в <GROUP_IDS>;

  • setParam:<PARAM_ID> - установка параметра процесса с кодом <PARAM_ID>, поддержаны типы 'date' и 'datetime', 'list';

  • 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

Sample of processor, set parameter value and delete groups:

processor.6.title=Set date, delete groups
processor.6.class=DefaultMarkedProcessor
processor.6.commands=setParam:40
processor.6.doExpression=deleteGroups(process.getGroupIds())

Open Interface

For open interface definition of processor is easier, example:

processor.{@inc:cnt}.iface=open
processor.{@cnt}.page=/WEB-INF/jspf/open/plugin/custom.bitel/calculate_processor.jsp

Only one open processor per queue is supported. JSP template here placed in custom area.

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

# в каком интерфейсе отображать очередь
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> - наименование кнопки.

Использование

Оснастка запускается через меню Пуск / Процессы.

Возможный вид очереди процессов изображён на рисунке ниже. Чтобы очередь появилась в списке доступных она должна быть добавлена в свойствах пользователя или его группы.

queue table

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

queue list

По нажатию Ещё возможно:

  • создание нового процесса одного из разрешённого в очереди типов;

  • печать очереди (если она настроена в конфигурации);

  • переход из режима полного фильтра в режим сохранённых а также сохранение либо удаление фильтра.

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

queue filters

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

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

queue saved filters

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

Действия Ещё - Фильтр - Счётчик на панель / Фильтр - Счётчик убрать с панели позволяют выделить число счётчика на панель задач BGERP с определённым цветом и всегда иметь актуальную информацию о важных количественных параметрах процессов. На снимке экрана выше процессы фильтра No исполнителя вынесены на панель с красным цветом.

Кнопки сохранённых фильтров возможно перемещать с помощью мыши. Редко используемые сохранённые фильтры могут быть перетащены в выпадающий список Фильтр. Также перетаскиванием мышью их можно извлечь обратно.

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