none
C помощью Workflow считать данные сразу с нескольких элементов RRS feed

  • Вопрос

  • Здравствуйте!Такая ситуация:

    есть несколько групп пользователей, которые сохранены в списке

    группа1: user10;user11;user12;...
    группа2: user20;user21;user22;...
    группа3: user30;user31;user32;...

    и т.д.

    При добавлении документа в библиотеку требуется определить (назначить) список лиц имеющих к нему доступ.

    Сейчас я могу добавлять пользователей только одной группы. (дроп-даун меню с перечнем группы и WF - добавляет в поле "Аудитория" пользователей из выбранной группы) .

    А необходимо, что бы добавлялись пользователи изо всех выбранных групп, например с помощю чекбоксов. То есть: администратор при добавлении документа ставит галочки протип: группа1 и группа3 и в поле "аудитория" летят данные:" user10;user11;user12;user30;user31;user32;"

    Возможно ли это осуществить только при помощи Workflow? Какие будут мнения?


    • Изменено foxmann 19 июля 2012 г. 6:36
    18 июля 2012 г. 12:36

Ответы

  • В общем всё оказалось гораздо проще...

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

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

    Логика такова:

    • При создании документа чекбоксами выбирается одна или несколько групп, участникам которых необходимо ознакомится с документом. Эти группы сохраняются в поле Группы.
    • Рабочий процесс (в блоке параллельных вычислений) проверяет содержит ли поле Группы строку "Группа1" и если да, то считывает соответствующе поле с перечнем участников, и назначает задание этим участникам.
    • Повторяет проверку для всех возможных групп библиотеки.

    • Помечено в качестве ответа foxmann 20 июля 2012 г. 8:38
    20 июля 2012 г. 8:38

Все ответы

  • А зачем это Вы пытаетесь продублировать функциональность Шарепойнта какими-то извращёнными способами?

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

    18 июля 2012 г. 21:03
    Отвечающий
  • Подскажите тогда, пожалуйста, в каком направлении смотреть! Какие именно стандартные способы вы имели ввиду?

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

    19 июля 2012 г. 6:33
  • Если речь пошла про задания (кстати, в стартовом сообщении ничего подобного не было), то начать следует с постановки задачи. Ещё лучше - с разработки проекта автоматизации бизнес-процессов с использованием Шарепойнта.

    В процессе узнаете, что "заданий группе" не бывает, потому что у семи нянек дитя без глазу ( (c) народная мудрость).

    19 июля 2012 г. 7:08
    Отвечающий
  • Согласен, моя вина, основная тема здесь, просто я выделил вопрос в отдельную ветку, для лучшей обозримости, простите за неопытность...)

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

    Кстати (офтоп!!!) номинально можно назначить задание группе - просто оно будет помечено как "выполненое" когда первый из участников группы кликнет на кнопку выполнения. Поверено. Но в моем случае это не подходит, поскольку необходимо контролировать выполнение именно всеми участниками.

    19 июля 2012 г. 7:52
  • будет помечено как "выполненое" когда первый из участников группы кликнет на кнопку выполнения

    Это и есть "дитя без глазу". 

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

    19 июля 2012 г. 10:16
    Отвечающий
  • Во-первых хотелось бы решить задачу на Sharepoint Foundation, а там, как известно, всего один встроенный процесс (трёхэтапный).

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

    (user00;user01 ; user10;user11 ; user30;user31;user32 ;)  так как в группе пользователи собраны правильно т.е. чериз семиколон(;) ,а после последнего (крайнего) пользователя он не ставится, то приходится подставлять его при генерации строки (выделено жирным)...

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

    Создал в библиотеке ещё одно вычисляемое поле, чтобы обрезать этот последний символ, символ обрезается, но при попытке воткнуть эту новую, обрезаную строку в качестве определения задачи - процесс выдает ошибку... бьюсь
    • Изменено foxmann 19 июля 2012 г. 14:39
    19 июля 2012 г. 14:37
  • На codeplex в проекте iLoveSharepoint есть activity для SPD, позволяющая запускать PowerShell-скрипты. А уж этим скриптом можно сделать практические любые действия.
    19 июля 2012 г. 22:44
    Отвечающий
  • В общем всё оказалось гораздо проще...

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

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

    Логика такова:

    • При создании документа чекбоксами выбирается одна или несколько групп, участникам которых необходимо ознакомится с документом. Эти группы сохраняются в поле Группы.
    • Рабочий процесс (в блоке параллельных вычислений) проверяет содержит ли поле Группы строку "Группа1" и если да, то считывает соответствующе поле с перечнем участников, и назначает задание этим участникам.
    • Повторяет проверку для всех возможных групп библиотеки.

    • Помечено в качестве ответа foxmann 20 июля 2012 г. 8:38
    20 июля 2012 г. 8:38
  • Так часто бывает - бросаемся решать задачу до постановки... ;-)
    20 июля 2012 г. 11:11
    Отвечающий
  • Кстати, (пришло в голову чуть позже), можно воспользоваться и первым способом, а последний, мешающий семиколон "закрыть" жестко прописаным пользователем, который создал документ (или инициировал процесс), он будет всегда получать собственное "создание" ну, скажем для контроля... в принципе логично...
    20 июля 2012 г. 11:43