The 1st Step LogicFlow
2017/06/24
小尾 智之
Self Introduction
Attribute1: VB / LogicApps-Flow
@twit_ahf
Attribute2: 提督 / 殿 / メガネ / クマ / プロレス / ヤマト /もっふり
tomoyuki.obi http://el.jibun.atmarkit.co.jp/ahf/
Community: LogicFlow-ja / CLR/H
Microsoft MVP for Microsoft Azure(2017.03 ~)
https://www.facebook.com/groups/logicflowja/
Agenda
• LogicApps/Flow/PowerApps とは
– LogicFlow 基本機能
– LogicApps と Flow の違い
– HybridConnection と OnPremiss DataGateway
– Enterprise Integration Pack
• LogicFlow の各機能
• Flow/PowerApps モバイルアプリ
LogicFlow is iPaas
iPaas = Integration Platform as a Service
> ≧
IFTTT は非常に多くのサービスと連携可能
間に制御を挟まないシンプル構成
IFTTT / Flow / LogicApps
Flow / LogicApps はユーザーが制御を挟む余地がある
サービス数はまだ限られている
一般ユーザー ITPro
トリガ
アクション
LogicFlow の基本形
イベントをトリガで受け取り
後続のアクションで処理を
行うサーバーレスなもの
Ver 2014-12-01
Ver 2015-08-01
Ver 2016-06-01
LogicApps はそろそろ GA 1 周年
アイコンも新しくなって1年弱
LogicApps 従量課金プラン
LogicApps AppService プラン
https://azure.microsoft.com/ja-jp/pricing/details/logic-apps/
Flow とは課金単位が異なる
LogicApps プランの切り替え
Param(
[string] $AppService_RG = {AppService の ResourceGropu 名},
[string] $AppService_Name = {AppService の名前},
[string] $LogicApp_RG = {LogicApps の ResourceGroup 名},
[string] $LogicApp_Name = {LogicApps の名前},
[string] $subscriptionId = {サブスクリプションのID}
)
Login-AzureRmAccount
Set-AzureRmContext -SubscriptionID $subscriptionId
$subscription = Get-AzureRmSubscription -SubscriptionId $subscriptionId
$appserviceplan = Get-AzureRmResource -ResourceType "Microsoft.Web/serverFarms" -
ResourceGroupName $AppService_RG -ResourceName $AppService_Name
$logicapp = Get-AzureRmResource -ResourceType "Microsoft.Logic/workflows" -
ResourceGroupName $LogicApp_RG -ResourceName $LogicApp_Name
$sku = @{
"name" = $appservicePlan.Sku.tier;
"plan" = @{
"id" = $appserviceplan.ResourceId;
"type" = "Microsoft.Web/ServerFarms";
"name" = $appserviceplan.Name
}
}
$updatedProperties = $logicapp.Properties | Add-Member @{sku = $sku;} -PassThru
$updatedLA = Set-AzureRmResource -ResourceId $logicapp.ResourceId
-Properties $updatedProperties -ApiVersion 2016-06-01
Add-AzureRmAccount
Set-AzureRmContext -SubscriptionID {SubscriptionID}
Set-AzureRmLogicApp -ResourceGroupName
{ResourceGroupName} -Name {LogicFlowName}
-AppServicePlan {PlanName}
要 EA 契約
(または GA 前の LogicApps)
Ptn 1: Ptn 2:
LogicApps 仕様と制限
最大実行継続時間 90 日
ストレージリテンション期間 90 日
最小繰り返し時間 1 秒
最大繰り返し間隔 500 日
ForEach レコード数 100,000
Loop Until 回数 5,000
SplitOn 最大数 100,000
ForEach 並列処理数 20
アクション実行数(5分間) 100,000
同時呼出し数 2,500
エンドポイント同時受信数 1,000
エンドポイント読み取り可能呼出し数 60,000
エンドポイント起動可能呼出し数 45,000
ワークフローでのアクション数 250
ワークフロー内部でのネスト数 5
1リージョンでのワークフロー数 1,000
ワークフローごとのトリガ数 10
一つの式での最大文字数 8,192
アクション/トリガ名の文字数 80
コメントの文字数 256
パラメーター数 50
Microsoft Flow 料金プラン
1 ユーザー 25 LogicFlow が定義可能
(リクエスト送付で拡張可能)https://flow.microsoft.com/ja-jp/pricing/
Flow プランでの機能制限
Premium 系コネクタは Plan1 / 2 でのみ利用可能
PowerApps 料金プラン
https://powerapps.microsoft.com/ja-jp/communityplan/
PowerApps コミュニティプラン
Enterprise Integration
SNS
Office365 / Dynamics365
Data Connect
Web Service
Azure Service
Online Storage
Notification
Standard Connecter
Cognitive Service
Button
Approval
Enterprise Integration
SNS
Office365 / Dynamics365
Data Connect
Web Service
Azure Service
Online Storage
Notification
Standard Connecter
Cognitive Service
Button
Approval
LogicApps Only
Enterprise Integration
SNS
Office365 / Dynamics365
Data Connect
Web Service
Azure Service
Online Storage
Notification
Standard Connecter
Cognitive Service
Button
Approval
Flow Only
LogicFlow 基本コネクタ
スケジュール
OpenAPI(Swagger) 定義された
API 呼出
HTTPS リクエスト
RSSFTP/SFTP
HTTP/HTTPS
WebHook
Mail(SendGrid)
SMTP
変数
制御HTTP レスポンス
データ操作
PowerApps
プッシュ通知
Flow Button
HTML-テキスト変換
PowerApps用プッシュ通知
条件判断 / Condition
IF ~ THEN ~ ELSE(条件分岐)
Switch Case(条件多分岐)
繰り返し / Loop
Do Until ループ
ForEach ループ
ループが一定時間内に終了しない場合に
タイムアウトとする場合は
ISO 8601 形式でタイムアウト条件を設定
規定では 20 アクションの並列動作
operationOptions:Sequential で変更可能
ブロック化 / Scope
処理のブロック化
実行条件の構成 / RunAfter
ブロック化した場合は
「ブロック内部の処理が何か一つでも失敗したら」
という条件で利用できる
並列分岐 / RunAfter(2)
デザイナー上から
並列動作させるアクションを直接設定可能
RunAfter 設定を変更し
どのコネクタの後に実行するかを
設定している
変数/ Variables
初期化を先に実施する必要がある
データ操作 / Compose
関数で行っていたものが
コネクタ化され簡易に利用可能
inputArguments.Select(Function(x)
Return New With {Key x.orgArg1,
Key x.orgArg2,
Key Sum(x.orgArg3)}
End Function).ToArray
選択/ Selecct
配列オブジェクトの再定義
inputArguments.Select(x => new {x.orgArg1,
x.orgArg2,
Sum(x.orgArg3)}).ToArray()
選択/ Selecct
再試行ポリシー/ Retry Policy
動作エラーになったものを
何回(Limit)
どの程度の間隔で(Duration)
再実行するかを設定
HTTP コネクタの仕様と制限
Request
Response
HTTP ステータス 200 が正常終了
202 は処理継続中として Retry-After ヘッダ値に基づいてポーリング
Location ヘッダの値がある場合、再試行時にリクエストを投げる URL が変化
ワークフローが開始されるのは、ステータス 200 の時に限定される
再試行ポリシーは HTTP コネクタに設定可能
CodeView 上で LogicFlow を直接記載
デザイナーでは未サポート
動作自体は問題なく可能
マルチトリガ / Multi Trigger
演算子 / Operator
.
?
‘
[]
?演算子は特に重要で
値がない事が想定される場合は
必ず使うのがよい
関数 / Workflow Functions
Referencing functions
Collection functions
String functions
Logical functions
Conversion functions
Math functions
Date functions
Workflow functions デザイナ上でインテリセンス等サポートはない
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-workflow-definition-language
Functions の書き方
最初の関数のみ @ をつける必要がある
文字列は ‘ でのみ囲める
デザイナー上で記載する場合は「詳細設定」
LogicApps なら CodeView で記載するのを活用
Azure Function App
LogicFlow デザイナー上で
直接 FunctionApp を記述可能
(ただし js のみ)
Hybrid Connection
(ServiceBus – Relay)
OnPremiss Data Gateway
(ServiceBus – Queue)
OnPremiss DataGateway
対象コネクタ
DataGateway はメッセージを
ポーリングする方式でやり取りを行う
(リアルタイム性は若干落ちる)
•ルートフォルダ:接続先 PC でのローカルパス
(共有はかけなくても大丈夫)
•認証タイプ:Windows 認証
•ユーザー名:(マシン名)¥(アカウント) を入力
AD アカウントではないので注意!
•パスワード:パスワードを入力
•ゲートウェイ:インストールしたゲートウェイを選択
DataGateway 利用ポート
TCP 443 (既定値) / 5671 / 5672 / 9350 ~ 9354
データ送信のみで受信は必要ない
HTTPS を強要する場合は config ファイルの書き換えかインストーラから設定
_, ._
(;゚ Д゚) …!?
Enterprise Integration
統合アカウント
ファイルからのエンコード
ファイルへのデコード
XML の検証 XML 変換
EDIFACT
AS2
X12
特定プロトコルの
コネクタは用意済
Visual Studio に EIP 拡張機能をインストール
VS 上でスキーマやマップの定義を行い
Azure へアップロードが必要
BizTalk Server ArchitectureBizTalk Server Architecture
BizTalk Service Architecture
BizTalk の「オーケストレーション」部分を
Enterprise Integration Pack として提供
LogicApps ブレード上の設定項目
基本情報や
アカウントへの権限付与
デザイナーやコード表示
バージョン履歴に
LogicApps で利用してい
る接続管理
EIP やアクセス制御
テンプレート化
動作している LogicApps
の監視設定
実行履歴 / History
コネクタによっては BASE64 し
結果をやり取りするものもある
バージョン履歴 / Version
編集履歴より
過去のバージョンへ
戻すことが可能
履歴表示時に
「昇格」
で復元される
テンプレート生成 / Template
Template 化することで Github などからの
デプロイも可能
新規作成時のデフォルト値を
定義したテンプレートも作成可能
Azure Alert の LogicApps 呼出し
Azure の各種サービスでAlert が発生した際に
実行する LogicApps を指定できる
Alert ルールはメトリックとして定義可能
Flow で定義した LogicFlow を呼出したい際は
Webhook として Request コネクタで
生成された URL を指定することで可能
(ブレード上 LogicApps 呼出がない際も同様)
発生した Alert の集約も非常に簡単に行える
LogicApps のセキュリティ
LogicFlow にアクセスできる
IP アドレスの制限を指定可能
Flow のセキュリティ
複数の環境を作成して
ユーザーを切り分ける
接続可能なコネクタルールを定義し
不用意にデータ流出を行えなくする
Log Analytics
細かい設定なしで LogicApps のログ情報を
OMS へと連携が可能
ボタン / Button
Flow モバイルアプリ導入で利用可能
端末 / Web サイトより実行可能
作成したボタントリガはメニュー上に
ウィジェットとして配置することが可能
bttn
flic
通知 / Notification
Flow モバイルアプリ導入で利用可能
自分の端末へのプッシュ通知 / メールによる通知
PowerApps で利用可能(ブラウザ上では未対応)
アプリケーション単位での通知(特定ユーザーも可)
Common Data Service(CDS)
PowerApps で参照可能(Flow では Premium 必要)
CDS の設定などには Plan2 契約が必要
利用頻度の
高そうなものは
全て定義済み
テーブル定義を
考えずに DB を
利用できる
PowerApps では
選択可能な CDS
Flow では
選択できない事も
承認 / Approval
Flow Premium(または Office365 FreePlan) で可能
活用するには Office365 ユーザーが必要
Flow モバイルアプリ
または Flow ウェブサイト上で承認行為が可能
Flow モバイルアプリ
Flow ボタンはこのアプリより利用可能
Flow Button Trigger
ボタンクリックにて LogicFlow が発動
PowerApps モバイルアプリ
作成したアプリはメニュー上に
ウィジェットとして配置可能
PowerApps Studio
ブラウザ上または
UWPアプリ
PowerApps アプリの作成
PowerApps Studio 上ではインテリセンスなどが
用意されているので基本的には選択していくだけで
設定が可能
カメラやバーコードスキャナー
画像動画表示など一通りのコントロールを提供
PowerApps アプリの作成
OneDrive 上の Excel ファイルへ
データ登録や参照するアプリなら
テンプレートのままでも十分な機能
テンプレートから作成または
スクラッチで作成
LogicApps の高可用性対応
API Management リダイレクト先の調整
ServiceBus メッセージング形式の構築
Hot-Cold 的に構築
動作中のリージョンで障害発生時に
COLD 側へ切り替えさせる
常に全てのリージョンで動作するよう構築
LogicApps の課金としては変化なし
(トリガで対象データなしは無課金)
PowerApps/Flow が向いている領域
• ネイティブアプリを作るまでもないちょっとした事のシステム化
• 日頃の作業を少しだけ便利に
• 一部メンバー間に限定して実施したい
• 社内用、部門用システムを短期間で用意したい
• スマートフォンを安価に活用したい
LogicApps が向いている領域
• 複数サービス間での連携が必要
• EOS/EDI などデータ連携や変換が多くなる時に
• コードを書いて負債を増やしたくない
• コードを書かなくてもできる事でコードを書きたくない
Let’s develop without coding,
and Welcome to Serverless !
Appendix
• LogicFlow-ja
( https://www.facebook.com/groups/logicflowja/ )
• LogicFlow を扱っている Blog
– nrjlog ( http://zuvuyalink.net/nrjlog/ )
– てすとぶろぐ ( http://blogahf.blogspot.jp/ )
• Azure LogicApps
( https://blogs.msdn.microsoft.com/logicapps/ )
• Flow – Blog
(https://flow.microsoft.com/en-us/blog/)
• PowerApps – Blog
(https://powerapps.microsoft.com/en-us/blog/)
• Twitter Hashtag
– LogicApps → #LogicApps
– Flow → #MicrosoftFlow

1st step LogicFlow