A process queue is a table view of processes with configured types, columns, filter and sort.
| You can see the feature operation in Demo System. |
Filter by title and configuration.
Duplicate an existing 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.
| 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. |
<TYPE> can have the following values:
| <TYPE> | what is selected | titleIfMore, cutIfMore | Sorting | |||
|---|---|---|---|---|---|---|
|
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 |
||||
|
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 |
||||
|
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 |
||||
|
create_user |
created process user |
Yes |
Yes |
Yes |
||
|
date and time of closing process |
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 |
||
|
creation date and time of the last incoming process message |
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 |
quantity of outgoing process messages |
Yes |
Yes |
Yes |
||
|
creation date and time of the last outgoing process message |
Yes |
Yes |
||||
|
messageOutLastText |
text of the last outgoing process message |
Yes |
Yes |
Yes |
||
|
messageOutLastUser |
the user, created the last outgoing process message |
Yes |
Yes |
Yes |
||
|
messageOutLastSubject |
subject of the last outgoing process message |
Yes |
Yes |
Yes |
||
|
message:<TYPE_IDS>:systemId |
system_id of process message with comma-separated type IDs <TYPE_IDS> |
Yes |
Yes |
Yes |
||
|
||||||
|
linkCustomer:param:<PARAM_ID> |
value of parameter ID <PARAM_ID> of process linked customer |
Yes |
Yes |
Yes |
||
|
linkCustomer:<COLUMN> |
value of <COLUMN> in DB table customer for process linked customer: id - ID, title - title |
Yes |
Yes |
Yes |
||
|
linkObject:<OBJECT_TYPE_PREFIX> |
comma-separated process_link::title with object_type prefix <OBJECT_TYPE_PREFIX> |
Yes |
Yes |
Yes |
||
|
linkObject:<OBJECT_TYPE_PREFIX>:id |
Comma-separated process_link::id with object_type prefix <OBJECT_TYPE_PREFIX>. Example: linkObject:bgbilling-helpdesk:id - ID of linked topic BGBilling HelpDesk. |
Yes |
Yes |
Yes |
||
|
linkCustomerLink |
linked customers list with UI open links |
No |
No |
No |
||
|
linkObject:process |
comma-separated list of related child processes with UI open links |
No |
No |
No |
||
|
linkProcessList:<LINK_TYPE>:<OPEN>:<TYPE_IDS> |
ID, type and status of related child processes. Optional settings:
|
Yes |
No |
Yes |
||
|
linkedProcessList:<LINK_TYPE>:<OPEN>:<TYPE_IDS> |
ID, type and status of related parent processes. Optional settings:
|
Yes |
No |
Yes |
||
|
linkProcessCount:<LINK_TYPE>:<OPEN>:<TYPE_IDS> |
count of related child processes. Optional settings:
|
Yes |
Yes |
Yes |
||
|
linkedProcessCount:<LINK_TYPE>:<OPEN>:<TYPE_IDS> |
count of related parent processes. Optional settings:
|
Yes |
Yes |
Yes |
||
|
actions |
Links or buttons with process actions. |
No |
No |
No |
||
|
linkObject:contract:<BILLING_IDS> |
List of BGBilling contracts linked to the process. The optional suffix :<BILLING_IDS> specifies comma-separated billing IDs. |
No |
No |
No |
||
|
For all date and time columns after <TYPE> can be defined :<FORMAT>. As an example, status_dt:dd.MM.yy displays only date with two-digits year. If a column used not for showing but sorting then instead the format :value suffix should be added. A column can be added two times if its used both for displaying and sorting, the sorting column have to be hidden. |
By default all configured queue columns are visible and ordered by ID. That can be changed with configuration record media.html.columns=<COLUMN_IDS>, where <COLUMN_IDS> - comma-separated order of IDs of visible columns. For example:
media.html.columns=1,2,3
| You can see (queue Kernel Process Queue Action) the feature operation in Demo System. |
Show actions as buttons:
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()
Enabled with:
checkColumn=1
Allows print or export to Excel only selected rows. The column appears without the key, if any processor is used.
For generation PDF print form for the queue, place to the configuration media.print.columns key with comma-separated column IDs, have to be visible. Page orientation for that setup is landscape, 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
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
| You can see (queue Kernel Process Queue Expression) the feature operation in Demo System. |
The process table can be customized further by adding the following to the configuration:
rowConfig.{@inc:cnt}.media=html
rowConfig.{@cnt}.expressionHead=<CONFIG_HEAD>
rowConfig.{@cnt}.expressionRow=<CONFIG_ROW>
Where <CONFIG_HEAD> and <CONFIG_ROW> are JEXL expressions that generate the HTML for the table header and data rows, respectively.
The following objects are available in the JEXL context when generating the header:
checkAllLink - a string containing a link to select all rows when using processors in the queue.
When generating a row:
priority - a string containing the color corresponding to the process priority;
col<X> - HTML containing the value of the column with ID <X>.
Example of configuring the table header and rows with expression:
// PzdcDoc snippet of: 'Configuration of "Kernel Process Queue Expression" queue', lines: 1 - 25
column.1.value=id
column.2.value=priority
column.3.value=description
column.4.value=create_user
column.5.value=create_dt
CONFIG_HEAD=<<END
return "<tr>"
+ "<td>ID</td>"
+ "<td>Description</td>"
+ "<td title='Sample Head Title'>Created [Creator]</td>"
+ "</tr>";
END
CONFIG_ROW=<<END
return "<tr bgcolor='" + urgColor + "' processId='" + process.getId() + "'>"
+ "<td>" + col1 + "</td>"
+ "<td>" + col3 + "</td>"
+ "<td><b>" + col5 + "</b> [" + col4 + "]" + "</td>"
+ "</tr>";
END
rowConfig.1.media=html
rowConfig.1.expressionHead={@CONFIG_HEAD}
rowConfig.1.expressionRow={@CONFIG_ROW}
The configured queue looks so.
One or more entries in the following format:
filter.<ID>.type=<TYPE> # optionally hide the filter #filter.<ID>.show=0 # additional entries, which vary by filter <TYPE> filter.<ID>.<KEY_1>=<VALUE_1> .. filter.<ID>.<KEY_X>=<VALUE_X>
Where:
<ID> - the filter’s unique numeric ID;
<TYPE> - the filter type, the only required key; see the available values below.
The order of filters in the configuration determines the order in which they are displayed.
The table below describes the settings for the different filter types.
| <TYPE> value | Filter | Details |
|---|---|---|
|
type |
Process type. |
Optional:
|
|
status_date |
Date range when the process was last moved to a status. |
Optional:
|
|
status |
Current process status. |
Optional:
|
|
param:<PARAM_ID> |
Process parameter with ID <PARAM_ID>. |
Supported parameter types: "address", "blob", "date", "datetime", "list", "listcount", "money", and "text". Required:
Optional:
|
|
openClose |
Open or closed processes. |
Comparing to the status filter, this filter can significantly speed up retrieval. Optional:
|
|
linkedCustomer:title |
Substring in the title of the customer linked to the process. |
Optional:
|
|
linkedCustomer:param:<PARAM_ID> |
Parameter with ID <PARAM_ID> of the customer linked to the process. |
Only the "list" type is supported. Required:
Optional:
|
|
linkedObject |
Process link with all filter values hard-defined. |
Parameters:
|
|
linkObject |
Process link; unlike linkedObject, the user enters the filter values. |
Required:
Example of a filter by BGBilling HelpDesk topic ID: filter.{@inc:cnt}.type=linkObject
filter.{@cnt}.objectType=bgbilling-helpdesk:bitel
filter.{@cnt}.whatFilter=id
filter.{@cnt}.title=HelpDesk topic ID
|
|
groups |
Groups executing the process, regardless of their roles. |
Optional:
|
|
grex |
Combined filter for process groups and executors. |
Filters groups according to their roles in processes. Required:
Optional:
|
|
executors |
Process executors. |
Does not account for which group the user belongs to. This filter works only together with the groups filter; the executor list shows users who have ever belonged to the groups specified by that filter. Optional:
|
|
create_user |
User who created the process. |
The user list includes the current user and other users who belong to the same groups. |
|
close_user |
User who closed the process. |
The user list includes the current user and other users who belong to the same groups. |
|
description |
Substring in the process description. |
|
|
create_date |
Process creation date range. |
|
|
code |
Numeric process code. |
|
|
close_date |
Process closing date range. |
|
|
message:systemId |
Message system ID. |
Example of a status filter with a default value and a restricted set of available values, along with filters for creation date, execution groups, executors, process ID, and closing date.
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
Sort modes have been defined using multiple configuration blocks:
sort.mode.<ID>.columnId=<COL_ID> sort.mode.<ID>.title=<TITLE> # desceniding #sort.mode.<ID>.desc=1
Where:
<ID> - unique numeric mode’s ID, starting from 1;
<COL_ID> - 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.<COMBO_ID>.default=<DEFAULT_MODE_ID>
Or the fixed one, used as example in Mobile interface:
sort.combo.<COMBO_ID>.value=<FIXED_MODE_ID>
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 descending creation time.
| You can see the feature operation in Demo System. |
Processors are added in the queue configuration with entries of the following form:
processor.{@inc:cnt}.title=<TITLE>
processor.{@cnt}.class=<CLASS>
Where:
<CLASS> - a custom or regular class extending ru.bgcrm.model.process.queue.Processor
Example of processors in the configuration:
processor.{@inc:cnt}.title=Description Prefix (DemoProcessor)
processor.{@cnt}.class=DemoProcessor
The processor supplied with the system allows some standard process operations to be performed. Processor addition template:
processor.{@inc:cnt}.title=<TITLE>
processor.{@cnt}.class=DefaultMarkedProcessor
processor.{@cnt}.commands=<COMMANDS>
# optional
processor.{@cnt}.openPrintDialog=<PRINT>
processor.{@cnt}.doExpression=<DO_EXPRESSION>
Where:
<COMMANDS> - commands, see below;
<PRINT> - 1 to show the browser print dialog after the print command;
<DO_EXPRESSION> - JEXL script with Standard Process Context.
Supported commands:
setStatus:<STATUS_IDS> - sets one of the statuses whose IDs are listed comma-separated in <STATUS_IDS>;
addExecutors:<GROUP_IDS> - adds executors to the process from groups whose IDs are listed comma-separated in <GROUP_IDS>;
setParam:<PARAM_ID> - sets the process parameter with code <PARAM_ID>; types 'date', 'datetime', and 'list' are supported;
print:<PATTERN_ID> - this command must be the only one in the processor; generates a document of type jspHtml or pdfForm.
The document template for the print command must have scope=processQueue.
Example of processors configuration from the Demo:
// PzdcDoc snippet of: 'Configuration of "Kernel Process" queue', lines: 75 - 90
# processors
processor.{@inc:cnt}.title=Set Status (DefaultMarkedProcessor)
processor.{@cnt}.class=DefaultMarkedProcessor
processor.{@cnt}.commands=setStatus:{@STATUS_OPEN_ID},{@STATUS_PROGRESS_ID},{@STATUS_WAIT_ID}
processor.{@inc:cnt}.title=Delete Processes (DefaultMarkedProcessor)
processor.{@cnt}.class=DefaultMarkedProcessor
processor.{@cnt}.doExpression=delete()
processor.{@inc:cnt}.title=Print Report (DefaultMarkedProcessor)
processor.{@cnt}.class=DefaultMarkedProcessor
# ID 100 comes from configuration of plugin Document
processor.{@cnt}.commands=print:100
processor.{@inc:cnt}.title=Description Prefix (DemoProcessor)
processor.{@cnt}.class=DemoProcessor
For open interface can be defined a special simplified processor, single per queue. As an example of such ones, have a look on Subscription plugin.
showIn=<SHOW_IN> createAllowedProcessList=<BUTTONS> allowCreateProcess=<DENY> openUrl=<OPEN_URL>
Где:
<SHOW_IN> - usermob to make the queue available via mobile interface;
<BUTTONS> - semicolon-separated pairs <PROCESS_TYPE_ID>:<TITLE> for process creation in usermob interface;
<DENY> - 0 disable process creation for user interface;
<OPEN_URL> - the queue available via open interface with URL: <SERVER_URL>/open/process/queue/<OPEN_URL>
A process queue can be displayed on an object’s Processes tab, with a filter for that object added automatically. Columns and sort modes with an explicit value can be defined in the queue configuration.
This feature is enabled in the configuration:
<OBJECT_TYPE>.processes.queue=<QUEUE_ID>
Where:
<OBJECT_TYPE> - the type of the linked object, for example customer or contract:<BILLING_ID>;
<QUEUE_ID> - the process queue ID.
Example:
customer.processes.queue=12 contract:bitel.processes.queue=11
A user can see process queues allowed for him or one of his current groups. When the tool is open the previously queue’s selection is restored in the drop-down list.
| The O link left of the queue title means that it is configured to be shown in open interface and can be accessed with the link. |
Clicking the plus button within the queue drop-down list turns that queue into a separate quick-access button next to the drop-down list. The button can be moved back into the list by clicking the cross icon on it.
The table shows paged processes with configured filters and order. The output is being refreshed on every switch to the tool from others.
The first item in the More drop-down menu.
Opens process creation mode with allowed process types.
Following More menu items do configured queue printing. The printed processes can be restricted with checkboxes.
On the first usage a queue runs with all configured filters in so-called Full mode. A drop-down list is used to manage visible filters. Bold text indicates that a filter contains data, even if the filter itself is hidden. Filters' state can be reset to the default state by choosing Filter / Reset option in the More menu
Right of the filters can be selected configured sorting options. For this case sorting is first performed by descending priority and over equal priorities by descending creation time.
A frequently used set of filter and sort values can be saved using the Filter / Save option in the More menu. Put the wanted Saved filter name in the shown input field.
Number in square braces reflects how many processes match the filter’s criteria.
To switch between Full and Saved filters modes use Filter / Back to Full and Filter / Saved options in the More menu. There are multiple saved filters can be created.
Saved filters can be rearranged by dragging them with the mouse.
Or moved into the Filters drop-down menu to reduce horizontal space.
There is no way to edit existing saved filters, instead you can extract a saved filter to full with More / Filter / Extract to Full option, adjust it and save again. Not more needed saved filters are removed by More / Filter / Delete.
The number of processes from a saved filter can be displayed as a counter in the notification area. After selection More / Filter / Counter on Panel the color of the counter can be chosen.
The resulting counter has a tooltip with the queue’s and saved filter’s title, clicking it will bring you to the queue with the saved filter. So a user can observe important process numbers from any place of User interface.
Beside that the counters are shown in Mobile interface. To remove the related counter for a saved filter, call More / Filter / Delete Counter from Panel when the filter is active.
Processors allow batch processing of several selected in a queue processes. For example, changing the status or assigning an executor. They are configured for a queue and displayed in the More menu of the process queue alongside the standard items.
Configured queue columns can be exported to XSL format for all the processes or only marked with checkboxes.
The actions are configurable operations, performed over a process in a queue. The list of them is shown in queue column actions as links.
Or buttons.