多段階承認で申請者がキャンセルしたいので教えてください。
承認フロー、承認キャンセルフローの作成ポイントについて説明しますね。
この記事は、多段階承認キャンセル(取り下げ)の作成手順です。
下記画像のように承認要求をキャンセルにします。
本記事の内容
- 承認要求キャンセルはDataverseでできる
- 承認フローは「承認を作成」「承認を待機」を使う
- 承認要求キャンセルフローの作成手順
[/st-mybox]
承認要求キャンセルはDataverseでできる
承認フローを作成するとDataverseに保存されます。
保存先は、Power Appsの「テーブル」→「すべて」の中の「承認」になります。
ここで表示されない、編集できないという方は権限がありません。
またPower AutomateのプレミアムコネクタDataverseが必要になります。
編集権限がある管理者は、「編集」をクリックします。
作成日を降順にして、非表示の列を表示させると保留中の承認要求を確認することができます。
※非表示の列は沢山あるのですべて表示してみましょう。
申請をして承認要求します。メール、Teams承認アプリに承認要求された状態です。
承認テーブルのステージ「完了」、結果「キャンセル」に変更すると承認要求が完了になります。
※わかりやすいように列をしています。
これをPower Automateのフローで行います。
承認フローは「承認を作成」「承認を待機」を使う
普段は、「開始して承認を待機」のアクションを使いますが、Dataverseの行を更新するのに承認IDをリストに持たせる必要があります。
なので「承認を作成」と「承認を待機」の2つのアクションを使い間に「項目の更新」をします。
多段階承認でDo untilなどのループ処理を使う場合も同様に同じ列、承認ID(ApprovalID)を更新するようにしてください。
それからこのフローを取り消ししたい場合は、承認フローの実行IDが必要になるので、実行ID(ExecutionID)の列にworkflow関数を使って追加してください。
workflow()?['run/name']
ここまでできたら次に承認要求キャンセルフローを作成します。
承認要求キャンセルフローの作成手順
承認要求のキャンセルは、リストから実行できるようにします。
リストの承認IDからDataverseのレコードを取得して更新、そのあとに実行IDからフローを取り消しするという流れになります。
申請リストは、わかりやすいようにタイトル、承認者(Authorizer)、承認ID(ApprovalID)、実行ID(ExecutionID)のみにしています。
※承認ステータス(承認待ち、承認、拒否)の選択肢はありません。
Power Automate承認要求キャンセルフロー
step
1フロー作成(トリガー)
インスタントクラウドフローから「選択したアイテムの場合」を選択して、フローを作成します。
①「作成」→「インスタントクラウドフロー」をクリックします。
②フロー名『承認要求キャンセル』を入力し、「選択したアイテムの場合」を選択、「作成」をクリックします。
③サイトのアドレス、リスト名を選択します。
step
2項目の取得を追加
選択しているアイテムの値を取得するため、項目の取得のアクションを追加します。
④「新しいステップ」→「項目の取得」のアクションを追加します。
⑤サイトのアドレス、リスト名を選択、IDに「ID」を追加します。
step
3Dataverseの行を取得
ApprovalIDから承認テーブルの行を取得します。
⑥「新しいステップ」→「行を一覧する」のアクションを追加します。
⑦テーブル名「承認」、「詳細オプションを表示する」をクリックし、行のフィルターに下記を追加します。
msdyn_flow_approvalid eq '@{outputs('項目の取得')?['body/ApprovalID']}'
step
4Dataverseの行を更新
承認テーブルのステージ「完了」、結果「キャンセル」に更新します。
※承認ステージキー、タイムゾーン規則、完了日時、状態は他の承認フローに合わせるように更新しました。
⑧「新しいステップ」→「行を更新する」のアクションを追加します。
⑨テーブル名「承認」、IDに下記式を追加、ステージ「完了」を選択、「詳細オプションを表示する」をクリックし、結果『キャンセル』と入力します。
※ループ処理にならないようにfirst関数を使っています。
first(outputs('行を一覧にする')?['body/value'])?['msdyn_flow_approvalid']
step
5フロー実行を取り消す
Power Automate Managementのコネクタの「フロー実行を取り消す」を追加します。
実行IDはリストのアイテムにある「ExecutionID」を追加します。
⑩「新しいステップ」→「フロー実行を取り消す」のアクションを追加します。
⑪環境、Flow、実行IDに「ExecutionID」を追加します。
⑫「保存」をクリックします。
⑬フローのIDをコピーしたリストのButtonの列の書式設定に下記JSONを貼り付けます。
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "span", "style": { "color": "#fff", "font-weight": "bold", "background-color": "#6a5acd", "margin-top": "2px", "margin-bottom": "2px", "margin-left": "auto", "margin-right": "auto", "border-radius": "3px", "cursor": "pointer" }, "children": [ { "elmType": "span", "attributes": { "iconName": "Flow" }, "style": { "margin-left": "5px" } }, { "elmType": "button", "style": { "border": "none", "background-color": "transparent", "color": "#fff", "cursor": "pointer" }, "txtContent": "申請キャンセル", "customRowAction": { "action": "executeFlow", "actionParams": "{\"id\":\"ここにフローIDを追加\"}" } } ] }
フローを実行すると、承認要求はキャンセルになります。
フローは待機になったままですが、数時間後に取り消しになります。
まとめ
今回は、承認要求キャンセル、フロー実行取り消しについて説明しました。
多段階承認ワークフローでは申請者→1次承認者→2次承認者→3次承認者のように、要求者と承認者が変わっていきます。
2次承認者以上進んだ場合の要求キャンセルは、申請者からは要求キャンセルできないので、Power Automateを使ってDataverseの承認テーブルを更新するしましょう。
プレミアムコネクタ(Power Automate Premium)が必要になりますが、フロー所有者のみ有料ライセンスにして対応できるのでご検討ください(月2068円、2023年8月現在)。
※実行のみのユーザーの設定にすればOKです。
また、Microsoft365の承認ワークフローを導入したい場合は、ビデオチャットで導入までサポートするので見積り相談ください。
※会社で導入されてたい方を対象にしています。