Следует учесть, что в бизнес-сервере может быть вызвано обновление объекта не через возвращаемый массив, а отдельным вызовом сервиса данных. В этом случае, надо учесть то, что бизнес-серверы будут вызываться для этого объекта отдельно.
Агрегатор, детейлы
Если имеется следующая ситуация c детейлами:
то бизнес-сервера при обновлении будут срабатывать в следующем порядке:
- КлассАгрегатор
- КлассДетейл
Наследование
Если имеется следующая ситуация с наследованием:
то бизнес-серверы при обновлении объекта класса Человек
будут срабатывать в следующем порядке:
- Существо
- Животное
- Млекопитающее
- Человек
Интерфейсы
Можно прописать атрибут для привязки бизнес-сервера не только к классу, но и к интерфейсу. В этом случае все объекты класса-наследника от этого интерфейса будут обрабатываться данным бизнес-сервером. Если указано несколько интерфейсов с бизнес-серверами:
public class Class2:Class3, Interface3
{
//...
}
public class Class1:Class2, Interface1, Interface2
{
//...
}
то порядок срабатывания будет таким:
- бизнес-сервер, привязанный к Class3
- бизнес-сервер, привязанный к Interface3
- бизнес-сервер, привязанный к Class2
- бизнес-сервер, привязанный к Interface2
- бизнес-сервер, привязанный к Interface1
- бизнес-сервер, привязанный к Class1
Правила обновления объекта данных
Например, имеется следующая ситуация:
Если в бизнес-сервере для класса Товар
исправлена Фирма-производитель
и возвращена в методе бизнес-сервера, то для фирмы-производителя вызовется её бизнес-сервер. Важно понимать, что запрос для Товара
был уже сгенеририван (это было выполнено сразу после отработки его собственного бизнес-сервера) и в бизнес-сервере Фирмы-производителя
изменять Товар
не следует - новые изменения не будут зафиксированы в БД.