Friday, January 06, 2006

ECOIII State Machines

Сами по себе State машины не делают ничего, кроме сохранения состояния конкретного экземпляра сущности. Т.е. удобно хранить что-то типа состояния заказа и т.д. Самое интересное начинается потом, когда рарабочик начинает работать с триггерами, защитниками (guards). Это ОЧЕНЬ мощное средство, которое (иногда) позволяет вообще отказаться от реализации бизнес-логики на языке программирования. Т.е. вообще все может хранится в модели. Голубая мечта MDA :)

Один момент, который надо учитывать при использовании State Machine. При описании состояний надо быть очень осторожным. Как известно у state диаграммы есть начальное состояние, промежуточные состояния и конечное состояние. Так вот, тут такая незадача, конечное состояние означает уничтожение экземпляра сущности, перешедшей в это состояние.

4 comments:

Anonymous said...

Насколько я понял, побочным эффектом State Machine стал исполняемый OCL.
И это очень здорово. Стало возможным даже задавать OCL для операций класса.
Но...
Явно видно, что в синтаксисе OCL не хватает цикла. Может я чего-то не понимаю?
Ведь в документации и конструкция
if then
else
endif
практически не упоминается.

Eugene Danilenko said...

Ну итераторы то никто не отменял. И потом в ECO, даже с нововедениями ECOIII, OCL реализован, мягко скажем, далеко не весь.

Да, кстати, на Вашем форуме, под ником Колобок скрываюсь не я.

Anonymous said...

:)
Итераторы...
Можно, конечно, но неудобно.
Как на первом курсе института.
Если язык поддерживает условие, переход и присваивание, то на нем можно реализовать практически любой алгоритм.
---
Тогда приходите, на форум, поддержите разговор. Будем рады Вас видеть.
А-то такое впечатление что во всем Рунете 2-3 человека пытаются что-то на ECO делать :(

Anonymous said...

Я попытался ответить по поводу итераторов:
http://www.mda-delphi.ru/forums/viewforum.php?f=3
Тема: Update OCL

seg