プログラムの開発方法
最終更新日: 2020年6月12日
R8 | R9
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 フォルダに保存します。
ここではコマンドラインでコンパイルする方法を説明します。ここで説明する方法を参考に、ご利用の開発ツール (Eclipseなど) でコンパイルできる環境をご用意ください。
コンソールを開き、作業場所 wagbydesigner/webapps/wagbydesigner/WEB-INF に移動します。javac コマンドでコンパイルします。
Windows OS の場合:
Linux, Mac OS の場合:
コンパイルが成功すると WEB-INF/classes フォルダ内に com/example/SampleConverterProcessor.class が生成されます。
WagbyDesigner を起動します。"運用 > その他 > インポート" タブを開きます。
クラス名の欄に次のように入力します。
「インポートを実行」ボタンを押下すると、(WagbyDesignerを実行している) コンソールに次のようなメッセージが出力されます。
「パラメータ」欄に入力した文字列は、environment オブジェクトの parameter キーに対応する値として格納されています。
インポートを実行すると、コンソールに次のような値が表示されることを確認できます。
パラメータ欄に key=value 形式で値を指定すると、envorinment(実体は java.util.Map) に自動的に展開されます。
開発者は process メソッド内で、パラメータの値を取得することができます。
パラメータ欄に debug=true と指定すると、process メソッド内で boolean 変数 debug の値を取得することができるようになります。デバッグモードで実行したときにコンソールに出力する内容を制御したい場合に利用できます。
ここまで、自作プログラムの書き方および動作確認方法を学びました。次章より、具体的なリポジトリの書き込み方法を学習していきます。
インポートツールとは
最初のプログラム
ソースコードを用意する
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.");
}
}
コンパイル
javac -cp .;classes;lib\j_util.jar -d classes src\com\example\SampleConverterProcessor.java
javac -cp .:classes:lib/j_util.jar -d classes src/com/example/SampleConverterProcessor.java
実行
com.example.SampleConverterProcessor
...
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.
パラメータを指定する (1)
...
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)
...
environment={..., myparam2=bbb, myparam1=aaa}
...
@Override
public void process() {
String v1 = environment.get("myparam1");
String v2 = environment.get("myparam2");
System.out.println("process. v1="+v1+",v2="+v2);
}
特殊パラメータ debug
...
@Override
public void process() {
if (debug) {
System.out.println("[Debug] process method is called.");
}
}