CData JDBC Driver for REST で Ignition SCADA と連携

Somya Sharma
Somya Sharma
Technical Marketing Engineer
CData JDBC Driver を使って、Ignition SCADA からリアルタイムの REST データに接続。ETL やレプリケーションは不要です。

Ignition は、Inductive Automation 社が提供する産業用の SCADA(監視制御およびデータ収集)および IIoT(産業用モノのインターネット)プラットフォームです。中核となる Gateway サービスが、デバイス接続やタグ、データベース接続を一元的に管理します。ただし、Ignition には REST 用のコネクタが標準で用意されていません。そのため、REST のデータを扱うには、独自のミドルウェアを用意するか、手作業でデータをエクスポートするのが一般的です。

CData JDBC Driver for REST を使えば、この課題を解消できます。このドライバーは、REST を標準的な JDBC(Java Database Connectivity)データソースとして利用できるようにするものです。Ignition はどの JDBC ドライバーも標準のデータベース接続として扱えるため、Gateway にドライバーを登録するだけで、Script Console や SQL Bridge、タグ、Perspective / Vision の画面からリアルタイムの REST データをクエリできます。レプリケーションや独自コネクタ、ETL(抽出・変換・ロード)パイプラインは必要ありません。

この記事では、Ignition のインストールとコミッショニングから、CData JDBC Driver for REST の登録、接続の作成、リアルタイムクエリによる動作確認までの流れを順を追って紹介します。

前提条件

  • Windows 版 Ignition(Windows 10/11 または Windows Server)と、Windows サービスをインストールするための管理者権限
  • CData JDBC Driver for REST
  • 有効な認証情報を持ち、API アクセスが有効化された REST アカウント
  • Gateway の Web インターフェースを開くための対応デスクトップブラウザ(Google Chrome、Mozilla Firefox、Microsoft Edge、Safari のいずれか)

ステップ 1:Ignition のインストールとセットアップ

Ignition をすでにインストールして稼働させている場合は、ステップ 2 に進んでください。

Ignition のダウンロード

  1. Inductive Automation のダウンロードページにアクセスし、Windows 版の Ignition をダウンロードします。 Ignition のダウンロード
  2. このファイルひとつで Ignition Gateway のフルインストーラーになっています。Gateway サービスと Designer Launcher の両方が含まれているので、Designer を別途ダウンロードする必要はありません。

Ignition のインストール

  1. インストーラーを実行し、ライセンス契約に同意してインストール先を選択します。
  2. Windows の起動時に Gateway も自動で起動するよう、Install as a Windows Service にはチェックを入れたままにしておきます。
  3. インストールを完了すると Gateway サービスが起動し、ブラウザで http://localhost:8088 が開いてコミッショニングウィザードが表示されます。Browser Not Supported と表示された場合は、Chrome、Firefox、Edge、Safari のいずれかで同じアドレスを開いてください。

Gateway のコミッショニング

  1. Commission Ignition Gateway ウィザードで Gateway Name を設定し、管理者のユーザー名とパスワードを作成します。
  2. エンドユーザー使用許諾契約に同意し、トライアルを開始するか、購入済みの Ignition ライセンスをアクティベートします。
  3. コミッショニングが完了したら、管理者アカウントでログインします。Gateway の Home ページが表示されます。 ログイン後の Gateway Home ページ

注意: トライアル版では Gateway の各ページにカウントダウンタイマーが表示され、Gateway サービスを再起動するとタイマーがリセットされます。テスト用途であれば問題ありませんが、本番環境で利用する場合はライセンスが必要です。

ステップ 2:Ignition への CData JDBC Driver の登録

