Изменение класса (CHANGECLASS, DELETE)
Оператор изменения класса создает действие, которое устанавливает заданный класс всем объектам, значение некоторого свойства (условия) которых не равно NULL
. Условие можно не задавать, в этом случае оно считается равным TRUE
.
Также в платформе существует встроенное действие changeClass
с двумя параметрами: первый определяет объект, для которого необходимо изменить класс, а второй определяет объект нового класса. Так как при ис пользовании встроенного действия определить возможные значения нового класса значительно сложнее, чем в случае с оператором (для которого новый класс задается явно), рекомендуется использовать именно оператор (а не встроенное действие)
Если существуют не NULL
значения некоторых первичных свойств, для которых "изменяемый" объект присутствует в параметрах или самом значении и не подходит по классам, такие значения автоматически изменяются на NULL
.
Реализуется такое поведение по аналогии с вычисляемыми и простыми событиями.
Язык
Для объявления действия, реализующего изменение классов объектов, используется оператор CHANGECLASS
или оператор DELETE
.
Примеры
// удаление объекта
deleteObject(obj) { DELETE obj; }
// удаление всех неактивных товаров
CLASS Article;
active = DATA BOOLEAN (Article);
deleteInactiveArticles() {
// добавляется локальный параметр a, соответствующий перебираемым объектам
DELETE Article a WHERE a IS Article AND NOT active(a);
}
CLASS Document;
date = DATA DATE (Document);
CLASS ClosedDocument : Document;
// переводит все документы с датой старше 2-х недель в статус закрыт
changeStatus() {
CHANGECLASS Document d TO ClosedDocument WHERE sum(date(d), 14) <= currentDate();
}