<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Dynamics CRM и не только... : Callout</title><link>http://blogs.technet.com/ansle/archive/tags/Callout/default.aspx</link><description>Tags: Callout</description><dc:language>ru</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Workflow против Callouts</title><link>http://blogs.technet.com/ansle/archive/2007/07/17/workflow-callouts.aspx</link><pubDate>Tue, 17 Jul 2007 07:07:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:1537345</guid><dc:creator>Andrey Slepitsky</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/ansle/comments/1537345.aspx</comments><wfw:commentRss>http://blogs.technet.com/ansle/commentrss.aspx?PostID=1537345</wfw:commentRss><description>&lt;P&gt;Microsoft Dynamics CRM 3.0 предоставляет ряд возможностей, которые позволяют расширить функционал системы в области автоматизации бизнес-процессов. К таким возможностям можно отнести использование .NET сборок для расширения функционала Workflow и создание специальных процедур - Callout. .NET сборка - библиотека, которая с помощью конфигурационного файла один раз подключается к системе, а, затем, функционал данной библиотеки можно использовать сколь угодно много раз не будучи разработчиком. Callout-ы - по сути, триггеры,&amp;nbsp;которые позволяют "повесить" дополнительные обработчики на различные события, такие как:&amp;nbsp;создание, обновление, слияние и т.д.&amp;nbsp;(кстати, кто сдавал локализованный вариант экзамена Customization знает, что в переводе Callout - выноска :) ). Callout-ы&amp;nbsp;также&amp;nbsp;подключаются с помощью конфигурационного файла, но, для того, чтобы использовать их функционал, необходимо знать, как устроена данная библиотека/процедура и ее использование невозможно через редактор бизнес-процессов Workflow Manager. Соответственно, очень часто встает вопрос: "Какое средство необходимо использовать для решения данной конкретной задачи?". И иногда принимается неверное решение, что ведет к дальнейшему переделыванию системы, увеличения срока внедрения, росту расходов на проект и т.д. Чтобы снизить данные риски, давайте посмотрим, когда лучше использовать Workflow, а когда - Callout-ы.&lt;/P&gt;
&lt;P&gt;Надо понимать, что любое бизнес-правило, которое задается с помощью Workflow, может быть также задано и&amp;nbsp;с помощью Callout-ов. Разница только в способе подключения&amp;nbsp;библиотеки&amp;nbsp;и возможность использования данного правила в дальнейшем бизнес-аналитиком (т.е. человеком, который не является разработчиком и не знает как писать на .NET) с помощью Workflow Manager.&lt;/P&gt;
&lt;P&gt;Если нам надо, чтобы наше правило&amp;nbsp;мы могли использовать в дальнейшем, и люди, которые будут использовать это правило, не являются разработчиками и не знают систему очень глубоко, то предпочтительней использовать Workflow. Действительно, подключение .NET сборки к системе занимает чуть больше 10 строчек в конфигурационном файле. А после этого данное правило будет доступно для всех бизнес-аналитиков, которые используют Workflow Manager. При этом, конечно,&amp;nbsp;надо учитывать, что есть ряд ограничений, присущих именно .NET сборкам:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Одно из самых главных - асинхронный режим работы. Т.е. мы не можем заранее предсказать, когда&amp;nbsp;закончится выполнение того или иного правила. По сути, все правила Workflow попадают в очередь и постепенно исполняются. Соответственно, &lt;STRONG&gt;НЕЛЬЗЯ &lt;/STRONG&gt;(или точнее, не рекомендуется) использовать .NET сборки для синхронизации данных между Microsoft Dynamics CRM и сторонними системами.&lt;/LI&gt;
&lt;LI&gt;Другое ограничение (не менее важное) - количество событий, по которым может срабатывать правило. Это&amp;nbsp;Создание объекта&amp;nbsp;(Create), Назначение другому пользователю (Assign To), Изменение статуса (Change). Кроме того, существует возможность ручного запуска (Manual)&amp;nbsp;правила.&lt;/LI&gt;
&lt;LI&gt;Можно создавать workflow правила для собственных объектов, но только для тех, за которые отвечают пользователи (т.н. User-owned). Примерами user-owned объектов являются: Организации, Контакты, Возможные сделки и т.д.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Таким образом, если нам&amp;nbsp;можно использовать асинхронный режим работы в нашей бизнес-логике,&amp;nbsp;мы хотим запускать обработчик при наступлении одного из трех условий (Create, Assign To, Change) или&amp;nbsp;вручную, работаем с сосбтвенными объектами,&amp;nbsp;за которые отвечают пользователи, и хотим в дальнейшем использовать это правило через Workflow Manager, то можно воспользоваться .NET сборками.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Если же нам требуется синхронный режим работы (синхронизация данных между системами) или требуется запускать обработчик по условию, которого нет в Workflow Manager, или мы хотим как-либо обработать данные &lt;STRONG&gt;ДО&lt;/STRONG&gt; их передачи в систему или мы работаем с собственными объектами, за которые отвечает организация (т.н. org-owned), то в этом случае мы обязаны использовать механизм Callout-ов.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=1537345" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/ansle/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blogs.technet.com/ansle/archive/tags/Callout/default.aspx">Callout</category></item></channel></rss>