先ほどのPostでも少し書きましたが、Logic Appsに大幅なUpdateがありました。
- Azure Logic Apps が大幅にアップデートされたので試した
- Deploying in the Logic Apps Preview Refresh
- Azure LogicApps がアップデートされました
- Logic Apps Preview Refresh released
- Microsoft release new Logic Apps Designer – but how do you use BizTalk Connectors or v1 API Apps?
- Deploying in the Logic Apps Preview Refresh
Logic Appsの裏側のアーキテクチャの大幅な変更、フローデザイナの強化などが主な変更点です。
(日本語圏的にはTwitter Connectorの文字化けが直ったことですかね…)
ドキュメントも大量に更新されてます。
料金やプランによる制限はこちら
スキーマバージョンが変わっているので古いデザイナで作ったLogic Appはスキーマをアップデートする必要があります。(詳細は割愛)
作り方
簡単ですね。
依然と違って作成されるリソースもLogic Appsとそのプランの2つだけと非常にシンプルです。
概要ブレードや設定
最初は何もフローがないので状態はDisableです。
トリガーやアクション数、エラー数などのサマリやトリガの一覧、履歴などの一覧を見ることができます。
ちなみにLogic Appのエンドポイントは以下のような形式です。
https://<リージョン>.logic.azure.com:443/subscriptions/<サブスクリプションID>/resourcegroups/<リソースグループ名>/providers/Microsoft.Logic/workflows/<Logic Apps名>
後述しますが、Logic Appsに対していろいろ操作できるようになってます。(管理用なREST APIは別エンドポイントなようですが)
とりあえずアクセスしてみるとJSONでエラーが返ります(そりゃそうだ)
またFQDNを見るに、これまでのLogic AppsやAPI Appsとは違うアーキテクチャなことがわかりますね。
設定→Properties
エンドポイントやリソースID、アクセスキーを見ることができます。(認証に使うユーザー名は default かな)
フローデザイナ
ここが要のフローデザイナです。Triggers&Actionsから表示できます。
最初にスタートとなるトリガー部分ですが、マニュアル(Logic AppsのREST APIやポータル上から実行)、繰り返し(Recurrence)、その他コアコネクターと呼ばれる他のサービス上でのイベントをもとにスタートできます。
例えばFacebookのタイムラインにポストされたときとか、OneDriveやbox、Dropbox上に新しいファイルが作られた場合、ServiceBus Queueにメッセージが来た時などなど。
他のサービスと連携する場合は最初にアクセス許可を求められたりします。
その後各サービス固有のアクションや条件などを入力します。
その後の処理は「」ボタンをクリックすれば次のアクションを追加できます。
現在利用できるコアコネクターの一覧はこちらを参照。
それぞれのアイコンを選択すると詳細ページが表示されてAPIを確認できます。
よく見るとわかりますが、PowerAppsで提供されるMS管理APIと同じものになります。コネクターの公開方法や利用方法がこちらの仕組みと同じになる感じですかね。ただPowerAppsのほうでは自前のAPIを登録できるのに対し、新しいLogic Appsのほうはまだそこまで出来ないようです。(結局API Appsで公開できれば利用可能になりそうですが)
条件分岐
アクションを追加する際、条件分岐を追加してフローを分岐させることもできます。
評価対象のオブジェクトがどういう条件になったら、というのを設定していく感じです。(直接テキストで式を書くことも可能です)
それぞれのフィールドは前のアクションなどから渡されたオブジェクトを選択するだけで指定できます(上図の場合はTwitter TextやTweeted byなど)
「if yes」のグレーの囲みの中は条件が成立した場合に処理するフローです。この中でも複数アクションを追加してくことができます。
「If no, do nothing」の場合は何もしないか、条件が成り立たなかった場合に実行するアクションを追加できます。
条件分岐した先のアクションではさらに分岐させることはできませんが、全体的に分岐の処理が終わった後の継続アクションではまたアクションおよび分岐を追加できます。
フローは以前と同じでJSONで定義されていて自前でゴリゴリ書いたり、取得したりできます。
例:
{ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2015-08-01-preview/workflowdefinition.json#", "actions": { "Post_Message": { "conditions": [ { "expression": "@contains(triggerBody()['TweetText'], 'jp')" } ], "inputs": { "host": { "api": { "runtimeUrl": "https://logic-apis-japanwest.azure-apim.net/apim/slack" }, "connection": { "name": "@parameters('$connections')['slack']['connectionId']" } }, "method": "post", "path": "/chat.postMessage", "queries": { "channel": "#general", "text": "@{triggerBody()['TweetText']}" } }, "type": "ApiConnection" } }, "contentVersion": "1.0.0.0", "outputs": {}, "parameters": { "$connections": { "defaultValue": {}, "type": "Object" } }, "triggers": { "When_a_new_tweet_appears": { "conditions": [], "inputs": { "host": { "api": { "runtimeUrl": "https://logic-apis-japanwest.azure-apim.net/apim/twitter" }, "connection": { "name": "@parameters('$connections')['twitter']['connectionId']" } }, "method": "get", "path": "/onnewtweet", "queries": { "searchQuery": "Azure" } }, "recurrence": { "frequency": "Hour", "interval": 1 }, "splitOn": "@triggerBody()?.value", "type": "ApiConnection" } } }
Twitterのタイムラインを「Azure」で検索してTweet本文にjpって含まれてたらSlackに通知するという感じです。
実行するとこんな感じで処理されたことが分かります。
簡単ですね。
そのほかフロー内で利用できる関数などはこちらを参考に
実行結果の確認
実行結果は「All runs」を見れば詳細を追うことができます。また「Trigger History」ではトリガーを見れます。
それぞれ詳細を見ることもできます。
青字のリンクをクリックすればInputの情報、Outputの情報を見ることができます。
デバッグ時に助かりますね。全部のアクションに対して見れます。
また発火したかどうか(Triggerが実行されたかどうか)はTrigger Historyからたどれます。
REST API
Logic Appsには管理用、サービス用のREST APIが用意されています。
このあたりの詳細は別途。
Known Issue的なの
主にデザイナ周りですが。
- アクションの削除(Delete)がうまくいかない(反応しない)
- ブレード開いて(デザイナ開いて)すぐだと大丈夫ぽい
- Code Viewのほうでサクッと消すなど
- Twillio Connectorで+81が不正な番号扱い
- Condition(分岐)で「Edit in advanced mode」にすると戻せない
- 一度Code Viewにしてからデザイナに戻せば戻ります
- アクションなどの追加時、キャンセルしたい
ドキュメント周りが旧スキーマなLogic Appsと混じってるかもしれない- フローデザイナ開くとブレードが閉じれない
- よくわからない…
いくつかの問題はフィードバック済みです。
今後は
ポータル見た限り、フローのバージョン管理や独自APIの利用といったところが実現できそうですね。
PowerAppsとの連携なども強化されるといいな。
フィードバック
こちらからどうぞ。
まとめ
Logic AppsそのものはまだまだPreviewですが、ぜひ触りまくってフィードバックや面白いフローを作って連携を初めて見てください。