-
Kernel
-
Plugins
-
Release Notes
Kernel
Plugins
Release Notes
The Configuration is edited in tool Administration / Configuration
This configuration, sometimes also named Server Configuration stores the most part of settings for the application’s kernel and plugins. At one time can be in use only one configuration, marked as Active. Changes there are applied on the fly and do not require the app’s restart, except plugin’s enabling or disabling.
See the kernel configuration keys described below. At the beginning you must to set only some of them, marked with !!! string. The rest can be used when you would need to change related behavior. There are two types of default key values, shown as commented records.
strings are shown as it is, default values are the same as the commented, examples: lang, url.user
flags are show opposite it is, default values are opposite the commented, examples: mail.debug, scheduler.start
# system language, supported: ru, en
#lang=en
# browser window title !!!
title=BGERP DEMO
# application interface URL !!!
URL=https://bgerp.company.com
# URLs for user and open interfaces, when being proxied through different domains
#url.user={@URL}/user
#url.open={@URL}/open
# update url
#update.url=https://bgerp.org
# email SMTP settings !!!
mail.from.email=bgerp@company.com
mail.from.name={@title}
mail.smtp.host=
mail.smtp.user=
mail.smtp.pswd=
# use SMTP SSL
#mail.transport.protocol=smtps
# overwrite default port: 25 for SMTP, 465 for SMTP SSL
#mail.smtp.port=
# debug SMTP exchange
#mail.debug=1
# app alarms comma separated emails !!!
#alarm.mail=admin@company.com
## PARAM
# format of address param, available variables: index, сity, area, quarter, street, house, flat, room, pod, floor, comment
#address.format=(${street})(, ${house})(, ${floor} floor)(, apt. ${flat})( ${room})( ${comment})( ${index})( ${city})( [${comment}])
# USSR style
#address.format=(${city})(, ${street})(, д. ${house})(, кв. ${flat})( ${room})
# substring search mode for street search instead of prefix-based
#address.street.search.mode=substring
# format for parameter type "phone"
# comma-separated item of parameter value, f.e.: +7 917 444-44-44 [Ivan Petrov]
#param.phone.format=(${number})( [${comment}])
# each ${number} in item is formatted by one of the matching comma-separated formats !!!
# Ufa, Russia
param.phone.format.number=+7 (347) XXX-XX-XX,+7 9XX XXX-XX-XX
# Munich, Germany
#param.phone.format.number=017X XXXXXXX,089 XXXXXXX
## USER
# check user permissions
#user.permission.check=1
# user password rules
#user.password.chars=1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
#user.password.length.min=5
#user.password.length.max=10
## CUSTOMER
# semicolon-separated roles (must start from customer) with titles for linking customer to process, f.e.: customer:Customer;customer-contact:Contact
#processCustomerLinkRoles=customer:Контрагент
# minimal substring length for customer search by title
#search.customer.title.min.substring.length=0
# customer description pattern for search results, can contain parameter values, f.e.: (born in ${param:73})(, lives by ${param:12})
#customer.reference.pattern=
## PROCESS
# execution group roles, semicolon-separated list of <ID>:<TITLE>, f.e.: 0:Execution;1:Follow
processGroupRoles=0:Выполнение
# process priorities, the list can be reduced or increased
#process.priority.0.color=#ffffff
#process.priority.1.color=#ffffff
#process.priority.2.color=#9ad78a
#process.priority.3.color=#9ad78a
#process.priority.4.color=#fff1a4
#process.priority.5.color=#fff1a4
#process.priority.6.color=#ffbe7e
#process.priority.7.color=#ffbe7e
#process.priority.8.color=#ffbe7e
#process.priority.9.color=#fd7d89
# process priority description, shown when changing
#process.priority.<PRIORITY>.description=<DESCRIPTION>
# HTML support in process description and message texts
#text.html=1
## STARTUP
# disable scheduler run
#scheduler.start=0
# enable all plugins by default
#plugin.enable.default=1
# comma separated list of Java classes implementing java.lang.Runnable, running on server start
#runOnStart=
# comma separated list of Java classes, instantiated on server start
#createOnStart=
## HTTP
# maximal size of uploaded file in MB
#file.upload.max.size.mb=3
# timeout of user HTTP session activity, in seconds
#user.session.timeout=300
# remove log/access logs older than days
#log.access.max.days=60
# HTTP header with client IP, when using proxy
#header.name.remote.addr=X-Real-IP
## WEB APP
# disable checking of browser version
#check.browser=0
# disable client-side pooling, might be useful for development
#pooling.enable=0
## DB
# read-only DB usage, no modification there is performed
#db.readonly=1
The Configuration may be separated on many parts, in order to handle a big amount of records there. Included configurations are shown under a parent one with indentation. The only one level of depth is supported there. The hierarchy is only visual, all the records have the equal meaning.
To make an included configuration, the add button on the Main ones has to be clicked.
The option Without plugin creates an empty include, there can be placed some of kernel settings.
The most part of the product’s functionality is available in form of plugins. All of them are presented in the system, but enabled only by adding <PLUGIN_ID>:enable=1 record in configuration. Such enabling records can be added to any part there, but normally for plugins with many settings created a separated include with title Plugin <PLUGIN_TITLE>.
Enabled in an include plugins are shown on the right table column. |
License management tool can be found in menu Administration / License. The license file lic.data
is placed in the application root directory and enables usage of defined plugins and restricts number of concurrent user sessions.
In the top state area is shown the current license state, below is placed the current license content and a buttom for uploding file. The actual demo license is always awailable on the project’s web-site.
You can skip this section at first reading. |
The application stores almost all the data in SQL DB, access credentials for that are defined in bgerp.properties
file. After the configuration is loaded from DB, records from bgerp.properties
have been applied again. That means, you can overwrite any key in the file.
In DB are also stored file’s metadata, but file bodies are persisted in filestorage
directory.
In former versions file bodies were stored as a flat list, that may be changed running org.bgerp.exec.MoveToSubDirs class. |
Все действия пользователей в системе выполняются через проверку прав. Правка пользователей и полномочий производится в оснастках Администрирование / Пользователи / …. Редактирование учётных записей пользователей, их прав доступа и групп.
Проверка прав доступа включается переменной конфигурации. |
Наборы прав определяют разрешаемые пользователю действия. При установке в системе присутствует пустой набор прав Администраторы. Целесообразно разрешить данному набору все действия, используя его для наделения пользователей полными правами.
На этапе начального изучения системы вам будет достаточно этого набора прав. |
Кнопка R в таблице наборов позволяет перенести на набор все действия другого набора, выбранного из открываемого списка. В редакторе набора прав указывается его название, конфигурация. В дереве действий указываются разрешённые набору действия.
Группы пользователей обозначают подразделения в организации и выступают группами решения для подсистемы процессов.
В группе могут быть указаны очереди процессов, наборы прав, конфигурация. Подробно о логике работы системы ограничений см. далее, в описании редактора пользователей.
Группы выстроены в иерархию, что позволяет учитывать службы, отделы и другие структурные единицы организации. Кнопка C в таблице позволяет вырезать группу, переместив её в новое место в иерархии. Флаг скрытости предназначен для обозначения ныне не существующих подразделений.
В свойствах пользователя указывается одна или несколько групп с указанием периода, наборы прав, имя пользователя, его логин и пароль. Пользователи выступают исполнителями для подсистемы процессов.
Параметры пользователя определяются в редакторе параметров.
Группы пользователя определяют вхождение пользователя в подразделения.
Результирующие права пользователя, параметры его конфигурации и разрешённые очереди процессов определяются описанным ниже образом. Сложение списка обозначает добавление в конец списка новых элементов.
Действующий список групп (ДСГ) - упорядоченный список = список групп в алфавитном порядке (как отображаются в списке групп), из них оставлены только действующие в настоящий момент у пользователя.
Действующий список наборов прав (ДСНП) - упорядоченный список = списки всех наборов прав групп ДСГ + список наборов прав пользователя.
Действующая конфигурация (ДК) - строка = конфигурации всех наборов прав из ДСНП + конфигурации всех групп из ДСГ (конфигурация каждой группы составлена из конфигурации всех её предков + конфигурация группы) + конфигурация пользователя. Переменная более поздно добавленная в конфигурацию переопределит более раннюю.
Очереди процессов = список очередей процессов, из которых оставлены очереди указанные в пользователе либо в одной из групп ДСГ.
Разрешения = разрешения из наборов прав ДСНП + разрешения из пользователя.
Схема довольно сложна, однако позволяет очень гибко настраивать права пользователей.
Редактор разрешённых действий в наборе прав и пользователе представляет из себя дерево действий следующего вида:
Установка галочки на узле дерева разрешает действия. У некоторых действий есть конфигурация, задающая дополнительные ограничения. Заданные переменные конфигураций отображаются в квадратных скобках рядом с действиями (на снимке выше для действия "Просмотр пользователей"). Для открытия редактора конфигурации действия необходимо кликнуть мышью в скобки. При этом отобразится диалог следующего вида.
Над панелью ввода конфигурации действия отображается подсказка по допустимым параметрам.
В данную конфигурацию допускается подставлять переменные из действующей конфигурации пользователя. Подстановка осуществляется макросом {@<paramName>}, где <paramName> - параметр из конфигурации. Например: groupSet={@smGroup}. Так, на приведённым ранее снимке пользователю разрешают просматривать список пользователя только входящих в те же группы, что и он сам. Используется подставновка системной переменной из действующей конфигурации пользователя.
В зависимости от разрешённых действий и их конфигураций в интерфейсе, отображаемом пользователю, могут скрываться либо отображаться различные элементы.
Для пользователя с кодом 1 конфигурации действий не применяются, данному пользователю всегда разрешены все действия, но с пустыми конфигурациями. |
Опции конфигурации пользователя (они могут попасть в неё из указанных выше конфигураций):
# отключение проверки прав #user.permission.check=0 # открытие оснасток после авторизации зафиксированной (в данном примере - поиск и обработка сообщений), разделитель - запятая #on.login.open.pinned=/user/search,/user/message/queue # открытие оснасток после авторизации (в данном примере - обработка сообщений), разделитель - запятая #on.login.open=/user/message/queue # disable client-side pooling for the user, might be useful for development #pooling.enable=0
You may notice such warnings in application logs.
06-27/19:24:51 WARN [http-nio-9088-exec-1] PermissionNode - Not found action node 'ru.bgcrm.struts.action.admin.WorkAction:shiftList', run 'org.bgerp.task.CorrectPermissions' class to fix 06-27/19:24:51 WARN [http-nio-9088-exec-1] PermissionNode - Not found action node 'ru.bgcrm.struts.action.admin.WorkAction:callboardAvailableShift', run 'org.bgerp.task.CorrectPermissions' class to fix
They mean that not primary action IDs were used to store in DB. Nothing critical, but later execute the mentioned class CorrectPermissions to fix it.
That action breaks backward compatibility of DB, so do only when you do not need to roll back. |
User profile tool for other users may be accesed by UI link: in users table, process card or any other iface place.
The tool allows depending on your see and update groups, parameters and send personal news.
You own profile can be opened by the link in top right menu.
In your own profile you can additionaly change title, login and password.
And adjust UI settings.
The settings are stored in so named User Personalization configuration, it can be seen by pressing Text button. The drop-down selected options are stored using iface. key prefix. All the configuration might be completely resetted to the default state using Reset button.
Изоляция позволяет ограничить доступные пользователю данные и применяется ко всем действиям, запрашивающим и модифицирующим эти данные. Параметры изоляции задаются в объединённой конфигурации пользователя.
isolation.process=<processIsolation>
Где:
<processIsolation> - process isolation mode, can take one of the following values.
executor - uses sees only processes where he is an executor;
group - uses sees only processes where execution groups are intersected with his current groups.
For group mode may be defined additionally process types which have executor isolation level.
isolation.process.group.executor.typeIds=<typeIds>
Where <typeIds> comma-separated list of process type IDs.
Isolation mode group restricts available types for process creation.
The same logic without isolation can be archived using onlyPermittedTypes option in permissions.
Для большинства сущностей в системе возможно определение настраиваемых параметров. Редактирование перечня параметров осуществляется в оснастке Администрирование / Параметры интерфейса. Выбор сущности, для которой определяются параметры, производится в выпадающем списке. Список может расширяться при установке плагинов.
Редактор параметра выглядит следующим образом. Для всех типов кроме спискового (отличия будут рассмотрены далее) его вид идентичен.
Таблица параметров сущности выглядит подобным образом. Порядок записи в таблице определяется числовым полем Порядок параметра, либо порядком, задаваемым при привязке к типу процесса либо группе параметров.
Ключи конфигурации параметра различаются для типов параметров, общие для всех типов необязательные значения:
# comma-separated parameter IDs, must be set before the parameter requireBeforeFillParamIds=<codes> # comma-separated parameter IDs, must be empty before the parameter set requireBeforeEmptyParamIds=<codes> # comma-separated tag strings, tagged parameter can be viewed or edited only # with explicitly allowance in permission options tags=<tags> # read only parameter, can't be edited in UI readonly=1 # parameters table row style style=<style>
Where:
<codes> - comma-separated parameter IDs;
<tags> - comma-separated tag strings;
<style> - CSS style attribute value.
Address parameter, referencing houses in Address Directory. In parameter configuration may be defined the following options.
# multiple values multiple=1
How does the parameter look like in table and editor.
Format of address string can be configured. |
Street and house can be choosen and filtered from drop-downs.
The street search may be performed over multiple substrings as well.
The street search mode can be changed to simple substring search in configuration.
The parameter should be used for storing addresses in limited areas, e.g. service delivery address. Not registration address of abitary customers, as you will need all of them stored in directory first.
Большая многострочная строка до 65000 символов. В конфигурации параметра могут быть указаны следующие необязательные параметры:
rows=<rows> saveOn=<saveOn>
Где:
<rows> - количество отображаемых в редакторе строк, по-умолчанию 4;
<saveOn> - режим сохранения, может быть "focusLost" (потеря фокуса полем), по-умолчанию сохранение производится по нажатию кнопки Ок.
В таблице параметр выглядит следующим образом:
Дата: год - месяц - день. В конфигурации параметра могут быть указаны следующие необязательные параметры:
# возможность смены месяца changeMonth=true # возможность смены года changeYear=true yearRange=<yearRange> # возможность редактирования поля с клавиатуры editable=1 saveOn=<saveOn>
Где:
<yearRange> - диапазон отображаемых лет в выпадающем списке годов, могут быть значения от текущего года, например: -10:+30 , либо значения от текущей выбранной даты, например: c:-10:c+30, по-умолчанию с-10:с+10;
<saveOn> - режим сохранения, может быть "focusLost" (потеря фокуса полем) либо "enter" (нажатие клавиши "Enter"), по-умолчанию режим "enter"; актуально только при editable=1.
Для параметра yearRange нулевое значение указывать как +0, например: -10:+0 |
В таблице параметр и его редактор выглядят следующим образом.
Дата + время различной точности. В конфигурации параметра могут быть указаны следующие необязательные параметры:
type=<type> stepHour=<stepHour> stepMinute=<stepMinute>
Где:
<type> - может принимать значения ymdh, ymdhm, ymdhms в зависимости от требуемой точности поля;
<stepHour> - шаг в выборе часов;
<stepMinute> - шаг в выборе минут.
Пример параметра. Конфигурация, как выглядит в таблице и редактирование.
Один или несколько файлов. В конфигурации параметра могут быть указаны следующие необязательные параметры:
# несколько файлов в параметре multiple=1
Параметр с выбираемыми из набора значениями. Значения могут быть определены как конфигурации параметра так и во внешнем справочнике, на который ссылается параметр. Для некоторых значений можно добавить возможность или установить обязательное требование указания комментария.
В конфигурации параметра могут быть указаны следующие необязательные параметры:
# мультивыбор multiple=1 # сохранение сразу после выбора значения, без нажатия кнопки Ок (только для параметра с одним выбором) saveOn=select editAs=<editAs> # сортировка значений по наименованию а не в порядке кодов sort.mode=byTitle allowCommentValues=<allowCommentValues> needCommentValues=<needCommentValues> directory=<dirName> availableValues=<values> availableValuesInnerJoinFilter=<joinTable>;<joinColumn>;<joinFilter>
Где:
<editAs> - может принимать значения combo - по-умолчанию, выпадающий список, radio - выбор значения в виде переключателей, select - выпадающий список с возможностью поиска значения;
<dirName> - справочник, из которого берутся значения, может быть "address_city" для городов, если справочника нет - значения указываются в самом параметре;
<values> - допустимые коды значений через запятую;
<allowCommentValues> - перечень значений для которых допустимо указание комментария, возможно указание диапазонов, например: 1-3,7,9-14
<needCommentValues> - перечень значений для которых обязателен комментарий, указывается аналогично <allowCommentValues>;
<joinTable> - имя таблицы, с которой осуществляется фильтрующая операция SQL INNER JOIN справочной таблицы;
<joinColumn> - колонка таблицы, по которой проводится JOIN столбца id справочной таблицы;
<joinFilter> - дополнительное условие INNER JOIN.
Пример конфигурации параметра, в котором доступны контрагенты, входящие в группу с кодом 3.
multiple=1 directory=customer availableValuesInnerJoinFilter=customer_group;customer_id;group_id IN (3)
Parameter editor.
Values table.
Value editor for a single value.
Same, using radio buttons.
Values editor for multiple values.
Позволяет выбирать перечислимые значения с указанием количества для них.
In configuration may be defined the following non-mandatory options:
# multiple values multiple=1
На снимке экрана ниже - редактор свойств параметра, конфигурирование значений аналогично параметру типа "list".
Values table.
Value editor for a single value.
Values editor for multiple values.
Decimal number with two digits after delimiter.
In configuration may be defined the following non-mandatory options:
saveOn=<saveOn>
Where:
<saveOn> - save mode, can be focusLost, by default stores by pressing Enter or OK button.
Values table.
Values editor.
Один или несколько телефонов с комментариями. Как выглядит в таблице.
Редактирование.
Формат строки с номерами задаётся в конфигурации.
Однострочная строка до 250 символов. В конфигурации параметра могут быть указаны следующие необязательные параметры:
saveOn=<saveOn> # parameter contains URL, shown as a link show.as.link=<showAsLink> # вместо значение параметра выводится <ЗНАЧЕНИЕ ЗАШИФРОВАНО>, параметр можно только поправить, нельзя просмотреть encrypt=encrypted
Где:
<saveOn> - режим сохранения, может быть focusLost, по-умолчанию сохранение производится по нажатию кнопки Ок либо Enter;
<showAsLink> - 1 to show parameter value as a URL; hideProtocol - hiding a protocol prefix.
Также в конфигурации параметра могут быть указаны одна или несколько конструкций вида:
regexp.<n>.title=<TITLE> regexp.<n>.regexp=<regexp>
Где:
<n> - число, порядковый номер регулярного выражения;
<TITLE> - наименование шаблона;
<regexp> - регулярное выражение, описывающее шаблон.
При наличии в конфигурации текстового параметра подобных конструкций вводимая строка будет проверяться на совпадение хотя бы с одним из шаблонов, например:
regexp.1.title=<город без г.>,<улица без ул.>,<дом без д.> regexp.1.regexp=[а-яА-Я\s\-]+,[\dа-яА-Я\s\-]+,\s*[\dа-яА-Я/]+ regexp.2.title=<город без г.>,<улица без ул.>,<дом без д.>,<номер квартиры> regexp.2.regexp=[а-яА-Я\s\-]+,[\dа-яА-Я\s\-]+,\s*[\dа-яА-Я/]+,*\s*\d+ regexp.3.title=<город без г.>,<улица без ул.>,<дом без д.>,<номер квартиры>, <номер комнаты> regexp.3.regexp=[а-яА-Я\s\-]+,[\dа-яА-Я\s\-]+,\s*[\dа-яА-Я/]+,*\s*\d+,\s*\d+
В данном случае параметр контрагента адрес по прописке проверяется на соответствие одному из шаблонов. Содержание шаблонов легко понять из атрибутов title.
В таблице параметр выглядит следующим образом:
In menu Administration / Execution / Run can be executed any Java class, implementing java.lang.Runnable.
When Wait of execution is done is selected to Yes, execution logs can be obtained from enabled User Session Log.
You can skip this section at first reading. |
Scheduler allows periodically run Java classes, which extend org.bgerp.app.exec.scheduler.Task. To configure scheduled tasks add the following blocks to server configuration:
scheduler.task.<ID>.class=<name> # running time in Cron format # supported ranges: 1-2; divisible: */3; enums: 1,2 scheduler.task.<ID>.minutes=<minutes> scheduler.task.<ID>.hours=<hours> scheduler.task.<ID>.dm=<dm> scheduler.task.<ID>.month=<month> scheduler.task.<ID>.dw=<dw> # for disabling the task #scheduler.task.<ID>.enable=0
Where:
<ID> - unique string ID;
<name> - simple of full name of the running class;
<minutes> - minutes 0 - 59;
<hours> - hours 0 - 23;
<dm> - days of month 1 - 31;
<month> - months 1 - 12;
<dw> - days of week 1 - 7, 1 is Monday.
Configured tasks must be visible in menu Administration / Execution / Scheduler
Scheduler is controlled by config option.
In the right column table placed buttons, allowing to run a scheduled tasks at any moment of time. If a toggle selected, task is running in an request thread, allowing to follow logs.
Просмотр и редактирование адресных справочников доступны в оснастке Адреса.
Адресный справочник рекомендуется использовать только для ограниченных населённых пунктов, в которых предоставляются услуги. Параметры типа address, использующие справочник, позволяют производить поиск по городу, улицу и т.п. Нецелесообразно заносить в адресный справочник юридические адреса организаций, адреса для получения корреспонденции и т.п. Это приведёт к неоправданному разрастанию справочника и усложнению его поддержки.
Как настроить выгрузку справочника адресов в BGBilling и первичную выгрузку из него описано здесь.
При необходимости согласования справочников адресов нескольких биллингов воспользуйтесь встроенной в BGBillingClient утилитой