Ignition では、サードパーティ製の JDBC ドライバーを Gateway の Web インターフェースからアップロードできます。ファイルシステムを直接操作する必要はありません。

  1. 管理者として Gateway にログインします。
  2. Connections > Databases > Settings に移動して Drivers タブを開き、Create JDBC Driver をクリックします。
  3. ダイアログで次の内容を入力します。
    • Name: REST
    • Classname: cdata.jdbc.rest.RESTDriver
    • Driver Type: Generic
    • Default Validation Query: SELECT [ personal.name.first ] FROM people LIMIT 1
    JDBC ドライバーの作成(画面は Salesforce の例)
  4. Create JDBC Driver をクリックします。現行の Ignition 8.3 では作成ダイアログに JAR(Java アーカイブ)ファイルのアップロード欄がないため、JAR ファイルは次の手順で追加します。
  5. 作成したドライバーの行の右端にあるメニューを開いて Manage JAR files を選択し、ドライバーのインストールディレクトリ内の lib フォルダにある cdata.jdbc.rest.jar をアップロードして保存します。
  6. ドライバー一覧で、ドライバーのステータスが INSTALLED になっていることを確認します。 ステータスが INSTALLED のドライバー(画面は Salesforce の例)

ステップ 3:REST への接続の作成

  1. Connections > Databases > Connections に移動し、Create Database Connection をクリックします。
  2. Driver Selection ステップで REST を選択し、Next をクリックします。 ドライバーの選択(画面は Salesforce の例)
  3. Database Setup ステップで、Name に REST を設定します。認証情報は接続 URL に含めるため、Username は空欄のままにし、Password は None を選択します。
  4. Connect URL に接続文字列を入力します。
    jdbc:rest:DataModel=Relational;URI=C:/people.xml;Format=XML;
    接続情報の入力(画面は Salesforce の例)
  5. Create Database Connection をクリックし、Database Connections ページで接続のステータスが VALID になっていることを確認します。 ステータスが VALID の接続(画面は Salesforce の例)

REST の接続プロパティ

データソースへの認証については、データプロバイダーのヘルプドキュメントの「はじめに」を参照してください: データプロバイダーはREST API を双方向データベーステーブルとして、XML/JSON ファイル(ローカルファイル、一般的なクラウドサービスに保存されているファイル、FTP サーバー)を読み取り専用のビューとしてモデル化します。HTTP Basic、Digest、NTLM、OAuth、FTP などの主要な認証スキームがサポートされています。認証についての詳細は、ヘルプドキュメントの「はじめに」を参照してください。

URI を設定し、認証値を指定したら、Format を"XML" または"JSON" に設定して、データ表現をデータ構造により厳密に一致させるようにDataModel を設定します。

DataModel プロパティは、データをどのようにテーブルに表現するかを制御するプロパティで、以下の基本的な設定を切り替えます。

  • Document (デフォルト):REST データのトップレベルのドキュメントビューをモデル化します。データプロバイダーはネストされたエレメントをデータの集計として返します。
  • FlattenedDocuments:ネストされたドキュメントとその親を単一テーブルとして暗黙的に結合します。
  • Relational:階層データから個々の関連テーブルを返します。テーブルには、親ドキュメントにリンクする主キーと外部キーが含まれます。

リレーショナル表現の構成について詳しくは、「REST データのモデル化」を参照してください。次の例で使用されているサンプルデータもあります。データには、人、所有している車、およびそれらの車で行われたさまざまなメンテナンスサービスのエントリが含まれています。The data includes entries for people, the cars they own, and various maintenance services performed on those cars.

注意: パスワードやトークンにセミコロンが含まれていると接続 URL が正しく解釈されません。その場合は、セミコロンを含まない値に再設定してください。

ステップ 4:Ignition からリアルタイムの REST データをクエリ

