2017-01-24 14 views
2

Мне нужен рабочий процесс SharePoint, который обновит элемент списка (Accounts Tracker), когда файл будет загружен в определенную папку в отдельной библиотеке документов (документы учетных записей). Имя папки будет соответствовать строке, которая будет обновлена ​​в списке.Рабочий процесс SharePoint для обновления списка на основе имени папки в отдельной библиотеке документов

Так, в качестве примера:

  1. пользователь загружает документ в папку 'Entity 1' в 'Учетные документы' библиотеки.
  2. Рабочий процесс обновляет строку в «Отчете учетных записей» с заголовком «Объект 1» автоматически на основе имени папки в библиотеке «Документы учетных записей».

Вопрос в том, как рабочий процесс ссылается на имя папки в библиотеке, чтобы обновить правильную строку в списке?

ответ

1

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

Самой сложной частью вашего рабочего процесса будет получение имени родительской папки.

Название папки, содержащей документ, является частью переменной Текущий товар: URL-адрес сервера.

Вы можете использовать ряд действий в вашем worklow для извлечения имени папки с URL-адреса сервера.

Stage: Find Folder Name 
    Step: Set variables 
     Set Variable: FilePAth to Current Item:Server Relative URL 
     then Set Variable: TrimmedFilePath to Variable: FilePath 
     then Set Variable: index to 0 
     then Set Variable: LastIndexOf to -1 
     then Set Variable: PreviousLastIndexOf to -1 
    Loop: until last slash is found 
     The content of this loop will run repeatedly while Variable: index is greater than or equal to 0 
      Find/in Variable: TrimmedFilePath (Output to Variable: index) 
      If Variable: index is greater than or equal to 0 
       If Variable: LastIndexOf not Equals -1 
        Set Variable: PreviousLastIndexOf to Variable: LastIndexOf 
       then Calculate Variable: LastIndexOf plus 1 (Output to Variable: LastIndexOf) 
       then Calculate Variable: LastIndexOf plus Variable: index (Output to Variable: LastIndexOf) 
       then Calculate Variable: LastIndexOf plus 1 (Output to Variable: IndexPlus1) 
       then Copy from Variable: FilePath, starting at Variable: IndexPlus1 (Output to Variable: TrimmedFilePath) 
    Step: Check foldername 
     Calculate Variable: PreviousLastIndexOf plus 1 (Output to Variable:PreviousLastIndexOfPlus1) 
     then Calculate Variable: LastIndexOf minus PreviousLastIndexOfPlus1 (Output to Variable:FolderNameLength) 
     then Copy from Variable: FilePath, starting at Variable: PreviousLastIndexOfPlus1 for Variable: FolderNameLength characters (Output to Variable: ParentFolderName) 
     If (Variable: ParentFolderName equals Workflow Context:List Name) 
      Set Variable: ParentFolderName to Root Folder 

После нужно добавить List Update Item активность в рабочий процесс.

В Найти элемент списка раздел, используйте ParentFolderName переменную для извлечения элемента целевого списка.

Надеюсь, что эта помощь!

--- Ответы на вопросы

первая линия Loop исключительно для объяснения? Да. Когда вы добавляете цикл в рабочий процесс, вы также можете добавить комментарий. Итак, «пока последний косой черт не найден» является только комментарием

2-я строка Loop - как мне найти/в переменной? В рабочем процессе у вас есть активность, чтобы найти символы в строковой переменной. Это похоже на indexOf в JavaScript. В этом рабочем процессе нам нужно найти символ «/». Помните, что цель состоит в том, чтобы получить родительскую папку внутри URL-адреса. Мы можем найти его, выполнив поиск для последней косой черты внутри URL-адреса.

9-я строка цикла - сколько символов? 0 по умолчанию - мой рабочий процесс. Количество персонажей будет рассчитываться автоматически. Ищите переменную с именем IndexPlus1

4-я строка проверки. У меня нет имени списка, доступного в контексте Workflow. Могу ли я использовать имя ассоциации? Я не знаю, почему вы не можете получить имя списка. Возможно, вы можете попытаться создать еще один рабочий процесс SP 2013 и посмотреть, есть ли у вас такая же проблема?

5-я строка проверки - это «Корневая папка», жестко отформатированная, т. Е. Не поиск? Да. Корневая папка жестко закодирована.

+0

Hi Sylvain. Благодарим вас за подробный ответ - я ценю ваши усилия. К сожалению, я получаю сообщение об ошибке при выполнении рабочего процесса. Могу я проверить несколько вещей? – sturleydog

+0

Благодарим вас за подробный ответ, я ценю усилия - к сожалению, я получаю сообщение об ошибке при выполнении рабочего процесса. Могу я проверить несколько вещей? - 1-я строка Loop предназначена только для объяснения? - 2-я строка цикла - как мне найти/в переменной? - 9-я строка цикла - сколько персонажей? 0 по умолчанию - мой рабочий процесс. - 4-я строка проверки. У меня нет имени списка, доступного в контексте Workflow. Могу ли я использовать имя ассоциации? - 5-я строка проверки - это «Корневая папка», жестко отформатированная, т. Е. Не поиск? – sturleydog

+0

Я добавляю ответы на ваши вопросы в своем сообщении. –