Я пытаюсь создать поток приложений логики в Azure, где, если файл в определенной папке сайта SharePoint обновляется, мне нужно проверить версию этого файла. Разделите основную и второстепенную версию. Если произошло изменение только второстепенной версии файла, нам не нужно ничего делать, но если основная версия файла изменена/обновлена, нам нужно сохранить файл в хранилище BLOB-объектов Azure.
введите сюда описание изображения
Я создал поток приложения логики:
Проблема в том, что мне нужно получить предыдущую версию файла, чтобы я мог сравнить старую и новую версию файла из SharePoint, и если будет обнаружена более новая версия, сохранить ее в хранилище BLOB-объектов Azure.
Если вы хотите игнорировать второстепенные версии и продолжить рабочий процесс только для основных версий, просто проверьте номер версии. Если номер версии заканчивается на .0
, то последнее изменение создало основную версию.
По определению, любая версия, которая не заканчивается на .0
, является второстепенной версией.
Итак, используйте функцию Split, но получите элемент после десятичной точки и проверьте, является ли он нулем. Split возвращает текст, поэтому вы можете захотеть обернуть его в функцию Int(), чтобы получить число.
int(split(triggerBody()?['{VersionNumber}'],'.')[1])
Вот файл, который я только что изменил, это версия 1.1.
А вот файл опубликован как основная версия 2.0
Редактировать: Другой способ добиться того же результата — использовать в триггере условие триггера. Условие на скриншоте ниже использует формулу
@contains(triggerBody()?['{VersionNumber}'],'.0')
На следующем снимке экрана показаны два недавно отредактированных документа. Файл «Сотрудничество» все еще находится в дополнительной версии, документ «Контролируемый» был опубликован как основная версия и запустил рабочий процесс.
Триггер When a file is created or modified (properties only)
не сработает, если редактируется только содержимое документа. Он будет работать только в том случае, если одно из свойств изменилось. Триггера, связанного с публикацией документа, нет.
Есть ли другой способ заставить этот поток работать, используя любую другую платформу??
Вы можете использовать условие триггера. Я отредактировал свой ответ и добавил описание этого.
Я не вижу никакой опции в разделе «Массив» как @triggerOutputs()?[body/value] в функции триггера: «Когда файл создается или изменяется (только свойства)»
Я не знаю, что ты имеешь в виду. Вам необходимо открыть настройки триггера, добавить условие и ввести условие вручную. Он не отображается ни в одном диалоге. Как на скриншоте.
Спасибо @teylyn за ваш вклад. Решение сработало. Не могли бы вы также предложить какой-либо способ запускать приложения логики только тогда, когда пользователь нажимает кнопку публикации/повторной публикации на сайте SharePoint? Потому что сейчас мой триггер срабатывает каждый раз, когда в файл вносятся какие-либо изменения. Таким образом, даже если в документе происходит незначительное изменение, приложения логики срабатывают. Я хочу, чтобы он срабатывал только при обновлении основной версии.