バッチ処理
Mendixで バッチ処理 を行うケースもあると思います。Mendixで作成したアプリケーションを単体で利用する場合はあまり関係ないですが、Mendix外の既存システムと連携する場合などでは、外部システムと連携タイミングを協調させる必要があったりします。特定の日時にバッチ処理を実行したい、ファイルを受信したらジョブを実行したいなどです。特に日本の場合まだまだバッチ処理が大きなウェートを持っていたりします。
MendixのAppStoreには、Microflow SchedulerやMicroflow Scheduled Event Managerなど定期的にマイクロフローを実行するアプリが公開されていて、時間を指定してマイクロフローを実行したり、繰り返し実行したりすることができます。
そもそもローコード開発ツールのMendixを使って、バッチ処理を行うということがアンチパターンだと思っていますが、バッチ処理の実行タイミングをもっと詳細にコントロールしたいことがあるかもしれません。そのような場合に ジョブ管理システム を使用してバッチ処理を実行させる方法を検討してみます。
Hinemos
Hinemos は NTTデータ が公開しているオープンソースの ジョブ管理システム です。類似の製品には JobScheduler などがあります。Hinemos は無償で利用することができ、有償のサブスクリプションも提供されていてサポートを受けることができます。
連携方法
イントラネットのオンプレミスあるいはクラウドの専用環境に、HinemosサーバーとMendixサーバーが構築された環境を想定します。
- マイクロフローの実行開始: REST APIからマイクロフローを呼び出した場合、マイクロフローの実行可能時間はhttpセッションのタイムアウトで制限されます。CommunityCommonsアプリから非同期でマイクロフローを呼び出す機能を用いて、REST APIの呼び出しをトリガーにして非同期でマイクロフローを実行します。これにより長時間のバッチ処理を行うことができます。
- マイクロフロー実行終了の検知:実行対象のマイクロフローが終了した時に、Hinemosサーバー宛にカスタムトラップを送信することで、非同期で実行したマイクロフローの終了をHinemosに通知します。Hinemosはモニタージョブでカスタムトラップ待ちの状態で止まっていて、Hinemosが受信したカスタムトラップを契機にバッチ処理の後続が実行されます。
HinemosConnectorについて
こちら からHinemosConnector.mpkをダウンロードして、Mendix Studio Proでパッケージをインポートして利用します。 ソースはこちら。適宜カスタマイズしてください。