Next Step 2019のバッチ処理関係セッション

昨年10月に行われた、OutSystemsのイベントNext Step 2019ですが、セッションのビデオが公開されています。

ビデオは残念ながら英語のみで字幕もないですが、興味のあるセッションがあれば、スライドだけでも見ておくと参考になります。

その中からバッチ処理関係のセッションを紹介します。

Using Processes and Timers for Long-Running Asynchronous Tasks

長時間実行されるバッチ処理を、OutSystemsで実装するパターンを列挙する動画。短い時間にいくつものパターンが詰め込まれています。

長時間実行される「非同期」のトランザクションの実装パターン

  • Status Polling:呼び出し側で、長時間実行される処理の状態を確認する。画面からバッチ処理をキックする際によく見るパターンですね
  • Callbacks:長時間実行される処理が終了する直前に、終了することを通知する。通知先は、RESTやSOAPが挙げられていましたが、EntityにしてProcessキックという方法もあります

長時間実行される「同期」のトランザクションの実装パターン

  • Timeoutの調節:作成したTimerには「Timeout in Minutes」というプロパティがあり、タイムアウトまでの時間を分単位で指定できます。これを処理内容に合わせて調整しましょうということです。デフォルト値は20分です
  • バッチ呼び出しを非同期サービスに切り出す:処理はTimerで実装。Timerにはタイムアウトがあるため、N件ずつの処理にして、N件分の処理が終わったあとにまだ処理対象が残っていたら同じTimerを再起動する
  • 長時間実行するバッチは同期で終了を待たない:これがおすすめだそうです。私もこれがいいと思います……

Launching a BPT Process on Entity Update

ProcessはEntityのレコード追加(Create)を起点として処理を開始できるのですが、更新(Update)は起点にできません。

これを回避する実装パターンを紹介するセッションです。

  1. 1インスタンスだけ常に実行中になるProcessを作成する(Close Onが空のWaitをメインフローにおいておく、eSpace Publish時に起動するTimerでこのProcessを開始する)
  2. ProcessにConditional Startを配置する。このConditional Startは、対象Entityの更新時に開始するように設定
  3. Conditional Startのフローに、必要な処理を書く

Processのインスタンスが増えすぎないように、Timer処理戦闘中にインスタンスが他にないかをチェックすること。

What Is Light BPT and How Can You Use it for Parallel Processing

特定条件を満たしたProcessは負荷が軽量なLight BPTにできます。

その、Light BPTの紹介セッション。

Light BPTにする条件は、

  • Service Centerの該当eSpaceページを開き、Operationタブで「Light process execution」にチェックを入れておく
  • Process内は、1つのAutomatic Activityだけで構成されること
  • ProcessをEntityのCreateイベントを起点に開始すること
    • 前提として、該当EntityのMore… > Advancedタブ > Expose Process Eventsをチェック

デモアプリケーションがForgeにあります。

Light BPT demo

シェアする

  • このエントリーをはてなブックマークに追加

フォローする