Я пытаюсь написать поведение, которое даст моим моделям доступ к простому механизму рабочего процесса, который я разработал. Сам механизм рабочего процесса работает как модель CakePHP, данные рабочего процесса хранятся в базе данных так же, как и любые другие данные модели.
По сути, я хочу, чтобы поведение использовало модель рабочего процесса всякий раз, когда в базовой модели вызывается действие. Например, если действие edit () выполняется для сообщений, то сообщение (с прикрепленным поведением) запустит поведение рабочего процесса с собственным именем модели, действием и идентификатором в качестве аргументов (например, [Post, edit, 1]) , Затем поведение вызовет функциональность модели Workflow, в которой есть запись о том, что делать, когда редактирование запускается в сообщениях (например, отправка электронной почты пользователям, которые подписаны на это сообщение), и выполняет это.
Мой вопрос таков: как правильно вызывать методы модели / контроллера изнутри поведения? Модель, которая будет использоваться в поведении, всегда будет Workflow, но поведение должно быть применимо практически из любой модели (кроме самого Workflow). Я знаю, что мог запускать SQL-запросы напрямую из поведения, но, конечно, это не Cake-способ: -)
Или я поступаю неправильно? Я хочу сохранить определенное количество логики в базе данных, чтобы ее можно было легко настраивать разными пользователями, и не иметь бесконечных проверок конфигурации в самой логике модели / контроллера, чтобы в будущем можно было легко добавлять / изменять / удалять шаги рабочего процесса .