Доброго времени суток, уважаемый читатель! И у меня сразу же вопрос: как вы относитесь к архитектуре? А к красивым архитектурным решениям, где каждый кирпичик гармонично вписывается в общую картину. Хорошо, а как вы относитесь к красивым архитектурным решениям в программировании? Тоже положительно? Тогда сегодня я бы хотел поговорить о таком интересном изобретении для force.com платформы.
Эх, как хотелось бы самому додуматься до такого, но увы и ах данное решение было подсмотрено мною на одном из авторитетных форумов salesforce.com. Давайте, не будем тянуть резину, как Сноуден в "Шереметьево", а сразу же изучим данный артикул:
http://developer.force.com/cookbook/recipe/trigger-pattern-for-tidy-streamlined-bulkified-triggers
По своему опыту сужу, что триггер - это штука очень опасная. Почему?
Во-первых, триггер может срабатывать на события CRUD-операций, а вы можете и забыть о таких или просто не учесть в своей бизнес-логике вызов триггера.
Во-вторых,очень часто на больших проектах случаются коллизии, что один триггер может вызывать другой, а все эти перескоки приводят к одному - к вылету по лимитам, с которыми очень сложно бороться (я имею ввиду данный диагноз). К тому же представьте, что таких триггеров у нас 100-отни. Моисей, который повел евреев по пустыне гордился бы таким количеством хитрозапутанных классов. Много - не значит хорошо.
Данное решение позволяет систематизировать вызов триггера в одном месте - поверьте, это очень удачное решение, если количество триггеров у вас больше, чем количество походов в кино за квартал. Плюс ко всему в данном примере были удачно реализованы паттерн Command и паттерн Gateway. (Гибкость такого решения позволяет расширять данную реализацию и для других объектов).
Резюмируя вышесказанное, я бы хотел добавить: совсем не обязательно копировать данную реализацию в безальтернативной точности. Нет, ни в коем случае. Я рекомендую взять все самое лучшее, почеркнуть для себя важное и перенести в свой проект.
Приятного вам коддинга:)
http://developer.force.com/cookbook/recipe/trigger-pattern-for-tidy-streamlined-bulkified-triggers
По своему опыту сужу, что триггер - это штука очень опасная. Почему?
Во-первых, триггер может срабатывать на события CRUD-операций, а вы можете и забыть о таких или просто не учесть в своей бизнес-логике вызов триггера.
Во-вторых,очень часто на больших проектах случаются коллизии, что один триггер может вызывать другой, а все эти перескоки приводят к одному - к вылету по лимитам, с которыми очень сложно бороться (я имею ввиду данный диагноз). К тому же представьте, что таких триггеров у нас 100-отни. Моисей, который повел евреев по пустыне гордился бы таким количеством хитрозапутанных классов. Много - не значит хорошо.
Данное решение позволяет систематизировать вызов триггера в одном месте - поверьте, это очень удачное решение, если количество триггеров у вас больше, чем количество походов в кино за квартал. Плюс ко всему в данном примере были удачно реализованы паттерн Command и паттерн Gateway. (Гибкость такого решения позволяет расширять данную реализацию и для других объектов).
Резюмируя вышесказанное, я бы хотел добавить: совсем не обязательно копировать данную реализацию в безальтернативной точности. Нет, ни в коем случае. Я рекомендую взять все самое лучшее, почеркнуть для себя важное и перенести в свой проект.
Приятного вам коддинга:)