Этап 3. Использование Power Automate для создания потока для обработки контрактов

Вы создали канал управления контрактами и подключили библиотеку документов SharePoint. Следующим шагом является создание потока Power Automate для обработки контрактов, которые идентифицирует и классифицирует модель Syntex. Это можно сделать, создав поток Power Automate в библиотеке документов SharePoint.

Для решения управления контрактами необходимо создать поток Power Automate, чтобы выполнить следующие действия:

  • После классификации контракта в модели Syntex измените состояние контракта на In Review.
  • Затем контракт проверяется и утверждается или отклоняется.
  • Для утвержденных контрактов информация о контракте размещается на вкладке для обработки платежей.
  • Для отклоненных контрактов команда получает уведомление для дальнейшего анализа.

На следующей схеме показан поток Power Automate для решения по управлению контрактами.

Схема потока, показывающая все решение.

Подготовка контракта к проверке

Если контракт определяется и классифицируется неструктурированной моделью обработки документов, поток Power Automate сначала изменит состояние на In Review.

Состояние обновления.

После получения файла измените значение состояния на In Review.

В состоянии проверки.

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

Пост проверки контракта.

Создание адаптивной карточки для проверки.

Ниже приведен код JSON, используемый для этого шага в потоке Power Automate.

{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
    {
    "type": "TextBlock",
    "text": "Contract approval request",
    "size": "large",
    "weight": "bolder",
     "wrap": true
    },
        {
            "type": "Container",
            "items": [
                {
                    "type": "FactSet",
                    "spacing": "Large",
                    "facts": [
                        {
                            "title": "Client",
                            "value": "@{triggerOutputs()?['body/Client']}"
                        },
                        {
                            "title": "Contractor",
                            "value": "@{triggerOutputs()?['body/Contractor']}"
                        },
                        {
                            "title": "Fee amount",
                            "value": "@{triggerOutputs()?['body/FeeAmount']}"
                        },
                        {
                            "title": "Date created",
                            "value": "@{triggerOutputs()?['body/Modified']} "
                        },
                        {
                            "title": "Link",
                            "value": "[@{triggerOutputs()?['body/{FilenameWithExtension}']}](@{triggerOutputs()?['body/{Link}']})"
                        }
                    ]
                }
            ]
         },
    {
    "type": "TextBlock",
    "text": "Comment:"
    },
        {
            "type": "Input.Text",
            "placeholder": "Enter comments",
            "id": "acComments"
        }
],
"actions": [
    {
    "type": "Action.Submit",
    "title": "Approve",
    "data": {
        "x": "Approve"
    }
    },
    {
    "type": "Action.Submit",
    "title": "Reject",
    "data": {
        "x": "Reject"
    }
    }
]
}

Условный контекст

Далее в потоке необходимо создать условие, в котором контракт будет утвержден или отклонен.

Условного.

Если контракт утвержден

После утверждения контракта происходит следующее:

  • На вкладке Контракты состояние карточки контракта изменится на Утверждено.

    Состояние карты утверждено.

  • В потоке состояние изменяется на Утверждено.

    Состояние потока утверждено.

  • В этом решении данные контракта будут добавлены на вкладку "Выплата ", чтобы можно было управлять выплатами. Этот процесс можно расширить, чтобы поток предоставлял контракты для оплаты сторонним финансовым приложением (например, Dynamics CRM).

    Контракт перемещен на выплату.

  • В потоке вы создадите следующий элемент, чтобы переместить утвержденные контракты на вкладку Для выплат .

    Элемент потока для перехода к pay out.

    Чтобы получить выражения для необходимых сведений из карточки Teams, используйте значения, показанные в следующей таблице.

    Имя Expression
    Состояние утверждения body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?? ['submitActionId']
    Утверждено body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?? ['ответчик'] ['displayName']
    Дата утверждения body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?? ['responseTime']
    Comment body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?? ['data']? ['acComments']

    В следующем примере показано, как использовать поле формулы в Power Automate для записи выражения.

    Снимок экрана: Power Automate с формулой выражения.

  • Адаптивная карточка о том, что контракт утвержден, создается и размещается в канале управления контрактами.

    Опубликовано утверждение контракта.

    Утверждение адаптивной карточки.

    Ниже приведен код JSON, используемый для этого шага в потоке Power Automate.

{ 
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "Container",
            "style": "emphasis",
            "items": [
                {
                    "type": "ColumnSet",
                    "columns": [
                        {
                            "type": "Column",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "size": "Large",
                                    "weight": "Bolder",
                                    "text": "CONTRACT APPROVED"
                                }
                            ],
                            "width": "stretch"
                        }
                    ]
                }
            ],
            "bleed": true
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "FactSet",
                    "spacing": "Large",
                    "facts": [
                        {
                            "title": "Client",
                            "value": "@{triggerOutputs()?['body/Client']}"
                        },
                        {
                            "title": "Contractor",
                            "value": "@{triggerOutputs()?['body/Contractor']}"
                        },
                        {
                            "title": "Fee amount",
                            "value": "@{triggerOutputs()?['body/FeeAmount']}"
                        },
                        {
                            "title": "Approval by",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['responder']['displayName']}"
                        },
                        {
                            "title": "Approved date",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['responseTime']}"
                        },
                        {
                            "title": "Approval comment",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['data']?['acComments']}"
                        },
                        {
                            "title": " ",
                            "value": " "
                        },
                        {
                            "title": "Status",
                            "value": "Ready for payout"
                        }
                    ]
                }
            ]
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2",
    "fallbackText": "This card requires Adaptive Cards v1.2 support to be rendered properly."
}

Если контракт отклонен

Если контракт был отклонен, происходит следующее:

  • На вкладке Контракты состояние карточки контракта изменится на Отклонено.

    Состояние карты отклонено.

  • В потоке вы извлекаете файл контракта, измените состояние на Отклонено, а затем снова проверьте файл.

    Состояние потока отклонено в файле контракта.

  • В потоке создается адаптивная карточка о том, что контракт был отклонен.

    Состояние потока отображает отклонение на адаптивной карточке.

Ниже приведен код JSON, используемый для этого шага в потоке Power Automate.

{ 
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "Container",
            "style": "attention",
            "items": [
                {
                    "type": "ColumnSet",
                    "columns": [
                        {
                            "type": "Column",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "size": "Large",
                                    "weight": "Bolder",
                                    "text": "CONTRACT REJECTED"
                                }
                            ],
                            "width": "stretch"
                        }
                    ]
                }
            ],
            "bleed": true
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "FactSet",
                    "spacing": "Large",
                    "facts": [
                        {
                            "title": "Client",
                            "value": "@{triggerOutputs()?['body/Client']}"
                        },
                        {
                            "title": "Contractor",
                            "value": "@{triggerOutputs()?['body/Contractor']}"
                        },
                        {
                            "title": "Fee amount",
                            "value": "@{triggerOutputs()?['body/FeeAmount']}"
                        },
                        {
                            "title": "Rejected by",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['responder']['displayName']}"
                        },
                        {
                            "title": "Rejected date",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['responseTime']}"
                        },
                        {
                            "title": "Comment",
                            "value": "@{body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['data']?['acComments']}"
                        },
                        {
                            "title": " ",
                            "value": " "
                        },
                        {
                            "title": "Status",
                            "value": "Needs review"
                        }
                    ]
                }
            ]
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2",
    "fallbackText": "This card requires Adaptive Cards v1.2 support to be rendered properly."
}
  • Карточка размещается в канале Управления контрактами.

    Адаптивная карточка потока для отклонения.