【i-Reporter】帳票に値を返さない場合のi-Repo Gateway連携

技術情報
技術情報

はじめに

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形式で返却することで、正常に処理を完了させることができます。

タイトルとURLをコピーしました