Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Developer Toolkit для CRM 2011 - Первые впечатления
Запись от Артем Enot Грунин размещена 29.10.2011 в 15:31
Обновил(-а) Артем Enot Грунин 29.10.2011 в 15:35
Обновил(-а) Артем Enot Грунин 29.10.2011 в 15:35
Теги development, visual studio
Одной из ключевых фишек CRM 2011, как платформы разработки, должна была стать интеграция с IDE Microsoft Visual Studio, которую нам обещали уже довольно давно. Данный инструмент появился в одной из реинкарнаций CRM 2011 SDK: его инсталлятор и инструкции находятся в каталоге \sdk\tools\developertoolkit\.
В отличие от подобного инструмента для CRM 4.0, он работает! То есть правда инсталлируется и работает без бубна, скриптов командной строки и дополнительных манипуляций. Версию для CRM 4.0 мне, к слову, так и не удалось нормально инсталлировать. Инструмент, как и ранее, состоит из двух компонент:
1. Шаблоны проектов и солюшена CRM для языков C# и VB
2. CRM Explorer, который позволяет выполнять подключение к системе, просматривать (теперь только просматривать) ее компоненты прямо в окне Visual Studio, а так же предоставляет контекстные команды для некоторых из них, например, подключение Веб ресурса к текущему проекту.
Текущая версия инструмента не совсем стабильна и функциональна, но использовать этот инструмент, действительно, довольно удобно. Особенно приятно, что инструмент проектировали под развитие, так что возможно, вскоре мы сможем расширять его своими дополнениями. Например, автоматически выполнять какие-то действия до, после или во время развертывания Решения (публиковать все настройки, копировать сборки, обновлять версию Решения и т.д.).
Теперь обо всем по порядку...
1. Проект типа CRM Package
Проекты данного типа используются вкупе со всеми прочими. Для них доступна команда Deploy - развертывание новой версии решения на сервере CRM. Так же они содержат компонент RegisterFile.crmregister. В этом XML файле содержится информация о сборках, плагинах и их шагах, активностях процессов и пр. из других проектов, которые нужно развернуть в процессе установки решения.
Так же в этот проект можно добавлять веб ресуры, для солюшена CRM: файлы сценариев, картинки и пр. Для этого можно подключать к проекту существующие ресурсы из контекстного меню CRM Explorer или добавлять новые прямо из интерфейса студии. В обоих случаях можно задавать все CRM - специфичные свойства ресурсов, такие как название, отображаемое имя и пр.
2. Проект типа Плагин.
Как понятно из названия, это проект сборки .NET для создания плагина. Этот проект так же содержит довольно навороченный шаблон для базового класса плагинов Plugin, который можно использовать в проекте. Логика этого класса инстанцирует для вас все необходимые сервисы, включая сервис трассировки, и контекст запуска плагина. Так же класс автоматически ведет трассировку событий в коде, делает обработку исключений, осуществляет различные проверки на предмет корректности срабатывания плагина и даже собирает информацию о том, на какие еще события подписан плагин. Словом, есть чему поучиться. Готовые к использованию классы наследники очень удобно создавать прямо из контекстного меню CRM Explorer, для этого достаточно щелкнуть правой кнопкой на нужной сущности.
Шаги плагина, если он универсальный для нескольких объектов, или событий, можно добавлять в CRM Explorer. Так же, возможно, потребуется фиксировать их в коде конструктора и в RegisterFile.crmregister
3. Проект Workflow.
Удобный преднастроенный проект библиотеки кастомных шагов для процессов CRM. Так же содержит шаблон Активности процесса CRM в конструкторе которой инстанцируются необходимые объекты. Шаблон не так наворочен, как в случае с плагином, но и специфика у него другая. Как минимум он экономит время и нервы на подключение и объявление необходимых типов и строки кода.
4. Проект Silverlight
Данный проект входит в состав Silverlight Tools for Visual Studio, а не CRM Developer Toolkit, поэтому для использования этого шаблона проекта, данный пакет потребуется установить отдельно (CRM Developer Toolkit предупредит вас об этом во время установки). После включения этого проекта в решение, вы можете добавить референс на него в проект CRM Package, после чего Silverlight приложение можно будет добавить в веб ресурсы Решения CRM. В результате ваш Silverlight контрол будет развертываться в CRM вместе с остальными компонентами решения.
Так же можно добавить в решение уже существующие Silverlight пакеты через контекстное меню CRM Explorer.
В окне свойств этого ресурса можно задать его CRM - специфичные поля: имя ресурса, отображаемое имя и т.д.
Недостатки и текущие ограничения CRM Developer Toolkit.
Не обошлось в бочке меда и без ложки дегтя.
1. Сбой развертывания при неправильной компоновке пакета.
Первая проблема с которой вы можете столкнуться, возникает при использовании шаблона солюшена CRM. При создании этого решения, в него автоматически будут включены проекты всех перечисленные выше типов. Кроме того, они будут заранее включены в пакет развертывания Решения CRM. Если при этом вы, например, не определили ни одной Активности рабочего процесса, то развертывание пакета в системе может падать с ошибками типа "Сборка не подписана" или "сборка не найдена". Связано это с тем что в RegisterFile.crmregister включены шаги развертывания сборки Workfow, которая отсутствует на выходе проекта Workfow.
При возникновении первой ошибки развертывание прекращается, так что обновлены или развернуты будут только те проекты, установка которых была произведена до возникновения ошибки. Решение - удалить из RegisterFile все лишние объявления и, если нужно, лишние проекты.
2. CRM Explorer не умеет создавать классы раннего связывания.
К сожалению, разработчики не снабдили CRM Explorer такой возможностью, поэтому генерировать прокси классы и их контекст придется самостоятельно. Данное упущение не является ошибкой, но этот функционал хотелось бы видеть в следующих версиях.
3. Нет поддержки Xrm.PageScriptProject
К CRM Package можно подключать библиотеки сценариев JavaScript, но нет встроенной поддержки другого решения CRM for VS: Xrm.PageScriptProject. О том как обойти это ограничение, и что представляет собой само решение, я расскажу в одной из следующих статей.
4. Нет редактора процессов.
В CRM 2011 заявлена поддержка XAML и редактора процессов Visual Studio. Данный феномен мной изучен слабо, но каких либо контекстных команд CRM Explorer и шаблонов диаграмм процессов в решении я не встретил. Это значит что "рисовать мышью" сложные процессы не выходя из студии у нас пока не получится.
5. Не подключен проект отчетов.
Не сильно большой пробел, но все же данная область не охвачена. Было бы удобно хранить и обновлять отчеты как часть решения.
6. Слабые возможности CRM Explorer.
Если мне не изменяет память, CRM Explorer прошлой версии был чуть более функционален. С его помощью можно было производить настройку системы: добавлять атрибуты, настраивать формы и т.д. Для этого было бы достаточно встроить в решение стандартные CRM формы.
Так же в дереве CRM Explorer отображаются все настройки системы. Было бы удобно иметь возможность просмотра и кастомизации конкретного решения. Лучше всего было бы встроить окно решения, как вкладку в VS.
7. Нет возможности править XML решения
Для того, чтобы внести модификации в рибоны, метки локалий, SiteMap и т.д. приходится экспортировать решение. Было бы удобно иметь эту возможность в окне VS, да еще и с валидацией схемы! Впрочем, эта проблема частично снимается внешними утилитами.
Подводя итог скажу, что решение мне очень понравилось, хотя ему и есть куда расти. Если есть желающие присоединиться, можно попробовать внести перечисленные предложения на MS Connect и проголосовать всем форумом. Возможно нас даже услышат?
Как всегда призываю всех желающих дискутировать в комментариях.
В отличие от подобного инструмента для CRM 4.0, он работает! То есть правда инсталлируется и работает без бубна, скриптов командной строки и дополнительных манипуляций. Версию для CRM 4.0 мне, к слову, так и не удалось нормально инсталлировать. Инструмент, как и ранее, состоит из двух компонент:
1. Шаблоны проектов и солюшена CRM для языков C# и VB
2. CRM Explorer, который позволяет выполнять подключение к системе, просматривать (теперь только просматривать) ее компоненты прямо в окне Visual Studio, а так же предоставляет контекстные команды для некоторых из них, например, подключение Веб ресурса к текущему проекту.
Текущая версия инструмента не совсем стабильна и функциональна, но использовать этот инструмент, действительно, довольно удобно. Особенно приятно, что инструмент проектировали под развитие, так что возможно, вскоре мы сможем расширять его своими дополнениями. Например, автоматически выполнять какие-то действия до, после или во время развертывания Решения (публиковать все настройки, копировать сборки, обновлять версию Решения и т.д.).
Теперь обо всем по порядку...
1. Проект типа CRM Package
Проекты данного типа используются вкупе со всеми прочими. Для них доступна команда Deploy - развертывание новой версии решения на сервере CRM. Так же они содержат компонент RegisterFile.crmregister. В этом XML файле содержится информация о сборках, плагинах и их шагах, активностях процессов и пр. из других проектов, которые нужно развернуть в процессе установки решения.
Так же в этот проект можно добавлять веб ресуры, для солюшена CRM: файлы сценариев, картинки и пр. Для этого можно подключать к проекту существующие ресурсы из контекстного меню CRM Explorer или добавлять новые прямо из интерфейса студии. В обоих случаях можно задавать все CRM - специфичные свойства ресурсов, такие как название, отображаемое имя и пр.
2. Проект типа Плагин.
Как понятно из названия, это проект сборки .NET для создания плагина. Этот проект так же содержит довольно навороченный шаблон для базового класса плагинов Plugin, который можно использовать в проекте. Логика этого класса инстанцирует для вас все необходимые сервисы, включая сервис трассировки, и контекст запуска плагина. Так же класс автоматически ведет трассировку событий в коде, делает обработку исключений, осуществляет различные проверки на предмет корректности срабатывания плагина и даже собирает информацию о том, на какие еще события подписан плагин. Словом, есть чему поучиться. Готовые к использованию классы наследники очень удобно создавать прямо из контекстного меню CRM Explorer, для этого достаточно щелкнуть правой кнопкой на нужной сущности.
Шаги плагина, если он универсальный для нескольких объектов, или событий, можно добавлять в CRM Explorer. Так же, возможно, потребуется фиксировать их в коде конструктора и в RegisterFile.crmregister
3. Проект Workflow.
Удобный преднастроенный проект библиотеки кастомных шагов для процессов CRM. Так же содержит шаблон Активности процесса CRM в конструкторе которой инстанцируются необходимые объекты. Шаблон не так наворочен, как в случае с плагином, но и специфика у него другая. Как минимум он экономит время и нервы на подключение и объявление необходимых типов и строки кода.
4. Проект Silverlight
Данный проект входит в состав Silverlight Tools for Visual Studio, а не CRM Developer Toolkit, поэтому для использования этого шаблона проекта, данный пакет потребуется установить отдельно (CRM Developer Toolkit предупредит вас об этом во время установки). После включения этого проекта в решение, вы можете добавить референс на него в проект CRM Package, после чего Silverlight приложение можно будет добавить в веб ресурсы Решения CRM. В результате ваш Silverlight контрол будет развертываться в CRM вместе с остальными компонентами решения.
Так же можно добавить в решение уже существующие Silverlight пакеты через контекстное меню CRM Explorer.
В окне свойств этого ресурса можно задать его CRM - специфичные поля: имя ресурса, отображаемое имя и т.д.
Недостатки и текущие ограничения CRM Developer Toolkit.
Не обошлось в бочке меда и без ложки дегтя.
1. Сбой развертывания при неправильной компоновке пакета.
Первая проблема с которой вы можете столкнуться, возникает при использовании шаблона солюшена CRM. При создании этого решения, в него автоматически будут включены проекты всех перечисленные выше типов. Кроме того, они будут заранее включены в пакет развертывания Решения CRM. Если при этом вы, например, не определили ни одной Активности рабочего процесса, то развертывание пакета в системе может падать с ошибками типа "Сборка не подписана" или "сборка не найдена". Связано это с тем что в RegisterFile.crmregister включены шаги развертывания сборки Workfow, которая отсутствует на выходе проекта Workfow.
При возникновении первой ошибки развертывание прекращается, так что обновлены или развернуты будут только те проекты, установка которых была произведена до возникновения ошибки. Решение - удалить из RegisterFile все лишние объявления и, если нужно, лишние проекты.
2. CRM Explorer не умеет создавать классы раннего связывания.
К сожалению, разработчики не снабдили CRM Explorer такой возможностью, поэтому генерировать прокси классы и их контекст придется самостоятельно. Данное упущение не является ошибкой, но этот функционал хотелось бы видеть в следующих версиях.
3. Нет поддержки Xrm.PageScriptProject
К CRM Package можно подключать библиотеки сценариев JavaScript, но нет встроенной поддержки другого решения CRM for VS: Xrm.PageScriptProject. О том как обойти это ограничение, и что представляет собой само решение, я расскажу в одной из следующих статей.
4. Нет редактора процессов.
В CRM 2011 заявлена поддержка XAML и редактора процессов Visual Studio. Данный феномен мной изучен слабо, но каких либо контекстных команд CRM Explorer и шаблонов диаграмм процессов в решении я не встретил. Это значит что "рисовать мышью" сложные процессы не выходя из студии у нас пока не получится.
5. Не подключен проект отчетов.
Не сильно большой пробел, но все же данная область не охвачена. Было бы удобно хранить и обновлять отчеты как часть решения.
6. Слабые возможности CRM Explorer.
Если мне не изменяет память, CRM Explorer прошлой версии был чуть более функционален. С его помощью можно было производить настройку системы: добавлять атрибуты, настраивать формы и т.д. Для этого было бы достаточно встроить в решение стандартные CRM формы.
Так же в дереве CRM Explorer отображаются все настройки системы. Было бы удобно иметь возможность просмотра и кастомизации конкретного решения. Лучше всего было бы встроить окно решения, как вкладку в VS.
7. Нет возможности править XML решения
Для того, чтобы внести модификации в рибоны, метки локалий, SiteMap и т.д. приходится экспортировать решение. Было бы удобно иметь эту возможность в окне VS, да еще и с валидацией схемы! Впрочем, эта проблема частично снимается внешними утилитами.
Подводя итог скажу, что решение мне очень понравилось, хотя ему и есть куда расти. Если есть желающие присоединиться, можно попробовать внести перечисленные предложения на MS Connect и проголосовать всем форумом. Возможно нас даже услышат?
Как всегда призываю всех желающих дискутировать в комментариях.
Всего комментариев 5
Комментарии
-
Доброго дня и хорошего настроения!
Дискутировать особо не о чем, так как описание более чем подробное, однако, хотел бы просить по возможности (понимая, что статья писана давненько) изложить суть установки описанного решения. Интересует буквально следующее:
- область развертывания (развертывали на личной рабочей станции, либо непосредственно на сервере, либо в отдельной зоне тестов);
- конфигурация среды, на которой происходило развертывание (версия-битность OS, версия Visual Studio, были ли испробованы варианты различных сочетаний версий программных компонент);
- были ли соблюдены все требования наличия необходимых Prerequisites, описанные в руководстве (ReadMe) по развертыванию.
Интерес чисто практический, так как совсем "свежие" мои попытки развернуть описываемый компонент сталкивается с неожиданной проблемой: установщик настаивает на том, что VisualStudio не установлен и установку производить отказывается. Хотя совершенно точно студия SP1 стоит. Подробный гуглинг вопроса результатов не дает, кроме некоторых упоминаний на одном из блогов, что якобы описанный компонент не ставится на 64-битную ось. В документации по этому поводу никаких прямых требований не высказано.
Спасибо!Запись от Likefire размещена 05.10.2012 в 10:39 -
Приветствую, Likefire! Давно вас, однако, не было на форуме. Проблемы установки могли быть у бета версии данного компонента, релиз у меня установился без проблем. Посмотрите на версию своего SDK, возможно пора скачать что-то посвежее?
Припоминаю, что он, кажется, предпочитает английскую VS но тут воспоминания весьма смутные, так как, вы правы, статья была написана очень давно.
Битность студии может быть только x32, битность ОС - на всех моих инсталляциях x64. И на Win7 x64 и на WinServer 2008R2 x64 компонент и студия чувствует себя хорошо.Запись от Артем Enot Грунин размещена 05.10.2012 в 18:53 -
И снова здравствуйте!
Отрадно, что меня помнят. Я бывал на форуме, однако не постил ничего в силу внутренних изменений и борьбы с противоречиями. Но не об этом здесь...
Версия SDK самая что ни на есть распоследняя. Грешу на конфигурацию своего компа - скорее всего в ней дело. На совершенно иной машине всё развернулось без нареканий. Снос-переустановка VS эффекта не возымели. Думаю, тратить время на фиксинг смысла не имеет,- запостил проблему в комьюнити на страничке с данными об установке Tools (может кто отзовется): http://msdn.microsoft.com/en-us/library/hh547459.aspxЗапись от Likefire размещена 08.10.2012 в 09:40 -
а почему вы говорите, что классы раннего связывания не генерируются автоматически. Если нажать правой кнопкой в CRM Explorer на Entities будет меню Generate Wrapper.
Это не то, о чем Вы говорите?Запись от g.Naukovych размещена 12.03.2013 в 11:37 -
Запись от Артем Enot Грунин размещена 12.03.2013 в 23:01