Изменение класса (CHANGECLASS, DELETE)
Оператор изменения класса создает действие, которое присваивает заданный класс всем объектам, удовлетворяющим условию. Условие — выражение от тех же аргументов, что и выражение объекта; его можно не задавать, в этом случае оно считается выполняющимся всегда. Целевой класс должен быть конкретным пользовательским классом.
Родственная форма оператора — удаление — убирает соответствующие объекты из системы вместо присвоения им другого класса.
При изменении класса объекта или его удалении все первичные свойства, чьё сохранённое значение становится недопустимым для объекта — объект входит в аргументы свойства или в его значение, но не подходит под объявленные классы свойства, — автоматически приводятся к 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();
}