背景
ローコードプラットフォーム『OutSystems』を社内へ導入・開発サポートしている。
JavaやPythonも楽しいけど、これからの時代はローコード!!
課題
OutSystemsはWEBは良いけどBATCHがなぁ…という声を度々耳にするが『そんなとこはない、BATCHもローコードで大丈夫』と言いたい。本稿では、OutSystemsでBATCH処理を実現する上での工夫ポイントを紹介する。
想定
・ 数千~数百万レコード単位の処理
・ スケジューラはOutSystemsとは別の何か(Zabbix, Windowsタスクスケジューラ, JP1など)
ポイント
① BATCHアーキテクチャ
※定時起動, 常時実行, オンデマンドのタイプがあるが、本稿では"定時起動"について記す
② タイムアウト対応
③ コミット制御
④ レスポンス改善
a) TextDitionaryを活用
b) コア部分のみ外を活用 (Extention, PL/SQL, Powershell)
対応
今回は以下について記述する。
① BATCHアーキテクチャ
※定時起動, 常時実行, オンデマンドのタイプがあるが、本稿では"定時起動"について記す
目的
OutSystemsでBATCHを実現する上での一例を紹介し、ローコードに対する懸念をやわらげ、もっと普及させたい。
内容
Powershellはtry-chatchでREST APIをコールし、返り値を判定。異常終了の場合はExcetpionをスロー。
REST APIは正常時と異常時の制御だけに集中し、業務処理はServer Actionで記述する。
BATCHの異常処理時はExceptionをスローしてトランザクションをロールバックさせる。
↓はREST API上の実装例
BATCHの結果を監視したい場合は、Powershellでログを出力するか(テキスト監視)、OSP上でエラーログ出力し、DB監視する。
OutSystemsCloudを利用している場合はPowershell実行用のオンプレサーバを用意する。
オンプレのみの場合はOSPを導入しているサーバにPowershellを配置するのが良い。
結果 or 気付いた点
OutSystemsで定時起動のBATCHを実現する場合は、概ねこういう構成になるのではないだろうか。
結論
今回は工夫ポイントを紹介する上での前提となるアーキテクチャを共有した。
次回から中身の話。