Этап 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).
В потоке вы создадите следующий элемент, чтобы переместить утвержденные контракты на вкладку Для выплат .
Чтобы получить выражения для необходимых сведений из карточки 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 для записи выражения.
Адаптивная карточка о том, что контракт утвержден, создается и размещается в канале управления контрактами.
Ниже приведен код 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."
}
Карточка размещается в канале Управления контрактами.