OutSystemsでバッチ処理を開発するには?(vol.14)

  • 公開日:2023年06月19日(月)

「OutSystemsはWebアプリやモバイルアプリの開発には向いているけど、バッチ処理の開発は難しいのでは?」とお思いの方もいらっしゃるのではないでしょうか?
結論から申し上げると、いくつか注意すべきポイントはありますが、簡単なバッチ処理はもちろん、複雑なバッチ処理であってもOutSystemsで開発可能です。

そこで本ブログ記事では、OutSystemsでバッチ処理を開発する際に有効な3種類の機能の特徴と実装時に考慮すべきポイントを解説します。

OutSystemsでバッチ処理を開発する際に有効な3種類の機能

  • Timer
  • Process(ビジネスプロセス機能:BPT)
  • 軽量プロセス(Light Process)

OutSystems Timerを用いたバッチ処理

OutSystemsで一般的なバッチ処理(時間を要する処理や、定期実行が必要な処理)を開発する際には、Timerを使用します。
Timerにより、設定した日時で定期実行させる、管理ツール上から任意のタイミングで起動することが可能となります。また、ランタイム上で起動することのできるWake Actionも提供されるため、これを公開API化することによって、外部スケジューラーからTimerを起動することも可能です。

実装方法

  1. Service StudioでProcessesタブを開くと表示されるTimersフォルダを右クリックし、「Add Timer」を選択すると作成できます。
    ※図1のTimer1が作成されたTimerです。
  2. ActionプロパティにServer Actionを指定します。この指定したActionがバッチ処理の実体となります。

 

 

 

実装時に考慮すべきポイント

  • Timerにはタイムアウトが存在し、デフォルトは20分に設定されています。時間の延長は可能ですが、個別に設定する必要があります。タイムアウトが発生すると処理が中断され、データベースはロールバックされます。
    また、一定時間後に自動でリトライされます。リトライ回数はデフォルトで3回であり、環境ごとに設定することが可能です。
    長時間実行する必要のあるTimer処理のタイムアウトを回避する方法については、OutSystemsのトレーニングコースにてベストプラクティスが提供されています。
  • Timer処理には実行の制約があり、同じTimer処理は同時に1つしか実行できません。
    また、異なるTimer処理であっても、同時に実行可能数は上限3つまでという制約があります。
    OutSystems Cloudを利用している場合、同時実行可能数を変更することはできませんが、セルフマネージド環境であればConfiguration Toolsで設定を変更することが可能です。
  • 複数のFront-Endサーバーがある場合、バッチ処理はFront-Endサーバーで稼働します。ロードバランサーを用いて、複数のFront-Endサーバーで運用する環境では、ファイル読込/出力処理がある場合や、実行ログ出力場所は、各Front-Endサーバーからアクセス可能な場所(例えば、共有ファイルサーバなど)を指定する必要があります。

OutSystems Process(BPT)を用いたバッチ処理

一連の処理の中で、ユーザーによる画面操作、一定期間停止、特定のイベントが発生するまで処理を中断するようなバッチを作る際に使用します。進行状況は自動でログが取得され、Service Centerで確認できます。

ユーザーに業務を割り当てて特定の操作が行われるまで待つ「Human Activity」や、一定期間が経過するまで待機する「Wait」など、業務の流れを編集できるツール(図2)を持つため、ワークフロー等のユースケースで用いられます。

*プロセスについてはこちらのブログ記事に詳細を記載しておりますので、合わせてご確認ください。

実装方法

  1. Service StudioでProcessesタブを開くと表示されるProcessesフォルダを右クリックし、「Add Process」を選択すると作成できます。
    ※図3のProcess1が作成されたプロセスです。
  2. コンテンツキャンバスにプロセスフローが表示されます。「Start」と「End」のアイコンの間に、図2に表示されている処理を設計します。

 

 

実装時に考慮すべきポイント

  • バッチ処理を実行することのできる「Automatic Activity」は、5分のタイムアウト時間が設定されています。
  • 複数のFront-Endサーバーがある場合、前述のTimerを用いたバッチ処理と同様に、実行サーバーの考慮が必要です。

OutSystems 軽量プロセス(Light BPT)を用いたバッチ処理

軽量プロセス(Light BPT)は、BPT(ビジネスプロセス機能)から、実行状況の追跡などの機能を削った機能です。
主にオンライン処理を行う中で、呼び出し側を待たせたくない、重い処理なので非同期処理に分離したいというようなときに、軽量プロセス(Light BPT)を使用します。
基本的な作成方法はプロセスと同様ですが、フローに含められるのは「Automatic Activity」ひとつに限定され、対応するEntityの作成も必要となります。そのEntityにレコードを追加することで処理が自動で開始されます。

実装方法

作成方法はプロセスと同様ですが、「Start」と「End」のアイコンの間に設定できるのは、
「Automatic Activity」のみとなります。

Launch Onプロパティにはデータベースイベントが設定されている必要があります。
また、Expose Process Entityプロパティを「No」の設定にする必要があります。
Processと異なり、進行状況のログは出力されず、ランタイム上で取得することもできません。

 

実装時に考慮すべきポイント

  • 本機能を利用する場合は、モジュールの“Light BPT機能を有効にする”必要があります。
  • 軽量プロセスにおける「Automatic Activity」は、3分のタイムアウト時間が設定されています。
    Processよりも短いタイムアウト時間となっています)
  • 複数のFront-Endサーバーがある場合、前述のTimerを用いたバッチ処理と同様に、実行サーバーの考慮が必要です。

まとめ

さてここまで、OutSystemsでバッチ処理を開発する際に有効な3種類の機能の特徴と実装時に考慮すべきポイントを解説して参りました。

  • Timer
  • Process(ビジネスプロセス機能:BPT)
  • 軽量プロセス(Light Process)

OutSystemsを利用することで、定期実行のバッチ処理だけでなく、既存のバッチ実行用の外部スケジューラーと組み合わせたバッチ処理や、ワークフローのようなバッチ処理など、様々な対応ができることをご理解いただけたかと思います。
Webアプリやモバイルアプリの開発だけでなく、バッチ処理の開発にも、OutSystemsをご活用いただければと思います。

弊社電通総研は、ローコード開発プラットフォーム:OutSystemsの導入/活用を支援する様々なサービスメニューをご用意しております。
ローコード開発のはじめの一歩を、電通総研と一緒に踏み出してみませんか?

電通総研のOutSystems関連サービスページ:https://itsol.dentsusoken.com/outsystems/service/

本ブログは、2023年6月1日時点の情報をもとに作成しています。
OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
https://itsol.dentsusoken.com/outsystems/inquiry/