カスタムURLスキームを用いた起動、および実行制御¶
他のアプリとの連携を行うための手法として、OSにはカスタムURLスキームという機構が用意されています。
簡単にいえば、アプリ独自のスキーム(“hoge://fuga”というURLにおける”hoge”の部分)を定義し、そのURLを別のアプリから開いた際、スキームを定義したアプリの起動とデータの送信を行うための機構となっています。
Biz/Browser DTはインストール時に下記のカスタムURLスキームをOSに登録します。
下記のURLスキームを用い、WebブラウザやエクスプローラーからURLを開こうとした場合、すでにBiz/Browser DTが実行中の場合はそのBiz/Browser DTへ、まだBiz/Browser DTが実行されていない場合、新たにBiz/Browser DTが起動された上、URLに記述された指示に従い動作を行います。
crs://www.example.com/hoge.crs
- http://www.example.com/hoge.crs に対するログインと解釈されます。
crs-http://www.example.com/hoge.crs
- http://www.example.com/hoge.crs (crs://と同一)に対するログインと解釈されます。
crs-https://www.example.com/hoge.crs
- https://www.example.com/hoge.crsに対するログインと解釈されます。
biz-browser://...
- (後述)
「biz-browser」スキーム¶
biz-browserスキームでは、通常のhttp/httpsスキームや前述のcrsスキーム等と比べて、Biz/Browserをより細かく制御することができます。
biz-browser://login
ログイン操作をおこないます。
?url=<url>
[必須]ログイン先URL
&proxy=<host:port>
[オプション]プロキシサーバを"ホスト名:ポート番号"の形で指定します。
未指定時はOSの設定に従います
&target=<self/tab/window>
[オプション]loginメソッドのオプションと同じく読み込み先を指定します。
未指定時はtabとみなします
&<key1>=<value1>
&<key2>=<value2>
…
&<keyN>=<valueN>
[オプション]ログインパラメータとしてApplicationへセットされApplication.getPropertyメソッドで値を取得できます。
<keyN>にオブジェクト名として使用できない名前(予約語や記号等)を指定した場合は、その値は無視されます。
使用例
biz-browser://login?url=http://www.example.com/dir/login.crs
biz-browser://login?url=http://www.example.com/dir/login.crs&proxy=127.0.0.1:8080&target=window&userid=test&password=pass
biz-browser://postMessage
Application.postInterContextMessageと同等の動作を行います。Biz/Browser DTが実行されていない場合は通常の起動を行います。
?serviceid=<サービスID>
[必須]サービスID。
&portid=<ポートID>
[オプション]ポートID、ワイルドカードとして"*"が使用できます。
未指定時は"*"とみなします
&<key1>=<value1>
&<key2>=<value2>
…
&<keyN>=<valueN>
[オプション]InterContextMessageイベントのe.paramへ値が格納されます。
子オブジェクトは0個以上の任意の数を指定できます。
<keyN>にオブジェクト名として使用できない名前(予約語や記号等)を指定した場合は、その値は無視されます。
使用例
biz-browser://postMessage?serviceid=CompanyService&portid=SalesSystem&command=setdata&amount=100000&quantity=50
# イベントを受け取るCRSスクリプト例
# 現在の実行コンテキストへサービスIDとポートIDを設定
Application.setCurrentContextInfo("CompanyService", "SalesSystem");
# Rootオブジェクトにイベントハンドラを定義
// {
function onInterContextMessaget(e) {
if (e.param["command"] == "setdata") {
# データ設定を行う関数
setData(e.param["amount"], e.param["quantity"]);
}
}
}
biz-browser://showForeground
Biz/Browser DTがすでに実行されている場合は、Biz/Browser DTを前面に表示します。Biz/Browser DTが実行されていない場合は通常の起動を行います。