Logic Apps の Refresh Update

先ほどのPostでも少し書きましたが、Logic Appsに大幅なUpdateがありました。

Logic Appsの裏側のアーキテクチャの大幅な変更、フローデザイナの強化などが主な変更点です。
(日本語圏的にはTwitter Connectorの文字化けが直ったことですかね…)

ドキュメントも大量に更新されてます。

料金やプランによる制限はこちら

スキーマバージョンが変わっているので古いデザイナで作ったLogic Appはスキーマをアップデートする必要があります。(詳細は割愛)

作り方

ポータル上でまずはLogic Appsを作成します。
image

出来上がったら新しくなったデザイナが表示されます。
image

簡単ですね。

依然と違って作成されるリソースもLogic Appsとそのプランの2つだけと非常にシンプルです。
image

概要ブレードや設定

image

最初は何もフローがないので状態はDisableです。
トリガーやアクション数、エラー数などのサマリやトリガの一覧、履歴などの一覧を見ることができます。
ちなみにLogic Appのエンドポイントは以下のような形式です。

https://<リージョン>.logic.azure.com:443/subscriptions/<サブスクリプションID>/resourcegroups/<リソースグループ名>/providers/Microsoft.Logic/workflows/<Logic Apps名>

後述しますが、Logic Appsに対していろいろ操作できるようになってます。(管理用なREST APIは別エンドポイントなようですが)
とりあえずアクセスしてみるとJSONでエラーが返ります(そりゃそうだ)
image

またFQDNを見るに、これまでのLogic AppsやAPI Appsとは違うアーキテクチャなことがわかりますね。

設定→Properties

image
エンドポイントやリソースID、アクセスキーを見ることができます。(認証に使うユーザー名は default かな)

フローデザイナ

ここが要のフローデザイナです。Triggers&Actionsから表示できます。
image

最初にスタートとなるトリガー部分ですが、マニュアル(Logic AppsのREST APIやポータル上から実行)、繰り返し(Recurrence)、その他コアコネクターと呼ばれる他のサービス上でのイベントをもとにスタートできます。

例えばFacebookのタイムラインにポストされたときとか、OneDriveやbox、Dropbox上に新しいファイルが作られた場合、ServiceBus Queueにメッセージが来た時などなど。

他のサービスと連携する場合は最初にアクセス許可を求められたりします。
image
その後各サービス固有のアクションや条件などを入力します。
image

その後の処理は「image」ボタンをクリックすれば次のアクションを追加できます。
現在利用できるコアコネクターの一覧はこちらを参照。

それぞれのアイコンを選択すると詳細ページが表示されてAPIを確認できます。
よく見るとわかりますが、PowerAppsで提供されるMS管理APIと同じものになります。コネクターの公開方法や利用方法がこちらの仕組みと同じになる感じですかね。ただPowerAppsのほうでは自前のAPIを登録できるのに対し、新しいLogic Appsのほうはまだそこまで出来ないようです。(結局API Appsで公開できれば利用可能になりそうですが)

条件分岐

アクションを追加する際、条件分岐を追加してフローを分岐させることもできます。
image

image

評価対象のオブジェクトがどういう条件になったら、というのを設定していく感じです。(直接テキストで式を書くことも可能です)
それぞれのフィールドは前のアクションなどから渡されたオブジェクトを選択するだけで指定できます(上図の場合は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に通知するという感じです。
実行するとこんな感じで処理されたことが分かります。
image

簡単ですね。

そのほかフロー内で利用できる関数などはこちらを参考に

実行結果の確認

実行結果は「All runs」を見れば詳細を追うことができます。また「Trigger History」ではトリガーを見れます。

image
それぞれ詳細を見ることもできます。
image
青字のリンクをクリックすればInputの情報、Outputの情報を見ることができます。
image
デバッグ時に助かりますね。全部のアクションに対して見れます。

また発火したかどうか(Triggerが実行されたかどうか)はTrigger Historyからたどれます。
image

参考:Logic Apps を監視する

REST API

Logic Appsには管理用、サービス用のREST APIが用意されています。

このあたりの詳細は別途。

Known Issue的なの

主にデザイナ周りですが。

  • アクションの削除(Delete)がうまくいかない(反応しない)
    • ブレード開いて(デザイナ開いて)すぐだと大丈夫ぽい
    • Code Viewのほうでサクッと消すなど
  • Twillio Connectorで+81が不正な番号扱い
  • Condition(分岐)で「Edit in advanced mode」にすると戻せない
    • 一度Code Viewにしてからデザイナに戻せば戻ります
  • アクションなどの追加時、キャンセルしたい
    • 一覧を一番下までスクロールするとCancelがあります
      image
  • ドキュメント周りが旧スキーマなLogic Appsと混じってるかもしれない
  • フローデザイナ開くとブレードが閉じれない
    • よくわからない…

いくつかの問題はフィードバック済みです。

今後は

ポータル見た限り、フローのバージョン管理や独自APIの利用といったところが実現できそうですね。
PowerAppsとの連携なども強化されるといいな。

 

フィードバック

こちらからどうぞ。

まとめ

Logic AppsそのものはまだまだPreviewですが、ぜひ触りまくってフィードバックや面白いフローを作って連携を初めて見てください。

コメントを残す