この記事は、SORACOM Fluxの アクションの実行条件 についてです。
現在選択できるイベントソースのタイマーは、一定時間ごとの起動は出来るのですが、決まった時間にイベントを発生することができないので、決まった時間にイベントを発生するには工夫が必要となります。
今回は、その方法の1つとして、[アクションの実行条件]について説明します。
SORACOM Fluxのアクションの実行条件とは?
SORACOM Flux では様々なアクションが用意されていますが、そのそれぞれで [アクションの実行条件] を指定することが出来ます。これにより、指定した条件を満たした場合にのみアクションを実行して、後段処理に繋げるなどを行うことが可能となります。
[アクションの実行条件] に関する公式リファレンスはこちらです。
SORACOM Flux を定刻に起動したい!
冒頭で書いたように、イベントソースの [タイマー] は一定時間ごとの処理は実現できるのですが、定刻動作をすることは出来ません。イベントソースで、Incoming webhook を作成して、外部サービスから定刻にこちらのAPIをコールすることでも、定刻での動作は可能ですが、せっかくのローコード環境なのに、外部サービスをわざわざ使うのはちょっと違う気もします。
そこで、今回は、上記で紹介した [アクションの実行条件] を使用します。
今回は、日本時間の9時台/15時台に1回ずつ処理が行われるように設定します。
- タイマーで
- イベントソースのタイマーで1時間ごとにイベントが発生するように設定する
- 後ろの処理の「アクションの実行条件」で時刻を設定する
各設定の詳細
イベントソースのタイマー設定はこのようになっています。今回の例では、1時間ごとにイベントが発生するように設定しています。
アクションの実行条件はこのようになっています。今回の例では、協定世界時 (UTC) の「時」を取得して、0時 or 6時 ならアクションを実行するように設定しています。日本時間で9時 or 15時 となります。
(getUTCHours(now()) == 0) || (getUTCHours(now()) == 6)
しっかり定刻に処理をしたいと思ったが
次にしっかり時刻を設定たいと思います。そうなると次のような方法が考えられるので試してみます。
- タイマーを1分ごとに起動するように設定
- アクションの実行条件に、「分が0の場合」[getUTCMinutes(now()) == 0]を追加
タイマーで1分ごとに起動されるとサーバー側としてはいやだよなと思いつつも試してみると、以下のエラーが発生しました。まぁ、そうだよなと思いますね(笑)
いまの使い方だと、だいたいその時間帯ぐらいの処理で十分問題ないので、上記で説明したフローで運用します。
さいごに
「アクションの実行条件」を工夫することで、より自分の使いたい使い方やフローの最適化など、いろいろな可能性があると思います。
公式サイトでも多少の入力例があるのですが、もっと「こういったことが出来る!」といった具体的な条件設定の例が出てくると使いこなすのも楽だと思う。
その他の参考リンク