mybpm!
Скачать в формате: PDF pdf DOCX word

Общая логика

Новая концепция формы - новый способ работы с формой, которая поменяла способ общения между сервером и клиентом, а именно коммуникация между ними происходит в форме запрос/команды. Клиент делает запрос и получает список команд, которых ему надо выполнить.

В новой концепции появилась иерархия форм - теперь есть такие понятия, как родительские и дочерние формы.

Если форма была создана не с другой формы, то она является корневой и не имеет родителя.

Если форма была создана с другой формы (поле БО, нажатие на кнопку добавить), то новая созданная (вложенная) форма будет дочерной, а ее родителем будет предыдущая форма

Первый этап

Первый этап сохранении/изменении инстанции - это создание черновика.

Черновик создается в регистре InstanceDraftCreateRegister.

При создании черновика НАДО передать всю полезную информацию про контекст, откуда запрос делается. Под полезной информацией понимается уровень вложенности текущей инстанции, есть ли вообще текущая инстанция (текущей инстанции может и не быть, пример - нажатие на + над таблицой).

При создании черновика происходят следующие события (очередность сохранена):

Копирование с поля

Формулы

Скрипт на открытие формы

Активация ловушки-липучки (объязует пользователя сохранить данную форму)

Второй этап

Второй этап сохранении/изменении инстанции - это изменение черновика.

Данные о полей берутся с регистра InstanceFormRegister

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

InstanceFieldFormRegister

InstanceFieldFormDataRegister

Значение записываются в черновик с помощью метода: InstanceFieldFormRegister.saveBoiFieldValue()

Алгоритм действий внутри вышенаписанного метода следующая:

Проверка всех BoiFieldValueToSave

Обновление участников

Копирование полей

Вычисление формул

Скрипты на изменение полей

Применение изменений

Валидация формы

Третий этап

Третий (и последний) этап сохранении/изменении инстанции - это применение/отмена черновика.

При отмене формы отрабатывается скрипт на закрытие формы.

Также при отмене формы удаляются:

Запрашиваемая форма

Прямые потомки данной формы

Непрямые потомки данной формы

Непрямыми потомками формы являются потомки прямых потомков формы (процесс рекурсивный).

Метод, который отвечает за отмену формы: InstanceDraftRegister.removeDraft()

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

Если форма имеет родителя, то применятся она будет в родительский черновик.

Если форма не имеет родителя, то она применяется в саму инстанцию.

Метод, который отвечает за применение формы: InstanceDraftRegister.validateAndApplyAndRemoveDraft()