06.02.2020, 18:18 | #1 |
Участник
|
Работа с bpf через js
Здравствуйте, требуется совет:
Разрабатываю SPA приложение, которое включает функции по управлению последовательностями бп. Что требуется: 1. получить массив записей lead и обработать его так, чтобы четко выделить, какой у них бп и шаг. Бп всего два, в них разное число шагов. То есть получим что-то вроде: [{ name: 'Sample', bpf: 'BusinessProccessA', step: 'qualification' - или числом, не принципиально },...] 2. Самое непонятное - сделать переключение записи на следующий шаг БП. Тут вообще очень странно - есть функции для Xrm.Page, но мы при использовании приложения находимся не на карточке записи, то есть применять его нельзя. Я искал информацию по этому поводу - есть некоторые примеры для C# (которые не покрывают вышеописанное), а также горы гайдов по Xrm.Page. Единственное, что я придумал пока - это сделать какой-то экшен, запускающий БП и переключающий BPF дальше, либо (о ужас) воспользоваться страшным костылем: из приложения открыть новое окно с нужной карточкой, предварительно сохранив наши намерения в session storage/local storage и там уже запускать скрипт, который проверяет хранилище на предмет намерения переключения, и если они есть, переключающий процесс через Xrm.Page. Пока что вопрос у меня стоит хотя бы по получению процесса у сущностей. При этом, к примеру, функция RetrieveProcessInstances не подходит - она действует только с одной записью, да и предназначена для другого. Есть возможность использовать только js. Помогите, пожалуйста) |
|
06.02.2020, 19:10 | #2 |
Чайный пьяница
|
Я бы рекомендовал следовать вашей идее сделать кастомный экшен и двигать процесс используя стандартные средства - https://dynamics365blocks.wordpress....-dynamics-365/ а экшен вызывать через JavaScript или из C# в зависимости от вашего сценария.
Цитата:
воспользоваться страшным костылем: из приложения открыть новое окно с нужной карточкой, предварительно сохранив наши намерения в session storage/local storage и там уже запускать скрипт, который проверяет хранилище на предмет намерения переключения, и если они есть, переключающий процесс через Xrm.Page.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
24.02.2020, 05:49 | #3 |
Участник
|
Цитата:
Сообщение от a33ik
Я бы рекомендовал следовать вашей идее сделать кастомный экшен и двигать процесс используя стандартные средства - https://dynamics365blocks.wordpress....-dynamics-365/ а экшен вызывать через JavaScript или из C# в зависимости от вашего сценария.
Крайне не рекомендую пользоваться таким подходом. Мб будет кому-то полезно: фичу таки реализовали. Для получения данных о шаге просто завели два дополнительных поля: имя процесса и шаг в виде целочисленной переменной 0-30. Плагином каждую запись при изменении исследуем на изменение процесса/шага, записываем в переменные соответствующие значения, приложение просто смотрит на эти поля и отображает, как нам удобно. Используем RetrieveProcessInstances. Для переключения сейчас делаем экшен, но вроде все получается. Жаль, что у нас нет человеческого способа это через webapi переключать, вроде bpf у нас аж с 2011-2012 года. |
|
24.02.2020, 15:15 | #4 |
Чайный пьяница
|
BPF то был, но в процессе мутировал. Сначала стадия BPF это было просто пара полей с гуидами на соответственной сущности и только потом Microsoft реализовал дополнительную сущность. И вот где то тут нормальный способ работать с BPF и потерялся.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
24.02.2020, 19:29 | #5 |
Участник
|
|
|
25.02.2020, 10:01 | #6 |
Moderator
|
Тут как в другом анекдоте: вы просто не умеете его готовить.
Инструмент, который вы используете, тупо не рассчитан под вашу задачу, или юзкейс. Об этом и следует доложить партии. BPF у нас с 2013 года, а вот во времена 2011 был другой классный инструмент: текстовое поле "stepname" и аналогичный выпадающий список. Вы можете попробовать использовать старый подход.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
25.02.2020, 10:06 | #7 |
Moderator
|
Какая у вас версия CRM? Существует как минимум 3 реализации BPF. Чтобы посоветовать что-то вменяемое, нужно понимать что у вас.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
27.02.2020, 02:48 | #8 |
Участник
|
Цитата:
Поле StepName некорректно показывает текущий этап. И оно уже используется для определения чего-то там у клиента. Выглядит оно у него как 1-Квалификация, то есть так, как указал разработчик бп из выпадающего списка, а не текстового поля с названием шага. Короче, не шаг, а шляпа, и трогать его нельзя. Дополнительную сложность вызывает то, что все это делается на аутсорсе за маленькие деньги, из-за чего героически превозмогать и преодолевать категорически лень. Поэтому и понадобилось вот такое кочевряжить. К тому же, тут нам нужен еще и конструктор отдельно от основного приложения, чтобы можно было при изменении бп редактировать логику рабочего приложения. Тут, правда, мороки немного было. Спасибо, конечно, за желание помочь, но оно уже того, работает) Хотя было бы интересно, какие у нас еще были реализации BPF, сам я предыдущих не застал, а хвосты от них периодически проглядывают. |
|
27.02.2020, 10:37 | #9 |
Moderator
|
Как реализовали?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
28.03.2020, 13:03 | #10 |
Участник
|
Отказались от бп совсем. Оказалось, что он абсолютно линейный, точнее, процессов два и они никак не пересекаются. Никаких условий и разветвлений там нет, даже движение назад не требуется.
И SPA полностью покрывает функционал бп, намного быстрее и удобнее, чем стандартный процесс передвижения по сделке.Ну, внутри карточки еще добавили кнопку для переключения шага - и все. Банально найти сделку, которая нужна юзеру, заполнить у нее параметры и передвинуть шаг раньше занимало около 30 секунд с учетом загрузок, поиска полей и без учета затупов с его стороны (введение полей и тп). С приложением - 10-15 секунд. Плюс чтобы перейти к работе с другой сделкой или что-то посмотреть не нужно ничего грузить и ходить между гридами - карточками - искать в ворохе полей нужный - приложение по желанию показывает все нужные поля во всплывающем окошке внутри себя. Ну и краткая инфа вообще всегда перед глазами. Сам себя не похвалишь, как говорится... Короче, если у кого-то будут такие же проблемы и абсолютно линейный бп - просто сделайте себе поле с номером шага и кнопку вперед. Нестандартные веб ресурсы всегда работают быстрее (если их правильно построить, конечно). Для карточки все добавляется бизнес-правилом - обязательные поля и их видимость. Переключать шаг можно и экшеном, но у нас с этим возникли проблемы - произошла магия и мы не смогли вытащить айдишник бп и шага. Они просто были нулл. |
|
30.03.2020, 09:39 | #11 |
Moderator
|
Еще бы
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
30.03.2020, 13:13 | #12 |
Участник
|
|
|
30.03.2020, 16:14 | #13 |
Moderator
|
Речь об этом. Эти поля больше не используются системой, поэтому они и null. Если не ошибаюсь, реализация поменялась начиная с 8.2. Начиная с этой версии, с одной записью может быть связано несколько параллельных процессов. Поэтому связь между сущностями изменилась на обратную. Лично я не встречал в дикой природе двух одновременных процессов, но, видимо, были такие запросы, рас MS это сделал.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
Теги |
business process, dynamics 365 v. 9.0, javascript |
|
|