カスタム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が実行されていない場合は通常の起動を行います。