Интеграция BPMOnline 7 с внешним приложением
Здравствуйте уважаемые разработчики!
Стоит задача интеграции BPMOnline 7 со сторонним приложением. Есть стандартный бизнес процесс. Необходимо, чтобы при добавлении записи из внешнего приложения запускался бизнес процесс, наступало следующее действие (формировалась задача менеджеру и т.д.). Каким образом это лучше реализовать?
1. Добавление записи через OData. Но в таком случае сработает ли начальное событие "Сигнал"?
2. Использование механизма ProcessEngineService?
Заранее благодарен.
Нравится
Александр, оба варианта имеют право на жизнь.
При работе с объектами через сервис 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