0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Outsystemsの非同期処理の簡易まとめ

Posted at

OutsystemsのWeb Developer(O11)の資格学習中で非同期処理の実現方法について学んでいます。
備忘録として残したいと思います。

Outsystemsの非同期処理

非同期処理とはある処理を実行している間に、独立した別の処理を並列で実行すること。
C#のTaskのようなものを思い浮かべていたのですが、ちょっとイメージが違いました。

OutSystemsの非同期機能

Outsystemsの非同期処理には以下のような種類があります。

  1. Timer
  2. Business Process
  3. 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についてはアプリケーションによっては簡単に取り入れることができそうなので活用を検討していきたいと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?