2

У меня есть вопрос относительно проблемы, с которой я столкнулся. Есть ли способ, которым у меня может быть рабочий процесс, ожидающий завершения другого рабочего процесса (или, по крайней мере, огонь через пару секунд после первого выполнения)?CRM Dynamics Workflow Условия ожидания

Мой сценарий: у меня есть рабочий процесс, ожидающий до 6 месяцев до истечения срока действия контракта, после того, как он достигнет этой даты, он создает настраиваемую сущность, а на сущности cutom у меня есть плагин registerd, который создает возможность и вставляет, возможность (для строки с истекшим сроком действия).

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

Любая помощь будет высоко оценена. Благодарю.

+0

вы можете создать WF-активность, задачей которой является поиск связанных объектов и либо создает новый связанный объект, либо присоединяется к существующему, если у вас есть способ предсказывать что-то об этом связанном объекте. –

ответ

1

Подход, который я обычно принимал с этим, будет примерно таким: подождать некоторое время, а затем проверить поле поиска на соответствующей записи (контрактная линия или договор в этом случае). Если не заполнено, создайте запись (Opp в вашем случае) и заполните поиск, чтобы указать на него.

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

Итак, сначала WF, чтобы попасть в него, не видит Opp, создает его, а затем делает что-то полезное (например, в сборке пользовательских рабочих процессов).

Второй WF попадает туда и находит Opp уже там, поэтому использует его.

Проблема в вашем сценарии заключается в том, что вы не можете обновлять Контракт после того, как он был фактурирован/активирован. Таким образом, вам может потребоваться просто создать Opportunity в первую очередь (с датой окончания ближайшей даты), а затем позволить вашим рабочим процессам работать, ждать и использовать этот, когда они туда попадут.

Если вам действительно не нравится, что многие открытые Opps, то создайте слой между ними - найдите поиск из Контракта в пользовательский объект «обновления», который сам по себе ничего не делает, кроме поиска возможностей. Создайте обновление при создании контракта (wf или плагин), чтобы поиск уже был заполнен.