2019年5月14日火曜日

Logic Apps の InlineCode コネクタで JavaScript を利用する

今年の Build でアナウンスがありましたが、Logic Apps の新規コネクタとして Inline Code が発表されました。これは Logic Apps 環境上でちょっとした処理を動かすことのできるコネクタで、処理の記述には JavaScript が現在利用できます(将来的に C# と PowerShell が利用できるとの発表もありました)。そこで、実際に利用してみて感じた点をまとめてみました。


今回検証してみたのは、このような形の LogicFlow です。Inline Code コネクタでは、JavaScript による値のソートを行わせています。

Inline Code コネクタへ渡す値は、次のような JSON の配列値を用意しました。

value という名前で、名前と年齢をもった JSON 値の配列が設定してあります。今回はこの配列を、年齢の降順でソートしてみました。その際の JavaScript を以下の様に記述します。


LogicFlow から受け取る値は、workflowContext オブジェクトとして渡されてきます。このオブジェクトでは、実行している LogicFlow 名やそのトリガ情報、アクション情報が設定されており、ここを参照するだけでここまで処理されたデータなどを利用することが可能です。その際、ダイアログに表示されている値を選択して利用することも可能で、実際に選択するとサンプルコードのように workflowContext.actions.作成.outputs といった JavaSciprt での記述が自動で挿入できます。また、コードを記載するエディタ上ではインテリセンスが動きますので、VSCode や Visual Studio でコードを記載するのと同じように、入力補完が行われるのは非常に便利なところです。

例えば、今回は作成アクションを利用して value という名前の値に配列を設定しているので workflowContext.actions.作成.outputs.value という書き方をすることで、作成した JSON 値を参照することができます。

実際の実行結果は上記のようになります。JavaSciprt 側で処理した結果が、予定した通りソートされているのが確認できます。このような感じで、これまで Logic Apps だけでは対応が難しかった場面で、JavaScript での処理を利用することができます。Azure Functions を作成することなく対応ができるようになりますので、さらに気楽に活用できるのではないでしょうか。

なお、現時点の仕様として外部モジュールの読み込みは提供していません。例えばハッシュ値の算出や暗号化を行う際に利用する crypto モジュールなどは、現時点では利用することができません。ある程度設定できるようになるとありがたいのですが・・・。

このあたりはセキュリティを考慮すると、致し方ないと理解できるのですが少々残念なところです。今後 C# や PowerShell でのコード記述が対応された場合には、恐らくさらにできることが増えていると思いますので、対応待ちというのも一つかと思います。

0 件のコメント:

コメントを投稿