OutsystemsのWeb Developer(O11)の資格学習中で非同期処理の実現方法について学んでいます。
備忘録として残したいと思います。
Outsystemsの非同期処理
非同期処理とはある処理を実行している間に、独立した別の処理を並列で実行すること。
C#のTaskのようなものを思い浮かべていたのですが、ちょっとイメージが違いました。
Outsystemsの非同期処理には以下のような種類があります。
- Timer
- Business Process
- Light Process
Timer
TimerはOutsystemsのバッチ処理です。
時間を指定して定期的に実行したり、画面やAPIを使って実行をスケジュールすることができます。
ただし、同時に実行するTimerの数や一回の処理でのTimeoutが設定されており、制限があります。
ServerActionと同じようにコードを書くことができます。
公式ドキュメントにトランザクションの設定の仕方、Timeoutを想定した再実行の仕組みなどのベストプラクティスが紹介されています。
参考
Timer
Create and Run Timers
OutSystemsの非同期機能内のタイマーによる非同期処理
Business Process
公式ドキュメントには以下のようにあります。
OutSystems allows you to design and manage your business processes and integrate them into your applications. A business process is simply called a Process in OutSystems and is understood as the way that a particular task is carried out in your organization, such as handling invoices, processing orders, or handling complaints. Processes are also known as BPT (Business Process Technology).
この文章を読むだけでは、なぜこれが非同期処理の項目で説明されているかわかりませんでした。
Entityの更新や作成をトリガーに実行されるプロセスを作成することができます。
業務フローを元にコーディングができ、ユーザの操作を待ったり、一定期間の待機をしたり、条件により処理を分岐したりフローに必要な制御が実装できます。
すべてのフローが処理されるまで待機したり、特定のフローが処理されるまで待機することができます。
こういった意味で非同期処理に分類されているのかなと思います。
使い方はかなり複雑なため、公式ドキュメントで学習する必要がありそうです。(日本語のドキュメントは見つかりませんでした。)
また、Case Management FlameworkやWork Flow Builderといった拡張機能があります。
ODCでは違った仕組みになっているようです。
参考
Using Processes - BPT
Building Your First Business Process
OutSystemsの非同期機能内のビジネスプロセスのモデリング
Light Process
Entityの作成をトリガーに実行される小さな処理を作成することができます。
Business Processとは違い、単純な処理を実行することしかできません。イメージ的にはDBのトリガーのようだなと思いました。
参考
Design Scalable Database Queueing Using Light Processes
OutSystemsの非同期機能内のAsynchronous Data Processing with Light Processes
それぞれの違い
公式動画にそれぞれの違いがまとまっていました。
Timer | Process | Light Process | |
---|---|---|---|
トリガー | 任意のタイミング スケジュール |
任意のタイミング DBのレコード作成・更新 |
DBのレコード作成 |
Flow | Server Action | 複数のActivityの組み合わせ | 一つのAutomatic Activity |
Timeout | 最大20分 | 一つのActivityにつき5分 | 3分 |
エラー時のリトライ | 3回のち非アクティブ化 | 間隔を増加してリトライし続ける | 間隔を増加してリトライし続ける |
実行数の制限 | フロントエンドサーバにつき3 | フロントエンドサーバにつき10 | フロントエンドサーバにつき20 |
学んでみて
Timerはこれまでも何度か実装してきましたが、Business Process TechnorogyとLight Processは活用してきませんでした。
Business Process Technorogyは影響が大きいため、すぐに取り入れることができないかもしれませんが、Light Processについてはアプリケーションによっては簡単に取り入れることができそうなので活用を検討していきたいと思いました。