...

Согласование сразу нескольких документов либо согласование через сценарий?

Тема в разделе "Разработчикам", создана пользователем kovalenkoms, 25 окт 2018.

  1. kovalenkoms

    kovalenkoms New Member

    Всем доброго дня!
    Собственно сабж: Возможно ли сделать согласование сразу нескольких документов либо согласование через сценарий или через web-api?
    Ситуация: согласующий получает сотню задач согласований, заходить в каждую - много времени. Нужно действие, позволяющее согласовать сразу несколько выбранных документов.
    В документации, в API функцию согласования в сценарии не нашел, выполнение перехода задачи согласования - не работает.
     
    1 это нравится
  2. arkarimov

    arkarimov Member

    Подобную задачу решал следующим образом
    1. Создал страницу конфигурации для утверждающего
    2. В странице сделал скрипт сбора его задач, и заполнение таблицы интересующими его данными и ссылками для более подробного ознакомления.
    3. В таблице же одно из полей с выпадающим списком что делать с этой строкой, утвердить/отказать и тп. Здесь можно сделать ссылки на соотв. переходы процесса если нужно утверждение однотипных задач.
    4. Кнопки в странице для обработки выбранных действий.
    5. Всякие плюшки типа быстрого отбора из таблицы интересующих строк по контрагенту, по автору и тп
    Касательно сценария именно выполнения задачи, посмотрите в сторону PublicAPI.Processes.WorkflowTaskBase.CompleteTask()
     
  3. chaykovsky

    chaykovsky New Member

    PublicAPI.Processes.WorkflowTaskBase.CompleteTask() работает на обычных процессных задачах, а на задачах согласования некорректно срабатывает: задача помечается завершенной, но на схеме процесса остается активной, и не переходит к следующей задаче.
     
  4. chaykovsky

    chaykovsky New Member

    в RestAPI есть выполнение обычной задачи,
    есть выполнение задачи согласования задачи,
    а выполнения задачи согласования документа - нет ((
     
  5. arkarimov

    arkarimov Member

    Не сталкивался, возможно баг конкретного релиза, с техподдержкой общаться не пробовали?
    В качестве обходного можно принудительно пнуть задачу так, это сценарий принудительного продолжения процесса по указанному переходу. Но я бы конечно разбирался с техподдержкой, явно либо неправильно готовите скрипт либо движок неправильно работает.
    Код:
                const long taskId = 723540;//Ид задачи согласования
                var task = (IWorkflowTaskBase)TaskBaseManager.Instance.Load(taskId);
                var element = (BPMNFlowElement)task.WorkflowBookmark.Instance.Process.Diagram.Elements.Single(e => e.Uid == task.WorkflowBookmark.ElementUid);
                var service = Locator.GetService<IWorkflowRuntimeService>();
                var connector = element.OutputConnectors.FirstOrDefault(c => c.Name == "Согласовано");
                service.Execute(new WorkflowTaskTerminateData(task.WorkflowBookmark, connector.Uid));
     

Поделиться: