PowerApps で名刺管理アプリを作ってみる(2)

[前回](http://qiita.com/IKETA/items/132633f4988477809355) は PowerApps の環境 "My Environment" と Common Data Service (CDS) データベースで名刺エンティティを作成した。今回は、同じ環境に Microsoft Flow のワークフローを作成してみようと思う。

# Flow (フロー)
[フロー](https://flow.microsoft.com/ja-jp/) は、「データ操作の後にメール通知する」のような一連のタスクを、ワークフローとして作成することができる。作成したワークフローは、PowerApps アプリから呼び出すことができるので、アプリで行う "お決まりのパターン" をワークフロー化しておけばよい。

## ワークフローの作成
ここでは、データの追加、更新、削除が行われた後、Slack にデータが操作されたことを通知するワークフローを作成する。

初めに、PowerApps スタジオを開く。環境として前回作成した "My Environment" が指定されていることを確認し、[Flows] をクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/ee02550e-ed4d-3947-71db-d73c70c10746.png)

Web ブラウザで PowerApps ポータルが開き、フローの画面が表示される。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/7c54d8b3-27ed-26ac-7c98-f5c527230b0e.png)

### データ追加用ワークフロー
まずは、データ追加用のワークフローを作成してみよう。[一から作成] をクリックすると、フローの作成画面が表示される。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/2f14f003-8ba5-54fa-2bc1-bedb37210497.png)

[新しいステップ] - [アクションの追加] をクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/f4e83d33-1fb5-51f7-5a01-341fc431f023.png)

検索フィールドに "Common" と入力すると、Common Data Service 用のアクションが表示されるので、その中から [Common Data Service - Create a new record] をクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/3d61d60d-d05a-fe11-c671-c0769a0666de.png)

以下の画面が表示された場合は、[無料体験する] をクリックする。
<img width="275" src="https://qiita-image-store.s3.amazonaws.com/0/153436/aa3892f7-e877-2b56-03d4-5a138e6127e3.png">

The database に "default"、The entity に "名刺" を選択する。すると名刺エンティティのフィールドが表示される。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/661438d3-e4de-48d7-c2d0-d6fc6c2f4689.png)

会社名のテキストボックスをクリックすると、動的なコンテンツの追加ウィンドウが表示されるので、[PowerApps で確認] をクリックする。PowerApps で確認とは、「アプリのテキストボックスなどでユーザーが指定した値を使用する」ということである。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/5f004797-6431-ea47-6d15-1e9fbd482684.png)

同様に、すべてのフィールドで [PowerApps で確認] を指定する。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/8211a228-12cf-e0ee-e390-7375c82163e2.png)

続いて、[新しいステップ] - [アクションの追加] をクリックし、検索フィールドに "Slack" と入力する。Slack へポストするアクション [Slack - Post Message] が表示されるので、それをクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/f5c63746-0511-41d7-b5a7-9c3c98d225fa.png)

Slack へのサインインを要求されるので、[サインイン] をクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/9f9781f6-78b6-0245-3474-b5702c6ba350.png)

Slack のチーム名を入力して、[Continue] をクリックする。チームがない場合は、[Create a new team] から作成する。詳しくは [こちら](https://get.slack.help/hc/en-us/articles/206845317-Create-a-Slack-team) を参考にしていただきたい。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/39d9b5ae-f4bb-323a-a874-5e059429f9c1.png)

メールアドレスとパスワードを入力して、サインインする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/703c753c-4cae-3c51-aa49-be70f55267d9.png)

以下のような画面が表示されるので [Authorize] をクリックする。
※チーム名は伏せてある。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/8495d548-641f-0960-909d-fe48a75ff0b2.png)

サインインが完了すると以下の画面が表示されるので、Channel Name に任意のチャネル名を指定する。ここでは Slack にデフォルトで用意されているチャネル "#general" を指定する。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/8c8fb7b4-6194-e2bc-ce19-a88b7c4fa417.png)

Message Text をクリックすると、動的なコンテンツの追加ウィンドウが表示されるので、名刺エンティティに追加されるフィールドを指定して、以下のようにする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/14237240-680b-db54-10a3-c9eb90b52452.png)

これで、データ追加用のワークフローが完成した。最後に、フロー名を "BusinessCard-Insert" とし、[フローの作成] をクリックする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/83bc2edd-4ac2-2f86-cf82-0d92d5ae309b.png)

[完了] をクリックすると、このワークフローが使用できる状態になる。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/15aac12f-85b7-50d0-e76c-e8086f8a4238.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/153436/4f3340d5-1308-3234-c817-2b75be769db6.png)

### データ更新用ワークフロー
同様にして、更新用のワークフローを作成する。作成の流れは、データ追加用ワークフローと同じだ。
最初に追加するアクションは [Common Data Service - Update a record] であり、以下のようにする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/ecc8af72-3f5a-7032-22e5-f478a3cc25df.png)

Slack への通知は、以下のようにする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/e5eb6cff-a998-1102-0e97-a05f437c5b76.png)

フロー名を "BusinessCard-Update" とし、作成する。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/342b14d6-b197-7550-ea22-fe9f071da71c.png)

### データ削除用ワークフロー
同様にして、削除用のワークフローを作成する。
最初に追加するアクションは [Common Data Service - Delete a record] であり、以下のようにする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/7b4cbbc1-eb1f-98ba-a3da-993c05421d73.png)

Slack への通知は、以下のようにする。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/a0a80fed-5f31-f344-3c30-85e38abd6435.png)

フロー名を "BusinessCard-Delete" とし、作成する。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/9fe0e88a-72c5-8659-467a-18121106bb48.png)

## 作成したワークフローの確認
PowerApps ポータルのフローを確認すると、先ほど追加したワークフローが登録されている。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/3aee4f78-4350-e5e5-81ca-0c4eb18a39e7.png)

## 接続について
メニューから [接続] をクリックすると、データソースに接続するための定義が作成されていることを確認できる。Common Data Service の接続は、データベースを作成したときに自動で作成される。Slack の接続は、先ほどのワークフロー作成時に追加したものだ。
![image](https://qiita-image-store.s3.amazonaws.com/0/153436/fd427574-bdbb-481e-b21c-9b3f9a4da439.png)


# まとめ
今回は、Microsoft Flow を使用して、PowerApps アプリから呼び出すためのワークフローを作成した。Flow は PowerApps だけが動作起点となるわけではなく、例えば「Twitter でツイートされた時」などの複数のトリガーが用意されているので、いろいろと試してみるとよいだろう。ワークフローの作成も直感的にできるため、簡単なタスクならばすぐに自動化できるのも魅力的だ。
データベースとワークフローの用意ができたので、次回は PowerApps アプリの作成と組織への公開を行ってみる。


# 参考文献
Flow プロセスとタスクの自動化
https://flow.microsoft.com/ja-jp/

Add multiple actions and advanced parameters to a flow
https://flow.microsoft.com/ja-jp/documentation/multi-step-logic-flow/