...

Нажатие на кнопку из сценария

Тема в разделе "Разработчикам", создана пользователем inteco, 1 ноя 2017.

  1. inteco

    inteco Member

    Добрый день всем!

    Пользователю по бизнес-процессу прилетела задача. На форме есть единственная кнопка "Оповестить".
    Как из другого процесса нажать на эту кнопку?
     
  2. arkarimov

    arkarimov Member

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

    inteco Member

    Спасибо за совет, но мне это не помогло, а лишь натолкнуло на мысль.

    Вдруг кому будет надо, отвечу сам себе:

    Решение сводится к поиску нужной задачи(task).
    var activeTasks=PublicAPI.Portal.TaskBase.Filter().Id(item.IDZadachi).Find();
    foreach (var task in activeTasks)
    {
    // Получаем элемент диаграммы процесса, по которому сформирована задача
    var element = (BPMNFlowElement)task.WorkflowBookmark.Instance.Process.Diagram.Elements.Single(e => e.Uid == task.WorkflowBookmark.ElementUid);
    // Ищем исходящий переход по его имени
    var connector = element.OutputConnectors.FirstOrDefault(c => c.Name == "Оповестить о получении");
    if (connector != null)
    {
    // Переход нашли
    // Формируем данные для исполнения задачи
    var executeData = new WorkflowTaskExecuteData(task, connector.Uid);
    // Исполняем задачу
    Locator.GetServiceNotNull<IWorkflowRuntimeService>().Execute(executeData);
    }
    }

    В итоге: нашли задачу(и) и в каждой за пользователя нажали на кнопку "Оповестить о получении".
    Процесс пошел дальше и остановился на следующей задаче.
     

Поделиться: