手順 3. Power Automate を使用して、コントラクトを処理するフローを作成する

コントラクト管理チャネルを作成し、SharePoint ドキュメント ライブラリをアタッチしました。 次の手順では、Syntex モデルで識別および分類されるコントラクトを処理する Power Automate フローを作成します。 この手順を実行するには、 SharePoint ドキュメント ライブラリに Power Automate フローを作成します

コントラクト管理ソリューションの場合は、Power Automate フローを作成して次のアクションを実行する必要があります。

  • Syntex モデルによってコントラクトが分類されたら、コントラクトの状態を [レビュー中] に変更します。
  • その後、契約がレビューされ、承認または拒否されます。
  • 承認済み契約の場合、契約情報は支払処理のタブに転記されます。
  • 拒否された契約の場合、チームは詳細な分析のために通知されます。

次の図は、コントラクト管理ソリューションの Power Automate フローを示しています。

ソリューション全体を示すフロー図。

レビューのために契約を準備する

非構造化ドキュメント処理モデルによってコントラクトが識別され、分類されると、Power Automate フローは最初に状態を [レビュー中] に変更します。

更新の状態。

ファイルをチェックアウトしたら、状態の値を [レビュー中] に変更します。

レビュー状態。

次の手順では、コントラクトがレビューを待ち、コントラクト管理チャネルに投稿していることを示すアダプティブ カードを作成します。

契約レビュー投稿。

レビュー用のアダプティブ カードを作成します。

次のコードは、Power Automate フローのこの手順で使用される JSON です。

{
"$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')?['responder']['displayName']
    承認日 body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['responseTime']
    コメント body('Post_an_Adaptive_Card_to_a_Teams_channel_and_wait_for_a_response')?['data']?['acComments']

    次の例は、Power Automate の数式ボックスを使用して式を記述する方法を示しています。

    式式を示す Power Automate のスクリーンショット。

  • 契約が承認されたことを示すアダプティブ カードが作成され、コントラクト管理チャネルに転記されます。

    契約の承認が転記されました。

    アダプティブ カードの承認。

    次のコードは、Power Automate フローのこの手順で使用される JSON です。

{ 
    "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."
}

契約が拒否された場合

コントラクトが拒否されると、次のことが発生します。

  • [ 契約 ] タブで、契約カードの状態が [拒否] に変更されます。

    カードの状態が拒否されました。

  • フローでは、コントラクト ファイルをチェックアウトし、状態を [拒否済み] に変更してから、ファイルを再度チェックインします。

    コントラクト ファイルで拒否されたフローの状態。

  • フローでは、コントラクトが拒否されたことを示すアダプティブ カードを作成します。

    フローの状態は、アダプティブ カードで拒否されたことを示します。

次のコードは、Power Automate フローのこの手順で使用される JSON です。

{ 
    "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."
}
  • カードは契約管理チャネルに転記されます。

    拒否するアダプティブ カードをフローします。