大量のバッチ処理
目次
OutSystemsは、バッチジョブの実行をサポートしています。OutSystemsサーバーには、手動オペレーションを必要としないロジックの実行を管理する、スケジューラサービスという非同期エンジンが含まれています。バッチジョブは、イベントに基づいてOutSystemサーバー内とサーバー外のいずれでもトリガーすることができます。設定や計算によりスケジュール設定した時間に基づいてトリガーすることも可能です。ジョブはすべてのフロントエンドサーバー間で配布され、スケジューラサービスが負荷分散を制御します。
バッチジョブの作成
バッチジョブは、OutSystems開発環境で作成します。作成パターンには3つの種類があります。実装するロジックに応じて、以下のアプローチから1つを選択します。
タイマー
タイマーを使用すると、指定した時間に通常実行されるビジネスロジックを定義できます。ビジネスニーズに基づいてトリガーすることも可能です(マネージャーが承認タスクを完了した時点でマーケティングキャンペーンを非同期で送信するなど)。これは、順番に処理されるコードパターンの集合であり、ユーザーによる入力や介入を必要としません(フラットファイルやREST APIといった外部データソースからのデータ取得や、データマッシュアップの実施など)。
タイマーが適しているケースは、以下のとおりです。
- 指定した時間におけるバックグラウンドタスクやルーティーンタスクの実行
- 処理に長時間を要するビジネスプロセスの実行
- ユーザーインタラクションを必要としないプロセス
- 負荷の高いプロセスのオフロード
- 大量の情報処理
- パブリッシュ後のブートストラップロジック実行
BPT(ビジネスプロセステクノロジー)
OutSystemsは、時間のかかるプロセスやイベントのモデリングにも使用できます。たとえば、すべての顧客に対して一定期間分の請求処理を実行する場合、数分かかることもあります。この場合、プロセスは、時間をかけて完了すべきアクティビティのフローととらえることができます。各プロセスインスタンスのアクティビティは、データベースで追跡されます。
BPTに関連するコードパターンの1つであるAutomatic Activityにより、ビジネスロジックを非同期で実行することができます。開始日、終了日、期間、リトライ回数などのトレーサビリティもビルトインされています。アクティビティは実行中のプロセスフローのコンテキストをすべて継承し、他のデータソースを利用することでスコープの拡張もできます。
OutSytemsプロセスが適しているケースは、以下のとおりです。
- OutSystemsアプリケーションにおけるビジネスプロセスの定義と実行
- システム同士およびユーザーとシステム間のインタラクションとワークフローの実行
- ユーザーやシステム用のオペレーションワークフローの定義
- バックグラウンドでの業務処理(Automatic Activityを使用)
- プロセスあたり複数のアクティビティの実行
軽量プロセス
OutSystemsでは、データベース追跡を必要としない簡易プロセスの実行も可能です。この軽量実行モデルは、1日に何百万ものイベント処理を求められる大規模なイベント駆動型プロセスで有効です。たとえば、外部APIの呼び出しに基づいて、API呼び出しをオープンにしたままにせず、、受信データを検証して保存します。
軽量プロセスが適しているケースは、以下のとおりです。
- 1日に何千ものイベントを処理する大規模なプロセスフロー
- 追跡不要なイベント駆動型のタスク
- すぐに処理できる追跡イベント
- 並行処理
バッチジョブの管理
ユーザーは、OutSystems管理コンソールを使用してバッチジョブを管理することができます。実行できる内容は以下のとおりです。
- バッチジョブの実行監視
- スケジュールや優先順位などの設定の調整
- バッチジョブの非アクティベートやアクティベート、ジョブの強制実行
- 過去のジョブの閲覧
タイマーの実行監視:
タイマー設定の編集: