дубли, при отработке одновреиенно, екземпряров одного бизнесс-процеса

Коллеги, имею проблемы.

Извините, за сумбурность изложения, в силу моей неопытности.

Есть у меня бизнес процесс, который создает, клиентов на основание импортированных договоров

То есть работает все так:   импортируются данные (посредством импорта exel) в договоры, в договорах фиксируется вся информация, в том числе информация по клиенту «ФИО, ИНН, другая информация», состояние новых договоров «новые».

Потом на основание сигнала, о только-что созданных договорах  , запускается бизнес процесс, который вытягивает информацию с «договоров» о клиентах и создает клиентов в разделе «физ лица»,

Клиенты у договоров повторяются, то есть в первоначальном файле для импорта, у разных договорах  клиенты могут повторятся.

Нужно создавать в разделе «физ лица», только уникальных клиентов, для этого в бизнес процессе по созданию клиентов, есть механизм проверки, если клиент уже есть его не добавляют.

Проблема в следующем, я так понимаю, когда экземпляры бизнес процесса по создания клиентов зарускаются одновременно, создаются дубли.

 

Пример: есть

-договор 1 (из первоначального файла импорта) от клиента 1   

-договор 2  от того же клиента 1

После импорта создаются две записи в разделе «договора»   : договор 1, и договор 2 со статусом «новый»

По сигналу запускается от договоров, запускается бизнес процесс по созданию клиентов.

Процессы запускаются одновременно, соответственно создаются дубли по клиенту 1, потому-что оба экземпляра процесса, проходят проверку на то, что клиент новый, как запускать экземпляры процесса с задержкой?,  или  есть другое решение, спасибо за любую помощь

Нравится

3 комментария
Лучший ответ

Скорее всего, нужно вынести обработку заимпортированных записей в отдельный процесс (где уже идёт последовательно).

  • Если импорт выполняет администратор, то он может запускать этот процесс вручную.
  • Если же импорт выполняют пользователи, то можно запускать процесс по расписанию. Тогда процесс проверяет, не запущена ли уже такая обработка, и затем последовательно обрабатывает записи.
  • Возможно, как-то можно поймать сигнал окончания импорта (уведомление-то создаётся), и запускать процесс последовательной обработки в этот момент

Скорее всего, нужно вынести обработку заимпортированных записей в отдельный процесс (где уже идёт последовательно).

  • Если импорт выполняет администратор, то он может запускать этот процесс вручную.
  • Если же импорт выполняют пользователи, то можно запускать процесс по расписанию. Тогда процесс проверяет, не запущена ли уже такая обработка, и затем последовательно обрабатывает записи.
  • Возможно, как-то можно поймать сигнал окончания импорта (уведомление-то создаётся), и запускать процесс последовательной обработки в этот момент

Какие условия проверки наличия контрагента в БП? Она точно корректно отрабатывает? 

Роман, если подход Владимира не устраивает, можно в запускающемся при создании договора БП делать проверку, существуют ли другие договора с таким же именем пока не существующего в базе клиента и если есть, то не создавать, а взять паузу при помощи таймера и после неё привязаться к уже создавшемуся. Чтобы по первому такому создался, можно при выборке новых договоров без указанного контакта добавить фильтр по дате или номеру, чтобы учитывать только более ранние чем тот, по которому запущен процесс.

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