CRS

Q6 10
「BizBrowser.core」をバックアップしたい
[内容]
例外発生時に出力される「BizBrowser.core」をバックアップして履歴を残すにはどうすればよいか

A6 10
[解決方法]
FileSystemクラスのRenameメソッドを利用してファイルのバックアップを行う方法があります。

Renameメソッドでコピーするファイル名は仮想ファイル名で指定を行います。
そのため、事前に「BizBrowser.core」の配置フォルダをMountメソッドでマウントします。

実装方法については、以下のサンプルコードをご参照ください。
サンプルコードでは、システムのログイン画面で「BizBrowser.core」が存在するかをチェックし、存在する場合はバックアップ(保存)を行えるような実装をしています。

[サンプルコード] ※記述ポイント抜粋
Label Label3 {
  X = 53;
  Y = 295;
  Width = 336;
  Height = 50;
  HorizontalAlign = $CENTER;
  Border = $TRUE;
  BorderStyle = $RISED;
  FgColor = $RED;
  Visible = $FALSE;
  Value = "前回システムが異常終了しました。\n異常終了した情報を";
  Value += "保存する場合は、\nここをクリックしてください。";
  
  Function OnClicked( e ) {
   try{
    /* 現在日付の取得 */
    var f_data = new Date();
    
    /* バックアップ後のファイル */
    var file_rename = str(f_data,"YYYYMMDDHH24MISS")+"_BizBrowser.core";
    
    var rename_path = CRS_010.bk_folder+ "/" +file_rename;
    
    /* バックアップ対象のファイルが存在する場合は、
                                 現在日付でバックアップ */
    if (!CRS_010.fsp.Rename(CRS_010.file_name, rename_path, 
                     FileSystem.NOCONFIRM + FileSystem.NOERRORUI)) {
      //.MessageBox("BizBrowser.coreのバックアップに失敗しました。");
      return;
    }        
    if(MessageBox("保存したファイル("+ file_rename +")を確認しますか?"
               ,"確認", $OKCANCEL+$IconQuestion) == OkSelected) {
      var rt = new Runtime(CRS_010.fsp);
      rt.ShellExplore("/backup");
    }
    
    /* マウント解除 */
    CRS_010.fsp.Unmount("/backup");
    
    Visible = $FALSE;
    
   }catch(e){
    //.MessageBox(e.Message);
   }
  }
}

if ( !$DESIGNTIME ) {
  try{
    var fs = new FileSystem();
    
    /* BizBrowser.coreの配置パス取得 */
    var path = fs.MapPath("/");
    
    /* BizBrowser.coreは、rootフォルダと同階層に配置されているため、
      rootフォルダのパスを取得し、取得したパスから「root」フォルダの
      パスを除外する。 */
    var f_backup = path.replace("root\\","");
  
    /* 仮想バックアップフフォルダ名 */
    String bk_folder = "/backup";
  
    /* バックアップファイル対象 */
    String file_name = bk_folder + "/BizBrowser.core";
    
    var fsp = new FileSystem(FileSystem.PRIVATE_ROOT);
    CRS_010.Append(fsp,"fsp");
    
    /* フォルダのマウント */
    fsp.Mount("データフォルダ", bk_folder, f_backup);
    if(fsp.Exists(file_name)){
      /* BizBrowser.coreが存在する場合は、メッセージ表示 */
      Label3.Visible = $TRUE;
    }
  }catch(e){
    //.MessageBox(e.Message);
  }
}

「BizBrowser.core」の配置フォルダを直接取得する事はできませんが、出力先がrootフォルダと同じ階層であるため、rootフォルダの位置を取得する事で配置フォルダの位置を特定しマウントを行う事が可能です。

実際の挙動については、CRSファイル形式のサンプル
   「「BizBrowser.core」をバックアップしたい(CRS_010.zip)」
をご確認ください。

バックアップした「BizBrowser.core」は自動で削除されませんので、バックアップを行う場合は、蓄積した「BizBrowser.core」を削除する処理も合わせてご検討ください。

また、Biz/Browser V ver5.0.2.0をご利用の場合は、上記の方法以外にコマンドラインパラメータの設定で「BizBrowser.core」のバックアップを行う方法があります。
詳細は、「Biz/Browserの例外発生箇所の調査方法」をご参照ください。

管理番号:CRS_010
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