Здравствуйте уважаемые разработчики!

Стоит задача интеграции BPMOnline 7 со сторонним приложением. Есть стандартный бизнес процесс. Необходимо, чтобы при добавлении записи из внешнего приложения запускался бизнес процесс, наступало следующее действие (формировалась задача менеджеру и т.д.). Каким образом это лучше реализовать?

1. Добавление записи через OData. Но в таком случае сработает ли начальное событие "Сигнал"?

2. Использование механизма ProcessEngineService?

Заранее благодарен.

Нравится

3 комментария

Александр, оба варианта имеют право на жизнь.

При работе с объектами через сервис OData все внутренние события и обработчики в процессах системы отрабатывают так же, если бы вы добавляли запись через интерфейс или с помощью импорта из excel.
Вы можете создать процесс с начальным событием "Сигнал", отрабатывающим на создание нового объекта в системе и добавить условия которым должен соответствовать вновь созданный объект.
Но в таком случае процесс будет запускаться автоматически для всех созданных объектов, не зависимо от того объект создан пользователем через интерфейс или создан запросом к OData с помощью стороннего приложения.

Второй вариант, с использованием ProcessEngineService, больше подходит если процесс должен отрабатывать только для объектов созданных с помощью стороннего приложения. В таком случае вы создаете бизнес процесс с простым стартовым элементом. В процесс добавляете все параметры, которые должны приходить из стороннего приложения и сами управляете созданием объекта и дальнейшими действиями

Спасибо, Игорь! Понятно.

И вопрос по ProcessEngineService. Можно ли задавать динамически приходящие параметры: например, в одном случае приходит 3 параметра, в другом 5?

Да, при запуске процесса через ProcessEngineService установка значений в параметры не обязательна.

Если значение не передано, параметр будет проинициализирован значением по умолчанию.

Если у процесса есть два параметра ParamA и ParamB.

Оба запроса создадут новый экземпляр процесса и запустят на выполнение:

http://demo.bpmonline.com/0/ServiceModel/ProcessEngineService.svc/My_Pr…
http://demo.bpmonline.com/0/ServiceModel/ProcessEngineService.svc/My_Pr…
При втором вызове ParamB будет равен пустой строке.

Также обратите внимание на зарезервированный параметр "ResultParameterName". Он используется для указания имени параметра, значение которого необходимо вернуть по завершении процесса.

Пр.
/Execute?ParamA=Den&ResultParameterName=Param2

После завершения процесса в теле ответа будет лежать сериализированное значение параметра Param2

Показать все комментарии