Вы упомянули, что плагины будут «вызываться из рабочего процесса в CRM», что может означать несколько разных вещей:
- Вы зарегистрировали плагин для определенного объекта / сообщения, и рабочий процесс вызовет это сообщение, вызывая тем самым ваш подключаемый модуль.
- Вы зарегистрировали настраиваемое действие рабочего процесса и собираетесь вызывать его как шаг в рабочем процессе.
У вас есть несколько различных вариантов хранения информации о конфигурации (например, URL-адрес конечной точки службы и т. Д.):
- Жесткий код этих данных в сборке.
- Создание объекта конфигурации в CRM и получение соответствующих записей конфигурации во время выполнения с использованием веб-службы CRM (т. Е. Экземпляра IOrganizationService из контекста).
- Создание настраиваемого действия в CRM, котороевозвращает информацию о конфигурации ( ссылка ).
- Для плагина передайте информацию о конфигурации конструктору плагина, добавив информацию to шаги «Небезопасная конфигурация» или «Безопасная конфигурация» при регистрации шагов сборки модуля с помощью инструмента регистрации плагинов.
- Для пользовательского рабочего процесса передайте информацию о конфигурации в действие через InParameter.Аргумент.
У каждого из этих подходов есть свои плюсы и минусы, которые зависят от множества факторов, которые зависят от вашего сценария:
- Как вы обрабатываете другие битыинформации о конфигурации в вашем развертывании?
- Если вы уже используете объект конфигурации или настраиваемое действие, может быть предпочтительнее добавить туда новое поле, чем «скрывать» информацию о конфигурации на этапах регистрации плагина (и наоборот).
- Как изменится информация о конфигурации в разных средах / организациях?
- Если конфигурация статическая и «никогда» ее не нужно изменять, вы можете жестко закодировать ее в сборку.
- Если конфигурация статическая и вы используете штекерво-вторых, вы можете поместить информацию в регистрацию плагина, и ее можно перенести как часть решения.
- Какую версию CRM вы используете?
- Настраиваемые действия доступны только с CRM 2013 года.
- Нужно ли решение работать в автономных сценариях?
- Пользовательские действия могут не работать в таких сценариях.
- Сколько различных шагов плагина необходимо зарегистрировать?/ Сколько процессов будет использовать пользовательскую активность рабочего процесса?
- Если их много, то может оказаться невозможным указывать информацию в каждом месте, где она необходима, и объект конфигурации / действие могут быть предпочтительнее.
- Ктобудет иметь доступ (и кому нужно) изменить информацию о конфигурации?
- Если вы используете настраиваемое действие и нетехнические бизнес-пользователи имеют доступ к изменению рабочих процессов, использующих это действие, то вам может не потребоваться передавать информацию в качестве параметра в действие (из-завозможность введения пользовательской ошибки).
- Каков профиль производительности модуля plug-in / custom?
- Если вам нужна максимальная производительность, вы можете не захотеть получать информацию о конфигурации из пользовательского объекта или действия.
И т. Д.