Как редактировать CRM Workflow xaml, не нарушая веб-интерфейс
У меня есть рабочий процесс, который был создан с использованием интерфейса рабочего процесса CRM. Каким-то образом пользовательский интерфейс позволил мне создать рабочий процесс с использованием пользовательского действия, в котором SystemUserRole использовался в качестве входной сущности. Вы не можете использовать это как входную сущность, потому что это сущность отношений many2many. Поэтому, хотя пользовательский интерфейс разрешил это изначально, попытка открыть рабочий процесс для его редактирования позже вызывает исключение, говорящее, что CRM не может "получить" сущность SystemUserRole.
Поэтому, поскольку я не мог открыть рабочий процесс в пользовательском интерфейсе, чтобы исправить это, я экспортировал рабочий процесс и отредактировал xaml, используя некоторый пример xaml из другого экспортированного мной рабочего процесса, который ссылался на правильный / предполагаемый тип входной сущности "Роль".
Однако теперь, когда я импортирую рабочий процесс обратно в CRM, пользовательский интерфейс говорит:
Processes designed outside the Microsoft Dynamics CRM web application
cannot be viewed or edited in the web application.
У меня есть пара вопросов по этому поводу:
- Как crm узнал, что рабочий процесс отредактирован? Я использовал CRM, сгенерированный xaml, чтобы исправить проблему и оставил все остальное таким же.
- У меня там хеш или md5 хранятся где-то в экспортированном рабочем процессе?
- Могу ли я сгенерировать новый хеш, чтобы обмануть CRM, думая, что рабочий процесс возник из веб-интерфейса?
1 ответ
Хорошие новости всем! CRM 2011 не знает, редактировали ли вы xaml или нет, нет скрытого хэша или другого механизма, который гарантирует, что импортированный xaml генерируется исключительно CRM.
Однако, если есть какие-либо несоответствия в xaml, появится сообщение, вводящее в заблуждение выше.
В моем случае каждая переменная в рабочем процессе получает уникальное имя TypeArgument. Я не обновил имя, которое я скопировал из рабочего образца xaml, до имени TypeArgument, уже используемого в прерванном рабочем процессе.
Как только я это исправил, CRM успешно импортировал рабочий процесс, и я смог его отредактировать.