The program has the following types of web-interface:

  • User - is the main one, for normal PC with large screen, mouse and keyboard;

  • Mobile - restricted version for for mobile devices;

  • Open - for accessing from outside to open services without authentication.

For calling of the running system use URL: http://<host>:<port>; where:

  • <host> - host name or IP address of the server;

  • <port> - port, by default is 9088.

On the opened page may be chosen User or Mobile interfaces.

choice

Configuration process has to be started from User interface.

User

The interface is available by suffix /user. This is the main application’s UI. After creation database has only one superuser admin with password admin.

Change them after the first log in. The user with ID=1 is a special one, permissions are ignored for him.

Shell

Menu

The green button in the top-left corner opens drop-down Menu for running tools, allowed for the current user.

menu

Toolbar

Each running tool has a button on toolbar, the active tool marked with blue background. Placing mouse pointer over a toolbar button shows full menu path to the related tool, Processes / Process Queues on the screen.

toolbar news queue

No needed tools can be closed by click to grey crosses on right toolbar buttons, or by right-click popup menu on active tool button.

toolbar active rc menu

Notifications

Right to the toolbar can be displayed one or multiple user-configured process counters, showing quantity interesting processes, 70 for the screen. After is placed number of notifications, blinking in case of changing it. In the drop-down menu, opened after mouse click on notification counter, presented separated parts of the number, occurred in different tools. Click to the menu item opens the mentioned tool with unread news or messages.

notifications

Account

In the top right corner has shown the name of the current user. Click on it opens drop-down menu with options for see own profile, processes or terminate the session.

account

Topline

Shows the title from the active object or tool, click on that refreshes the active content area.

The prefix O points to open link of the active content.

In center of the topline, right from the title, placed so-named State area, there can be the related documentation link with ? char.

topline config

Or string representing the current state of active content.

topline config editor

There is also may be placed some controls of the active tool.

topline queue

Buffer

The Buffer contains list of inactive objects, previously being opened and not explicitly closed by switching activity to another object or tool. The size of the buffer is limited, last placed object placed on the top, others are shifted down, closing the oldest if the limit size has been reached.

buffer

Objects in buffer are used for quickly re-open them or object selection in some operations, like link creation.

buffer process link add

No more needed objects in buffer may be closed by click on grey crosses at right area.

Content

Tool

A Tool acts like an application inside the application and allows perform different data manipulation. Each tool can be opened only once inside a browser window, re-opening just makes it active. Beside of menu, switching active tool may be performed by click on an inactive toolbar button, or using Back and Forward browser navigation commands. The last option is possible, because any tool has an unique location URL, e.g.: /user/search, /user/news, /user/process/queue

tool search and other

Object

An Object represents a set of related data: process, customer, user profile or some another from a plugin. Unlike tools, many objects of the same type can be opened in same time, their ID ends the object’s browser URL after # char.

object

In active content area can be placed only one tool, or an object, like on the screen above. Inactivated objects placed it buffer.

Element

Button

Button colors have the following meanings.

Button view Functionality
button add

Greens call an editor for adding new entity.

button send

Browns send request to server.

button send progress

Shown progress indicator during server processing.

button white

Whites do all other actions.

Tooltip

When hovering mouse pointer on some interface elements, additional information is shown. As example on toolbar buttons displayed a full menu path, for object buffer shown just a short hint.

tip buffer

For input fields there might be the logic’s details.

tip input

In many cases these tips contain entity IDs.

Entity IDs

IDs are unique numbers, used for identification entities over the system. They are widely used in configurations.

In admin tools the IDs are shown normally as separated table column.

param dir

For regular users the are hidden as HTML tooltips, shown only when mouse is over the item.

type id title
user id title

Конфигурации

Очень большое количество редко меняющихся настроек поведения системы вынесено в конфигурации. Конфигурация - это текстовый блок, состоящих из записей вида: <ключ>=<значение>. На одной строке может быть только одна такая запись, символ # в начале строки означает комментарий.

Конфигурации вводятся либо в текстовых .properties - файлах (опции подключения к БД, базовые настройки), либо в редакторах конфигурации, сохраняясь в базе данных.

Переменные

В значениях параметров конфигурации возможна подстановка ранее указанных значений с помощью подстановок {@имя параметра}. Рассмотрим пример подстановки.

# определение значения
howYou=how you
# использование подстановки
some.kind.of.config.record=Thats {@howYou} should use macro!

При такой конфигурации при взятии значения some.kind.of.config.record получаем в результате строку "Thats how you should use macro!". Подставляемое значение должно быть обязательно определено ранее подстановки.

Счётчики

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

Например:

object.1.id=1
object.1.title=Title1
object.2.id=2
object.2.title=Title2

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

object.{@inc:cnt}.id=1
object.{@cnt}.title=Title1
object.{@inc:cnt}.id=2
object.{@cnt}.title=Title2

Склеивание значений

Помимо присвоения параметр конфигурации можно приклеивать к уже существующему под таким ключём значению. Для этого используется оператор += Например:

key=1
key+=,2
key+=,3

В этом случе под ключом key будет храниться строка "1,2,3".

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

# дата рожд., с.-н. пасп., д.в. пасп., кем выд. пасп, адрес проп., тел. гор, тел. сот, адрес(а) усл., перс. данные
bgbilling:creator.importParameters=73,74,75,76,77,78,14,12,115
# ИНН, КПП, ФИО руководителя, полное название, должность рук.-ля, Email(ы)
bgbilling:creator.importParameters+=,248,249, 252, 428, 429, 15

Также оно полезно при объединении нескольких конфигураций, позволяя создать общую объединённую переменную.

Многострочные значения

Ещё один способ разбития на несколько строк значения конфигурации. Используется, например, в JEXL скриптах.

value=<<END
Line1
Line2
END

Значение value будет Line1Line2. Переносы строк не участвуют в склеивании. Вместо END можно использовать любую строку.

Мобильный

The interface is available by suffix /usermob.

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

  • фильтрация и сортировка жёстко заданы;

  • значения колонок со ссылками (открытие контрагент, пользователя) отображаются простым текстом, как при выводе очереди на печать;

  • нет постраничного деления, предполагается, что фильтр ограничивает весь необходимый набор процессов для исполнителя.

iface

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

showIn=usermob

Для всех фильтров должны быть определены жёстко значения, например:

filter.{@inc:cnt}.type=openClose
filter.{@cnt}.values=open
filter.{@inc:cnt}.type=executors
filter.{@cnt}.values=current

sort.combo.count=3
sort.mode.2.column.id=2
sort.mode.2.title=Создан обр.
sort.mode.2.desc=1
sort.mode.3.column.id=6
sort.mode.3.title=Статус

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

createAllowedProcessList=72:Подключение;74:Подключение1

В данном примере 72 и 74 - коды процессов, для каждого создаваемого типа будет отображена своя кнопка.

create

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

wizard.step.1.title=Статус
wizard.step.1.class=SetStatusStep

wizard.step.2.title=Описание
wizard.step.2.class=SetDescriptionStep
wizard

Open

The interface is available by suffix /open.

Configuration sample of NGINX for accessing it from outside network.

Beside of some kernel functionality, described below, this interface is also used by following plugins:

Config

Default <OPEN_URL> for accessing the open interface is /open that can be changed in configuration. It is recommended to make separated included configuration for configuring open interface.

# changed root <OPEN_URL>
#url.open=https://demo.bgerp.org/open

User Profile

For enabling showing user specific information by URL <OPEN_URL>/profile/<USER_ID>:

  1. create user parameter with type list and value 1=Yes, ID of that is <ENABLE_PARAM_ID>;

  2. add the following records in configuration.

user.open.enable.paramId=<ENABLE_PARAM_ID>
user.open.show.paramIds=<PARAM_IDS>

Where:

  • <PARAM_IDS> - comma-separated user parameter IDs to be shown, parameter type file is not supported

Process

For enabling showing process information by URL <OPEN_URL>/process/<PROCESS_ID> define in configuration:

process.open.typeIds=<TYPE_IDS>
process.open.show.paramIds=<PARAM_IDS>
process.open.show.message.tagIds=<MESSAGE_TAG_IDS>
# optionally JEXL expression for handling access secrets
#process.open.secret.expression=<SECRET_EXPRESSION>

Where:

  • <TYPE_IDS> - comma-separated process type IDs to be shown;

  • <PARAM_IDS> - comma-separated process parameter IDs to be shown, parameter type file is not supported;

  • <MESSAGE_TAG_IDS> - comma-separated message tag IDs to be shown, * - show all tags;

  • <SECRET_EXPRESSION> - JEXL expression for secret handling, e.g using plugin secret.

Process Queue

For enabling showing process queue by URL <OPEN_URL>/process/queue/<OPEN_NAME> define in configuration of the queue:

openUrl=<OPEN_NAME>
media.html.open.columns=<COLUMN_IDS>

Where:

  • <COLUMN_IDS> - comma-separated list of queue columns.

Localization

For localization of the Open Interface add HTTP request parameter lang=<LANG>, where <LANG> - shortcut of the wanted language.