Общий рабочий процесс - вопрос / рабочий процесс компонентов ez
Я искал движок рабочего процесса, написанный на php, и нашел компоненты рабочего процесса ez-компонентов ( http://ezcomponents.org/docs/api/latest/introduction_Workflow.html). После работы с примерами у меня возникли две общие проблемы с пониманием (общей) функциональности workflow:
1.) Если я определил общий рабочий процесс (например, для публикации статьи после рецензирования) - каждая опубликованная статья фактически запускает новый "экземпляр" моего общего рабочего процесса публикации. Это правильно? Или как мне справиться с этим, когда один и тот же рабочий процесс используется для множества разных статей / наборов данных?
2.) Как базовое приложение должно работать с компонентом workflow? Если в процессе публикации электронное письмо необходимо отправить человеку, который должен просмотреть статью, - где размещен код для отправки этого электронного письма? Это правильный подход для отправки электронной почты непосредственно в рабочем процессе, например, в методе execute в WorkflowServiceObject? Или отправка электронного письма только что помещена в код приложения (после сохранения статьи или установки состояния статьи) и состояние рабочего процесса должно быть установлено на следующий узел / уровень после отправки электронного письма?
Спасибо за ответ (и извините за мой плохой английский;-))!
Timo
1 ответ
Я также новичок в рабочем процессе eZc, но я думаю, что могу помочь, по крайней мере, я тоже хочу.
- Вначале в рабочем процессе компонентов eZ ясно, что вам нужно сохранить определение рабочего процесса в базе данных с помощью класса ezcWorkflowDatabaseDefinitionStorage, для каждой статьи вы должны начать выполнение своего рабочего процесса с помощью ezcWorkflowDatabaseExecution, как вы сказали, что для каждой статьи нужно запускать экземпляр. Но как отслеживать каждый случай, когда у вас много статей? У вас есть сущность, над которой работает рабочий процесс, здесь ваша сущность - это ваша статья, поэтому вам нужно связать свою статью с вашим экземпляром рабочего процесса, например, ваша статья может иметь идентификатор вашего экземпляра рабочего процесса.
- Если когда-либо вы захотите сделать что-то вроде отправки электронной почты или... вам нужно использовать WorkflowServiceObject, тогда, когда каждый из нас хочет что-то сделать в одном узле рабочего процесса, мы используем ezcWorkflowNodeAction и присваиваем ему класс на основе ezcWorkflowServiceObject.
Еще одна вещь, я знаю, что это был пример в вашем вопросе, но позвольте мне сказать, что отправка электронного письма в процессе обслуживания пользователей не является хорошей идеей, лучше поместить сообщение в очередь и получить задание cron для отправлять электронные письма из очереди в запланированном процессе.