none
Отфильтровать в представлении по завершенности стандартного рабочего процесса RRS feed

  • Вопрос

  • Доброго времени!

    SharePoint 2013. В списке на элемент навешан стандартный рабочий процесс "Утверждение - ShrePoint 2010".

    Задача следующая: необходимо после завершения данного РП запретить изменение данного элемента.

    Как запретить - я знаю, с помощью другого самописного РП (прерывать наследование и назначать нужные права через олицетворение). Но я не знаю как проверить завершен ли стандартный рабочий процесс...

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

    При создании данного рабочего процесса в представлении появляется столбец с именем рабочего процесса. Но если его использовать в фильтрации, к примеру так:

    то ничего не отфильтровывается реально, хотя есть элементы с утвержденным рабочим процессом.

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

    Заранее спасибо!


    10 марта 2015 г. 15:08

Ответы

  • У каждого статуса есть свой код (число).
    Его необходимо указать при фильтрации вместо слова "Утверждено".

    Not Started 0
    Failed on Start 1
    In Progress 2
    Error Occurred 3
    Canceled   4
    Completed   5
    Failed on Start (retrying) 6
    Error Occurred (retrying) 7
    Canceled 15
    Approved 16
    Rejected 17

    Подробнее здесь:
    http://blog.splibrarian.com/2013/08/22/filtering-views/
    http://adayinsharepointv3.blogspot.ru/2012/08/filter-list-view-by-sharepoint-workflow.html


    [custom.development]


    10 марта 2015 г. 15:46

Все ответы

  • У каждого статуса есть свой код (число).
    Его необходимо указать при фильтрации вместо слова "Утверждено".

    Not Started 0
    Failed on Start 1
    In Progress 2
    Error Occurred 3
    Canceled   4
    Completed   5
    Failed on Start (retrying) 6
    Error Occurred (retrying) 7
    Canceled 15
    Approved 16
    Rejected 17

    Подробнее здесь:
    http://blog.splibrarian.com/2013/08/22/filtering-views/
    http://adayinsharepointv3.blogspot.ru/2012/08/filter-list-view-by-sharepoint-workflow.html


    [custom.development]


    10 марта 2015 г. 15:46
  • Спасибо, Александр!

    Пока получилось только отфильтровать в представлении.

    Написал свой РП по смене прав на элемент, если стандартный РП "Утверждение" завершен со статусом 16. Запускается мой РП при изменении элемента. Но проблема в том, что когда стандартный РП завершается (неважно с каким статусом) - элемент, из которого был вызван стандартный РП, не изменяется и, соответственно, не запускается мой РП по изменению прав...

    Не могу придумать как автоматически запустить свой РП после завершения стандартного.
    У кого-нибудь есть идеи?


    10 марта 2015 г. 18:15
  • Я не пробовал, но думаю, что можно засекать изменения в task list, который используется в стандартном approval workflow. Т.е. За пускать рабочий процесс на изменения в списке задач и проверять статус задачи.

    [custom.development]

    10 марта 2015 г. 19:05
  • Я не пробовал, но думаю, что можно засекать изменения в task list, который используется в стандартном approval workflow. Т.е. За пускать рабочий процесс на изменения в списке задач и проверять статус задачи.

    [custom.development]

    Добрый день,

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

    Выход конечно есть - ставить ресивер на задачи и в нем смотреть завершенность всех задач и основного РП и только потом прерывать наследование.

    11 марта 2015 г. 0:34
  • Добрый день

    это ограниченность штатного функционала...

    если делать без кода, то можно сделать кривое решение, но должно работать (сам не пробовал)

    и так, если не критичны 30-60 мин без изменения прав, то можно прикрутить рп который будет проверять если утверждено, то обновляет права и завершается, если нет, то делает паузу на время и  после переходит на этап проверки условия (цикл).

    первое что пришло в голову... 

    11 марта 2015 г. 9:05
    Модератор
  • Добрый день

    это ограниченность штатного функционала...

    если делать без кода, то можно сделать кривое решение, но должно работать (сам не пробовал)

    и так, если не критичны 30-60 мин без изменения прав, то можно прикрутить рп который будет проверять если утверждено, то обновляет права и завершается, если нет, то делает паузу на время и  после переходит на этап проверки условия (цикл).

    первое что пришло в голову... 

    Как вариант, можно. И запускать его из основного РП. Надо только проверку на отмену основного РП еще сделать, иначе так и будут висеть в цикле.
    11 марта 2015 г. 9:10
  • Можно и custom timer job написать, который будет проверять статус и изменять наследование прав (либо запускать рп по изменению прав).

    [custom.development]

    11 марта 2015 г. 9:25
  • Можно и custom timer job написать, который будет проверять статус и изменять наследование прав (либо запускать рп по изменению прав).

    [custom.development]

    А можно без кода запускать из PowerShell по расписанию :)
    11 марта 2015 г. 9:32