Документация

Документация по разработке bpm’online
Как создать мини-карточку добавления

Glossary Item Box

Общие положения

Для быстрого добавления записей в раздел, а также для просмотра краткой информации о записях, в bpm'online реализованы мини-карточки. Добавление мини-карточек, отображающих информацию о записях, описано в статьях "Создание мини-карточки" и "Добавление мини-карточки к произвольному модулю".

Чтобы в существующем разделе реализовать пользовательскую мини-карточку добавления новой записи:

  1. В пользовательский пакет добавьте схему модели представления карточки. В качестве родительского объекта выберите схему BaseMiniPage.
  2. При помощи специального SQL-запроса внесите изменения в системную таблицу SysModuleEdit базы данных bpm’online.
  3. Добавьте необходимую функциональность мини-карточки в исходный код схемы.

К СВЕДЕНИЮ

Для разделов bpm'online, в которых мини-карточки реализованы по умолчанию, существуют системные настройки, коды которых соответствуют маске Has[Код раздела]MiniPageAddMode (например, HasAccountMiniPageAddMode). Эти системные настройки используются для переключения между режимами добавления новой записи и редактирования существующей с помощью мини-карточки. Поскольку в этой статье рассматривается только мини-карточка добавления, то соответствующая системная настройка не требуется.

Описание примера

Создать пользовательскую мини-карточку добавления новой записи в раздел [Продукты]. Мини-карточка должна добавлять базовый набор полей [Название] и [Код].

Исходный код

Пакет со схемой мини-карточки раздела [Продукты], реализующей этот пример, вы можете скачать по ссылке.

Алгоритм реализации кейса

1. Создание схемы представления модели мини-карточки

В разделе [Конфигурация] ([Configuration]) на вкладке [Схемы] ([Schemas]) выполните команду меню [Добавить] — [Расширенные] — [Схема модели представления карточки] ([Add] — [Additional] — [Schema of the Edit Page View Model]) (рис.1).

Рис. 1. — Добавление схемы представления мини-карточки

Для схемы представления мини-карточки заполните ее свойства (рис. 2).

  • [Название] — "UsrProductMiniPage".
  • [Заголовок] — "Мини-карточка продукта" ("Product Mini Page").
  • [Пакет] — пользовательский пакет, в котором ведется разработка, например, Custom.
  • [Родительский объект] — схема BaseMiniPage из пакета NUI.

Рис. 2. — Свойства схемы модели представления мини-карточки

2. Регистрация мини-карточки в базе данных

Для внесения изменений в базу данных выполните следующий SQL-запрос.

DECLARE 
    -- Название схемы представления создаваемой мини-карточки.
    @ClientUnitSchemaName NVARCHAR(100) = 'UsrProductMiniPage',
    -- Название схемы объекта, к которому привязывается мини-карточка.
    @EntitySchemaName NVARCHAR(100) = 'Product'

UPDATE SysModuleEdit
SET MiniPageSchemaUId = (
    SELECT TOP 1 UId
    FROM SysSchema
    WHERE Name = @ClientUnitSchemaName
)
WHERE SysModuleEntityId = (
    SELECT TOP 1 Id
    FROM SysModuleEntity
    WHERE SysEntitySchemaUId = (
        SELECT TOP 1 UId
        FROM SysSchema
        WHERE Name = @EntitySchemaName
            AND ExtendParent = 0
    )
);

Результатом выполнения данного запроса будет уникальный идентификатор мини-карточки, записанный в таблице SysModuleEdit в поле MiniPageSchemaUId записи, соответствующей разделу [Продукты] (рис.3).

Рис. 3. — Значение уникального идентификатора мини-карточки в таблице SysModuleEdit

ВАЖНО

Поскольку изменения выполнялись непосредственно в базе данных, то для того, чтобы bpm'online узнала о них, необходимо выполнить повторный вход в систему. В некоторых случаях требуется перекомпиляция приложения из раздела [Конфигурация].

3. Отображение полей основного объекта

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

define("UsrProductMiniPage", ["UsrProductMiniPageResources"],
    function(resources) {
        return {
            entitySchemaName: "Product",
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            attributes: {
                "MiniPageModes": {
                    "value": [this.Terrasoft.ConfigurationEnums.CardOperation.ADD]
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "parentName": "MiniPage",
                    "propertyName": "items",
                    "name": "Name",
                    "values": {
                        "isMiniPageModelItem": true,
                        "layout": {
                            "column": 0,
                            "row": 1,
                            "colSpan": 24
                        },
                        "controlConfig": {
                            "focused": true
                        }
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "MiniPage",
                    "propertyName": "items",
                    "name": "Code",
                    "values": {
                        "isMiniPageModelItem": true,
                        "layout": {
                            "column": 0,
                            "row": 2,
                            "colSpan": 24
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    });

Здесь атрибуту MiniPageModes, объявленному в базовой схеме, присваивается массив, содержащий коллекцию необходимых операций, выполняемых мини-карточкой. В массив модификаций diff добавлены два объекта, которые конфигурируют поля [Название] и [Код].

К СВЕДЕНИЮ

Если кроме операции добавления новой записи требуется отображение мини-карточки на странице раздела (см. "Создание мини-карточки"), то в массив, присваиваемый атрибуту MiniPageModes, также необходимо добавить значение this.Terrasoft.ConfigurationEnums.CardOperation.VIEW.

ВАЖНО

Если обязательные колонки объекта не указаны в массиве diff, то они будут выведены внизу мини-карточки.

В результате выполнения примера при добавлении нового продукта будет отображаться мини-карточка с двумя полями (рис. 4).

Рис. 4. — Мини-карточка добавления продукта

После сохранения мини-карточки соответствующая запись появится в реестре раздела (рис. 5).

Рис. 5. — Запись в разделе [Продукты]

ВАЖНО

Запись в реестре раздела будет отображена только после обновления страницы браузера. Чтобы запись отображалась сразу же после сохранения мини-карточки, необходимо добавить соответствующую функциональность в схему мини-карточки и страницы раздела, используя механизм сообщений ("Sandbox. Обмен сообщениями между модулями").

 

 

 

 

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?