2018年4月16日月曜日

Logic Apps 新型 IF コネクタへ記述変更するには

以前のアップデートで、Logic Apps の IF コネクタが更新され、新しくネストした条件であっても記述が非常に楽になりました。少し前まで日本語訳がアレなのはありましたけども、複数の判定条件を扱いやすくなっています。ですが、これまでの IF コネクタと記載方法が変わっており、自動でアップデートされることはありません。これをアップデートするには、CodeView で直接記述を変更する必要があるので、どう書き換えるのかをまとめました。

書き換えのサンプルとして、以下の IF コネクタを書き換えてみます。

image

これまでの IF コネクタでは、条件部分が上記のように表示されています。

image

対して新型 IF コネクタでは、このように複数条件に対応したデザイナーとなります。それぞれどのように記載されているかを比較してみます。

image

こちらがこれまでのものです。expression の値として「条件式が記述」されているのが見えます。

image

こちらが新しいものです。expression の値はあるのですが「配列を指定」しています。ここでの配列が、デザイナー上で表現されている各行の条件式となります。

image

上記のように、すべて(AND)と次を満たすもの(OR)、さらにはグループをを組み合わせると・・・。

image

このように設定した条件が配列として設定されているのがわかります。そしてその構造は、デザイナー上で見ている構造そのものに近く、意外にわかりやすいものとなっています。

最終的に、このような配列で記述できれば、新しい IF コネクタとなりますので、実際に書き換えを行ってみます。書き換え対象は、元々
"expression": "@contains(string(coalesce(outputs('Tags値の抽出'),'')), outputs('LogicFlow名の抽出'))"
と記載されていた部分です。ここを配列化します。

"expression": {
     "and":[
         {
             "contains":[
                 "coalesce(outputs('Tags値の抽出'),'')",
                 "outputs('LogicFlow名の抽出')"
             ]
         }
     ]
}

今回は条件が一つなので、シンプルな形になります。もともとの条件は「outputs('Tags値の抽出')=Tag値の抽出コネクタの計算結果」に「outputs('LogicFlow名の抽出')=LogicFlow名の抽出コネクタの計算結果」が「含まれている(contains)」かどうか、というものです。

expression 配下に and 要素を用意し、その中に contains となる条件を記載します。書き換え方法としては、このように条件を記載し、そのあとに値を設定することになります。利用できる条件はこれまで同様、デザイナー上で選択できるものとなります。これらはすべてワークフロー関数として用意されているものですので、該当する式名を要素名として記載します。

image

先に記載したものを CodeView にて貼り付けてみると、次のように表示されるかと思います。

image

一見よさそうに見えますが、よく見ると条件の値がどちらも文字列として認識されています。これを修正するには、CodeView 上での記述で @ をつけた形にて記載する必要があります。

image

このようにすることで、正しく新しい IF コネクタの記述方式に移行が可能です。

image

実際のところ、既に動作しているのであれば書き換える必要は全くありませんw

デザイナー上の表示をどちらかに統一したい場合に限り、書き換えを行うのが良いと思います。

0 件のコメント:

コメントを投稿