接続が有効になったら、Designer からリアルタイムの REST データをクエリしてみましょう。

  1. Ignition Designer Launcher を開き、使用する Gateway を選択して Open Designer をクリックします(一覧に Gateway が表示されていない場合は、Add Designer をクリックして http://localhost:8088 を入力します)。Gateway の管理者アカウントでログインしてください。 Designer Launcher から Designer へのログイン
  2. プロジェクトを開くか、新規に作成します。Designer が開き、Project Browser、Tag Browser、Component Palette の各パネルが表示されます。 Ignition Designer のメインウィンドウ
  3. Designer で Tools > Script Console に移動します。Multiline Buffer にテストクエリを入力し、Execute をクリックします。people の部分は、REST 接続で利用可能な任意のテーブルに置き換えてください。
    print system.db.runQuery(
        "SELECT [ personal.name.first ], [ personal.name.last ] FROM people LIMIT 10",
        "REST")
    Script Console でのテストクエリの実行(画面は Salesforce の例)
  4. クエリが成功すると、Interactive Interpreter パネルに PyDataset rows:10 cols:2 と出力されます。これで、Ignition が CData JDBC Driver を介して REST からリアルタイムデータを取得できたことを確認できます。

注意: スクリプト内の接続名は、ステップ 3 で設定した接続名と一致させる必要があります。

ステップ 5:結果の検証

  1. 取得した行を出力し、REST 上の同じレコードと値を照合します。
    ds = system.db.runQuery("SELECT [ personal.name.first ], [ personal.name.last ] FROM people LIMIT 10", "REST")
    for row in ds:
        print row["[ personal.name.first ]"], row["[ personal.name.last ]"]
  2. 必要に応じて、別のテーブルへのクエリやフィルタ付きのクエリも実行し、スキーマの検出とフィルタリングが正しく機能することを確認します。
  3. 必要に応じて Gateway サービスを再起動し、接続のステータスが VALID に戻ることを確認します。

トラブルシューティング

症状 考えられる原因と対処法
ドライバーのステータスが ERROR になるクラス名が間違っているか、Manage JAR files から JAR ファイルがアップロードされていません。
接続のステータスが FAULTED になる認証情報が間違っている、外部への Web 通信(HTTPS)がブロックされている、または CData のライセンスが見つからないことが考えられます。ステータスをクリックしてエラー内容を確認してください。
「Could not find a valid license」エラーが表示されるGateway は Windows サービスとして実行されているため、ユーザープロファイルに保存されたライセンスを読み取れません。管理者権限のコマンドプロンプトでドライバーの lib フォルダに移動して java -jar cdata.jdbc.rest.jar --license を実行し、生成された .lic ファイルを C:\Windows\system32\config\systemprofile\.CData\ にコピーしてから、Gateway サービスを再起動してください。
データベース接続が見つからないスクリプト内の接続名が、Gateway の接続名と完全には一致していません。

Ignition 以外の環境でのドライバーのテスト

Gateway とは切り離してドライバー単体の動作を確認したい場合は、次のスタンドアロンの Java サンプルを実行してみてください。cdata.jdbc.rest.jar と cdata.jdbc.rest.lic は同じディレクトリに配置し、クラスパスに含めておく必要があります。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class CDataExample {
    public static void main(String[] args) throws Exception {
        Class.forName("cdata.jdbc.rest.RESTDriver");
        String connectionString = "jdbc:rest:DataModel=Relational;URI=C:/people.xml;Format=XML;";
        try (Connection conn = DriverManager.getConnection(connectionString)) {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT [ personal.name.first ], [ personal.name.last ] FROM people LIMIT 10");
            while (rs.next()) {
                System.out.println(rs.getString("[ personal.name.first ]") + ", " + rs.getString("[ personal.name.last ]"));
            }
        }
    }
}

CData で Ignition にリアルタイムかつガバナンスの効いた REST 連携を

CData JDBC Driver for REST を登録すれば、ETL 基盤や手作業でのエクスポート、独自の連携コードを用意することなく、Ignition からリアルタイムの REST データをクエリできます。同じ接続をタグや SQL Bridge、Perspective / Vision の画面でも再利用できます。

無料トライアルで、CData を使って Ignition から数百もの外部システムへリアルタイムかつセキュアにアクセスできることを、ぜひお確かめください。

はじめる準備はできましたか?

REST Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

REST Icon REST JDBC Driver

REST Web サービス連携のパワフルなJava アプリケーションを素早く作成して配布。