Passo 3. Utilizar o Power Automate para criar o fluxo para processar os seus contratos
Criou o seu canal de Gestão de Contratos e anexou a sua biblioteca de documentos do SharePoint. O passo seguinte consiste em criar um fluxo do Power Automate para processar os contratos que o modelo Syntex identifica e classifica. Pode efetuar este passo ao criar um fluxo do Power Automate na sua biblioteca de documentos do SharePoint.
Para a sua solução de gestão de contratos, quer criar um fluxo do Power Automate para realizar as seguintes ações:
- Depois de um contrato ter sido classificado pelo modelo Syntex, altere o estado do contrato para Em revisão.
- Em seguida, o contrato é revisto e é aprovado ou rejeitado.
- Para contratos aprovados, as informações do contrato são publicadas num separador para processamento de pagamentos.
- Para contratos rejeitados, a equipa é notificada para análise adicional.
O diagrama seguinte mostra o fluxo do Power Automate para a solução de gestão de contratos.
Preparar o contrato para revisão
Quando um contrato é identificado e classificado pelo modelo de processamento de documentos não estruturado, o fluxo do Power Automate altera primeiro o estado para Em revisão.
Depois de dar saída do ficheiro, altere o valor de estado para Em revisão.
O próximo passo consiste em criar um cartão ajustável a indicar que o contrato está a aguardar revisão e a publicá-lo no canal Gestão de Contratos.
O código seguinte é o JSON utilizado para este passo no fluxo do 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"
}
}
]
}
Contexto condicional
No fluxo, em seguida, terá de criar uma condição na qual o seu contrato será aprovado ou rejeitado.
Se o contrato for aprovado
Quando um contrato é aprovado, ocorrem os seguintes procedimentos:
No separador Contratos , o estado no cartão do contrato será alterado para Aprovado.
No fluxo, o estado é alterado para Aprovado.
Nesta solução, os dados do contrato serão adicionados ao separador Para Pagamento para que os pagamentos possam ser geridos. Este processo pode ser alargado para permitir que o fluxo submeta os contratos para pagamento por uma aplicação financeira de terceiros (por exemplo, Dynamics CRM).
No fluxo, vai criar o seguinte item para mover contratos aprovados para o separador Para Pagamento .
Para obter as expressões para as informações necessárias no cartão do Teams, utilize os valores apresentados na tabela seguinte.
Name Expression Estado de aprovação body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')? ['submitActionId'] Aprovado por body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')? ['responder'] ['displayName'] Data de aprovação body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')? ['responseTime'] Comentar body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')? ['dados']? ['acComments'] O exemplo seguinte mostra como utilizar a caixa de fórmulas no Power Automate para escrever uma expressão.
Um cartão ajustável a indicar que o contrato foi aprovado é criado e publicado no canal Gestão de Contratos.
O código seguinte é o JSON utilizado para este passo no fluxo do 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."
}
Se o contrato for rejeitado
Quando um contrato é rejeitado, ocorrem os seguintes procedimentos:
No separador Contratos , o estado no cartão do contrato será alterado para Rejeitado.
No fluxo, pode dar saída do ficheiro do contrato, alterar o estado para Rejeitado e, em seguida, voltar a dar entrada do ficheiro.
No fluxo, cria um cartão ajustável que indica que o contrato foi rejeitado.
O código seguinte é o JSON utilizado para este passo no fluxo do 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."
}
O cartão é publicado no canal Gestão de Contratos.