Задача:
При завершении подпроцесса возможны варианты окончания, взависимости от результата, которых основной процесс также может развиваться по двум и более ветвям.
Тестовый пример диаграмм процесса и подпроцесса дан в приложенных файлах. Идея не моя она была дана в топике http://community.terrasoft.ua/forum/topic/3566#comment-17027. В том же топике она и была разобрана, но так как обсуждение длинное и по большей части связанное с моей неопытностью в разаработке, то здесь приведу краткий алгоритм реализации и грабли на которые наступал я.
Для передачи результатов завершения подпроцесса была выбрана модель которую предложила Екатерина Мельникова: для передачи информации о результате завершения подпроцесса необходимо создать связанные параметры.
1.Для этого в палитре свойств диаграммы подпроцесса TestSub открываем свойство «Объект» и параметр ResultIDSubProcess с типом «Строка».(Рекомендую кроме «Имени» и типа ничего не трогать)
2. В палитре свойств диаграммы основного процесса Test открываем свойство «Объект» и параметр ResultFromProcess с типом «Строка».
3.Нажимаем кнопку связи объектов и выбрав в нижнем левом окне подпроцесс — задаем свойства его параметра ResultIDSubProcess — назаначив ему тип Исходящий(т.е. Передающий свое значение) и связав с параметром диаграммы ResultFromProcess.
Для присваивания значения параметру подпроцесса, мы используем способ предложенный В.Андрусиком: создание в конце каждой ветки объекта типа «Скрипт», где мы присваиваем значение парметру подпроцесса ResultIDSubProcess(далее значение в процесс предается по связям назначенным нами в интерфейсе «Связи объектов»). Я использовал просто строковые значения «Yes» и «No».
Функции обработки вызываются на событии «OnExecute» объекта типа «Скрипт» в подпроцессе. Для присваивания значений в скрипте подпроцесса я использовал два варианта(это совершенно необязательно, просто эксперементировал). При использовании функций WFGetParamValue(Diagram,NameParam) -получить значение параметра по имени или WFSetParamValue(Diagram,NameParam,Type) — присвоить значение параметра по имени, обязательно добавлять в раздел «Использовать скрипты» в скрипте диаграммы скрипт «scr_WorkflowUtils».
В основном процессе для анализа значений параметра процесса ResultFromProcess добавляем объект «Выбор» и пишем скрипт для извлечения значения параметра и его анализа.
P.S. В скриптах процесса и подпроцесса есть еще скрипты, в которых тоже передаются значения параметров, для заполнения значений Контрагента и Контакта в карточке Задачи, по технологии предложенной в топике: http://community.terrasoft.ua/forum/topic/927.
Прикрепил файлы ;-). Версия TS CRM - 3.3.0.49 под MS SQL 2005.