はじめに
i-ReporterのGatewayは、一般的には帳票へ何かしらのデータを自動入力するために利用されることが多い機能です。
しかし今回、帳票への自動入力を目的とするのではなく、i-Reporterで入力したデータを外部システムへ連携するためのデータ送信機能としてGatewayを活用したので、本記事では外部システムへのデータ送信をする場合の注意点について記載します。
Gateway連携とは?
ここで改めてi-Repo Gateway(旧称:ConMas Gateway)で何をすることができるかを簡単にまとめます。
≪概要≫
i-Repo Gatewayは外部データの情報をリアルタイムに取得するもので、i-Reporterの標準機能として利用できます。
≪主な機能・用途≫
①外部データファイル連携
外部のシステムから出力したファイル(CSVやExcelなど)のデータ情報を取得し、i-Reporterの帳票へ
自動入力します。
② データベース連携
外部システムまたは、i-Reporterのデータベースからデータを取得し、i-Reporterの帳票へ自動入力します。
③ 外部システムへのデータ出力
i-Reporterの帳票に入力した値を、外部システムにデータ送信やデータベースに登録・更新します。
※本記事は③の内容になります。
データ送信機能の活用紹介
今回活用したのは、i-Reporterの帳票に入力した値をデータベースへ登録・更新する用途ではなく、帳票の入力値を外部機器へ送信するためのデータ連携機能として利用しました。

データ送信検証①
メーカーのマニュアルでは、i-Reporter帳票へ値を反映することを前提としたPythonコードのサンプルが掲載されています。そのため、サンプルコードを参考に実装する場合は、処理結果をi-Reporter帳票のクラスターへ反映する仕組みとなります。
ですが、今回は外部機器へのデータ送信を目的としており、i-Reporter帳票へ値を反映する必要は無いため、サンプルコードとは異なりJSON形式でレスポンスを返却しない実装を試しました。
【検証手順】
①i-Reporterアプリでデータ送信するクラスターに値を入力し、Gatewayの実行ボタンをクリックする

②画面が「通信中」の状態のままとなり、処理が終了しないという問題が発生

【検証結果】
外部機器へのデータ送信自体は正常に行われましたが、i-Reporterアプリ側では処理完了の応答を受け取れず、画面が「通信中」の状態のままとなり、処理が終了しないという問題が発生しました。
この結果から、帳票へ値を反映しない場合であっても、Gatewayを実行する場合は必ずJSON形式でレスポンスを返却する必要があります。
データ送信検証②
「データ送信検証①」の結果から、i-Reporter帳票へ値を反映しない場合であっても、Gatewayを実行する場合にはJSON形式でレスポンスを返却する必要があることが分かりました。
そのため、i-Reporter帳票へ値を反映せずJSON形式でレスポンスを返却する方法として、帳票のクラスター(Index0)へフォーカスを当てる内容をJSON形式で返却する方法を試しました。
【検証手順】
①i-Reporterアプリでデータ送信するクラスターに値を入力し、Gatewayの実行ボタンをクリックする

②設定したクラスター(Index0)へフォーカスが自動で当たる

【検証結果】
i-Reporter帳票のクラスターへフォーカスを当てる内容をJSON形式で返却する方法であれば、外部機器へのデータ送信とGateway処理の完了を問題なく実現できることを確認できました。
そのため、最終的にこの方法での開発を採用しました。
まとめ
JSON形式のレスポンスを返却しない場合、外部機器へのデータ送信自体は成功していても、i-Reporterアプリ側では処理が完了したと認識されず、「通信中」の状態が継続してしまうことがわかりました。
そのため、Gatewayを利用して外部機器へデータ送信を行う場合でも、GatewayからのレスポンスとしてJSON形式のデータを必ず返却する必要があります。
また、今回のように帳票へ値を反映する必要がない場合は、特定のクラスターへフォーカスを当てる内容をJSON形式で返却することで、正常に処理を完了させることができます。