Developer'sWorks
Tips

CAMCへのバージョンチェックの組み込み

CAMCにバージョンチェックの機能を埋め込む方法です。
当ページでは、ロジッククラスを用いた方式を紹介しています。

前提として、RunClientConstants.wdgに以下の属性を設定してください。

<datas>
	<data name="MODULE_VERSION" value="1.0.0-2018.10.15" />
</datas>

このファイルは、クライアントへの配布モジュールにも含めており、
サーバ上にも配置しておくものとします。
また、モジュールに修正が加わったタイミングで、サーバ側と配布モジュールのバージョン番号を変更する運用とします。

ロジッククラスの作成

public class VersionCheckLogicClass extends AbstractClient{

	@Override
	public int getIOParameter() throws Throwable {
		return OK;
	}

	@Override
	public int execute() throws Throwable {
		String clientVersion = getConstantValue("MODULE_VERSION");
		String serverVersion = getServerVersion();

		if (serverVersion.equals(clientVersion)) {
			return OK;
		} else {
			showErrorDialog("最新のバージョンがリリースされているようです。最新バージョンをサーバより取得してください。");
			return SYSTEM_EXIT;
		}

	}

	public String getServerVersion() throws SAXException, IOException, ParserConfigurationException {
		URL url = getConfig().getCodeBase();
		String serverConstants = url.toExternalForm() + "/conf/RunClientConstants.wdg";
		
		Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(serverConstants);
		 NodeList nodeList = document.getElementsByTagName("data");
		 for(int i=0 ; i < nodeList.getLength(); i++) {
			  Node node = nodeList.item(i);
			  if(node instanceof Element) {
				  Element element = (Element)node;
				  if(element.getAttribute("name").equals("MODULE_VERSION")){
					 return element.getAttribute("value");
				  }
			  }
		 }
		 
		return "";
	}

	@Override
	public void exit() throws Throwable {

	}

}

ロジッククラスの組み込み

このロジッククラスを、RunClientで最初に実行するモジュールに設定してください。
通常、ログイン画面や、メニュー画面となります。

ロジッククラスの動きについて

このロジッククラスは、RunClientConstants.wdgのバージョン情報を元にチェックを行います。

クライアント側は、VisualFrame標準機能で、値を取得し、
サーバ側はHTTP通信を用いて、最新のRunClientConstants.wdgを取得して、ロジッククラス内で値を取得しています。

これらの値に差異がある場合、エラーメッセージを表示したのちに、アプリケーションを終了するようにしております。

簡易的なチェックのみなので、最新モジュールの自動ダウンロードや、ダウンロードページへの遷移といった機能は
こちらのサンプルロジッククラスの中には含んでおりません。