開発者がインポートツールを自作する方法を説明します。開発言語は Java です。

WagbyDesigner は標準で Excel, Access, そして既存のリレーショナルデータベースのテーブル情報からリポジトリを生成する機能を提供しています。

開発者はこの枠組みを利用して、自作のインポートツールを開発することができます。これにより、自社ルールで整備された設計書から Wagby のリポジトリへ変換するオリジナルのツールを作成し、Wagby への移行を促進することができるようになります。

ソースコードを用意する

ここではパッケージ com.example に、SampleConverterProcessor クラスを用意するものとします。(パッケージ名やクラス名は任意ですので、適切に読み替えてお試しください。)

はじめに wagbydesigner/webapps/wagbydesigner/WEB-INF に src フォルダを作成します。さらに src 以下に com/example フォルダを作成します。

次のソースコードを wagbydesigner/webapps/wagbydesigner/WEB-INF/src/com/example フォルダに保存します。

package com.example;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import jp.jasminesoft.jfc.tools.repository.converter.ConvertProcessorBase;

public class SampleConverterProcessor extends ConvertProcessorBase {
    @Override
    public void init(Map<String, String> environment, List<String> messageList) throws IOException {
        super.init(environment, messageList);
        System.out.println("environment="+environment);
    }

    @Override
    public void process() {
        System.out.println("process.");
    }
}
  • 作成するクラスは、jp.jasminesoft.jfc.tools.repository.converter.ConvertProcessorBase クラスを継承するようにしてください。
  • init メソッドと process メソッドをオーバーライドします。init メソッドでは、最初に super.init メソッドを呼び出し、継承元クラスの処理を実行してください。そのあとに独自の処理を記述します。process メソッドは処理の本体部分になります。
  • init メソッドの第一引数は、Designer の「パラメータ」で指定した値を保持するマップです。第二引数 messageList は、インポート処理後にブラウザのダイアログに表示したい内容を格納するリストです。environment および messageList は init メソッドと process メソッドの両方で参照することができるようになっています。
  • jp.jasminesoft ではじまるクラスは、WagbyDesigner が提供するものです。

コンパイル

ここではコマンドラインでコンパイルする方法を説明します。ここで説明する方法を参考に、ご利用の開発ツール (Eclipseなど) でコンパイルできる環境をご用意ください。

コンソールを開き、作業場所 wagbydesigner/webapps/wagbydesigner/WEB-INF に移動します。javac コマンドでコンパイルします。

Windows OS の場合:

javac -cp .;classes;lib\j_util.jar -d classes src\com\example\SampleConverterProcessor.java

Linux, Mac OS の場合:

javac -cp .:classes:lib/j_util.jar -d classes src/com/example/SampleConverterProcessor.java
クラスパス指定 (cpオプション) は、最初にカレントフォルダ (.) とし、次に classes フォルダを指定します。そのあとに lib フォルダに用意されている各種 jar ファイルを指定します。lib フォルダの jar ファイル群の前に classes フォルダを指定してください。

コンパイルが成功すると WEB-INF/classes フォルダ内に com/example/SampleConverterProcessor.class が生成されます。

WagbyDesigner を起動します。"運用 > その他 > インポート" タブを開きます。

クラス名の欄に次のように入力します。

com.example.SampleConverterProcessor
図1 クラス名を指定した実行

「インポートを実行」ボタンを押下すると、(WagbyDesignerを実行している) コンソールに次のようなメッセージが出力されます。

...
2018-11-xx 09:37:45 [INFO jp.jasminesoft.jfc.tools.repository.audit.Audit check] user:[user], [既存テーブル読み込み処理実行]
2018-11-xx 09:37:45 [INFO jp.jasminesoft.jfc.tools.rest.controller.RepositoryConverterController upload] Use class com.example.SampleConverterProcessor
2018-11-xx 09:37:45 [INFO jp.jasminesoft.jfc.tools.repository.service.RepositoryConverterService upload] [upload] com.example.SampleConverterProcessor 
environment={lib=/Users/joe/Desktop/test/Wagby-8.1.2/wagbydesigner/webapps/wagbydesigner/WEB-INF/lib, parameter=, classes=/Users/joe/Desktop/test/Wagby-8.1.2/wagbydesigner/webapps/wagbydesigner/WEB-INF/classes, tomcatlib=/Users/joe/Desktop/test/Wagby-8.1.2/customize/tomcat/lib}
process.
  • 上のサンプルプログラムでは、init メソッドで environment の内容をコンソールに出力しています。また process メソッドが呼び出されたことを確認するために "process." という文字列を同じくコンソールに出力しています。
  • environment は標準で jar ファイルが格納されている lib フォルダおよび .class ファイルが格納されている classes フォルダ、そして Tomcat の lib フォルダのパスを取得できるようになっていることがわかります。

パラメータを指定する (1)

「パラメータ」欄に入力した文字列は、environment オブジェクトの parameter キーに対応する値として格納されています。

図2 クラス名とパラメータを指定した実行

インポートを実行すると、コンソールに次のような値が表示されることを確認できます。

...
environment={lib=/Users/joe/Desktop/test/Wagby-8.1.2/wagbydesigner/webapps/wagbydesigner//WEB-INF/lib, parameter=Hello, My world !, classes=/Users/joe/Desktop/test/Wagby-8.1.2/wagbydesigner/webapps/wagbydesigner//WEB-INF/classes, tomcatlib=/Users/joe/Desktop/test/Wagby-8.1.2/customize/tomcat/lib}
process.

パラメータを指定する (2)

パラメータ欄に key=value 形式で値を指定すると、envorinment(実体は java.util.Map) に自動的に展開されます。

図3 パラメータをkey-value形式で指定した場合
...
environment={..., myparam2=bbb, myparam1=aaa}

開発者は process メソッド内で、パラメータの値を取得することができます。

...
    @Override
    public void process() {
        String v1 = environment.get("myparam1");
        String v2 = environment.get("myparam2");
        System.out.println("process. v1="+v1+",v2="+v2);
    }

特殊パラメータ debug

パラメータ欄に debug=true と指定すると、process メソッド内で boolean 変数 debug の値を取得することができるようになります。デバッグモードで実行したときにコンソールに出力する内容を制御したい場合に利用できます。

図4 パラメータdebug=trueを指定する
...
    @Override
    public void process() {
        if (debug) {
            System.out.println("[Debug] process method is called.");
        }
    }

ここまで、自作プログラムの書き方および動作確認方法を学びました。次章より、具体的なリポジトリの書き込み方法を学習していきます。