0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

連続した承認(Sequential) を試す

本日、Power Apps界隈では神的存在のReza Dorraniから、かなりテンションが高まるPower Automateの新機能が紹介されていました。
今回は、この機能を以前記事で紹介した動的承認ワークフローの機能と組み合わせてテストしてみたいと思います!

承認

Power Automate経由で開始して承認を待機承認の種類に、連続した承認(Sequential)が追加されました。

image.png

これにより、複数名の担当者を設定して、一度の開始して承認を待機するアクションで複数名の回答を待つことができます。

界隈の凄い人はキャッチは凄く速い

Reza Dorrani氏しかり、尊敬するMatthew Devaney氏しかり、コルネ氏しかり、検証が速すぎ・・・。
すでに豊富に記事が豊富にあるので、私が書くのもおこがましいですが、自分なりの観点で感想を書いていきますね。

開始して承認を待機するの中身を見てみる

承認の結果は、TeamsOutlookどちらでも確認ができ、回答は同期されます。

image.png

多段階承認の様子はこのようなイメージ

image.png

各担当者のコメントを見ることができますね。

回答はresponseへ良い感じに格納されます。

body
{
  "responses": [
    {
      "responder": {
        "id": "---",
        "displayName": "出戻り ガツオ",
        "email": "email",
        "tenantId": "---",
        "userPrincipalName": "email"
      },
      "requestDate": "2024-06-18T11:37:59Z",
      "responseDate": "2024-06-18T11:41:35Z",
      "approverResponse": "Approve",
      "comments": "Outlookでも中身を確認できます。"
    },
    {
      "responder": {
        "id": "---",
        "displayName": "大久保 絵梨",
        "email": "SecondEmail.com",
        "tenantId": "---",
        "userPrincipalName": "SecondEmail.com"
      },
      "requestDate": "2024-06-18T11:37:59Z",
      "responseDate": "2024-06-18T11:40:33Z",
      "approverResponse": "Approve",
      "comments": "一旦承認します"
    },
    {
      "responder": {
        "id": "---",
        "displayName": "奥村 静佳",
        "email": "firstEmail.com",
        "tenantId": "---",
        "userPrincipalName": "firstEmail.com"
      },
      "requestDate": "2024-06-18T11:37:55Z",
      "responseDate": "2024-06-18T11:39:27Z",
      "approverResponse": "Approve",
      "comments": "とりあえず承認します。"
    }
  ],
  "responseSummary": "承認者: 出戻り ガツオ (email)\r\n応答: Approve\r\n依頼日: 2024年6月18日 11:37:59\r\n応答日: 2024年6月18日 11:41:35\r\n\r\n承認者: 大久保 絵梨 (SecondEmail.com)\r\n応答: Approve\r\n依頼日: 2024年6月18日 11:37:59\r\n応答日: 2024年6月18日 11:40:33\r\n\r\n承認者: 奥村 静佳 (firstEmail.com)\r\n応答: Approve\r\n依頼日: 2024年6月18日 11:37:55\r\n応答日: 2024年6月18日 11:39:27",
  "completionDate": "2024-06-18T11:41:36Z",
  "outcome": "Approve, Approve, Approve",
  "name": "---",
  "title": "連続した承認(Sequential)の初回テスト - 新規ウェブサイト開発プロジェクト",
  "details": "## プロジェクト名\n新規ウェブサイト開発プロジェクト\n\n## 内容\n新しいウェブサイトの開発プロジェクトの発注の承認をお願いします。\n\n|項目|詳細|\n|---|---|\n|目的|現在のウェブサイトの刷新|\n|スコープ|デザインリニューアル、UI改善|\n|スケジュール|2024年7月1日~12月31日|\n|予算|¥10,000,000|\n|チーム|佐藤花子(PM), 鈴木一郎(デザイナー), 高橋次郎(開発者)|\n",
  "itemLink": "https://learn.microsoft.com/ja-jp/connectors/approvals/#%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%A6%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E6%89%BF%E8%AA%8D%E3%82%92%E5%BE%85%E6%A9%9F",
  "itemLinkDescription": "Microsoft learn",
  "requestDate": "2024-06-18T11:37:55Z",
  "expirationDate": "9999-12-31T23:59:59Z",
  "priority": "Medium"
}

マークダウンを反映すると、下記のようにテーブル形式で表示されます。

image.png

Teamsのサポート状況は一体どう解釈すればよいのだろう🧐

https://learn.microsoft.com/ja-jp/power-automate/approvals-markdown-support

動的に承認ステップを設定するために

承認ステップを覗いてみると下記のようになっています。

image.png

Schema
[
  {
    "assignedTo": "ひとりめのメールアドレス"
  },
  {
    "assignedTo": "ふたりめのメールアドレス"
  },
  {
    "assignedTo": "さんにんめのメールアドレス"
  }
]

assignedTo: 担当者のメールアドレスのキーバリューの配列を設定すれば使えるということですね。

以前作ったアプリとコラボする

以前の記事で作成した動的承認ワークフローPower Appsとコラボしてみます。
今回はSharePointへの登録を省略する内容です。

image.png

OnSelect
// 1. JSON配列入力を設定
ClearCollect(
    colWorkflow,
    ForAll(
        galRoot.AllItems,
        {
            Step: Value(badgeIndex.Content),
            Claims: cmbPerson.Selected.Email,
            Name: cmbPerson.Selected.DisplayName
        }
    );
);

// 2. Power Automateの実行 
SequentialWF.Run(
    {
        contentBytes: First(valueAttachment.Attachments).Value,
        name: First(valueAttachment.Attachments).Name
    },
    JSON(
        {
            Title: valueTitle.Value,
            Details: valueDetails.Value
        }
    ),
    JSON(colWorkflow)
);

// 3. 通知
Notify(
    "承認ワークフローを実行しました。",
    NotificationType.Information
);

Power Automate

  1. Power Appsから受け取ったJSONを加工し
  2. 承認コネクタに渡す

ざっくりと二段階のステップで進めます。

(1) Power Appsから受け取る値

image.png

  • ファイル コンテンツ
  • タイトル詳細の文字列
  • 動的なワークフローの経路のJSON文字列

上記の三点。

コチラはシンプルに

image.png

タイトルと詳細の文字列のスキーマ
{
  "type": "object",
  "properties": {
    "Details": {
      "type": "string"
    },
    "Title": {
      "type": "string"
    }
  }
}

コチラはテーブルにしたり、申請経路の大本になります。

image.png

動的なワークフローの経路のJSON文字列
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "Claims": {
        "type": "string"
      },
      "Name": {
        "type": "string"
      },
      "Step": {
        "type": "integer"
      }
    },
    "required": [
      "Claims",
      "Name",
      "Step"
    ]
  }
}

選択結合でマークダウンの表に加工

ご参考までに!

■ 選択

image.png

From
@{body('ワークフローの申請経路')}
Map
@{concat('|',item()['Step'],'|',item()['Name'],'|')}

■ 結合

image.png

From
@{body('選択')}
Map


■ デモ用にファイルをアップロード

image.png

ファイルをアップロードして、承認用にアイテムのリンクファイルのプロパティの取得で取得

■ 承認コネクタの詳細用のMarkdown文字列の作成

コチラで加工した文字列をマージ

image.png

入力
## タイトル
@{body('ワークフローの記載事項')?['Title']}

## 詳細
@{body('ワークフローの記載事項')?['Details']}

|項目|詳細|
|---|---|
@{body('結合')}

動的承認のJSON配列入力の作成

動的承認のJSON配列選択で加工しました。

image.png

From
@{body('ワークフローの申請経路')}
Map
{
  "assignedTo": @{item()['Claims']}
}

あとは、もろもろ設定して実行してみましょう!

image.png

コード ビュー
{
  "type": "OpenApiConnectionWebhook",
  "inputs": {
    "parameters": {
      "approvalType": "Sequential",
      "WebhookApprovalCreationInput/title": "@body('ワークフローの記載事項')?['Title']",
      "WebhookApprovalCreationInput/steps": "@body('選択_assignedTo')",
      "WebhookApprovalCreationInput/details": "@{outputs('承認コネクタ用詳細')}",
      "WebhookApprovalCreationInput/itemLink": "@{body('ファイルのプロパティの取得')?['{Link}']}",
      "WebhookApprovalCreationInput/itemLinkDescription": "@triggerBody()?['file']?['name']",
      "WebhookApprovalCreationInput/enableNotifications": true
    },
    "host": {
      "apiId": "/providers/Microsoft.PowerApps/apis/shared_approvals",
      "connection": "shared_approvals",
      "operationId": "StartAndWaitForAnApproval"
    }
  },
  "runAfter": {
    "選択_assignedTo": [
      "Succeeded"
    ]
  }
}

結果は!!!

担当者が重複していると・・・

image.png

怒られました!

image.png

気を取り直して実行すると・・・

image.png

上手くいきましたね!

image.png

Outlookで見た場合

image.png

Power Automateのモバイルアプリで見た場合

image.png

結果はDataverse承認テーブルに格納されます。

image.png

こちらにストックされていくんですね。ほー。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?