(任意Webサイト): ファイル ダウンロード ((Any Website): File Download)
ファイルをダウンロードし、ファイル型データに追加します。指定したURLへGETリクエストが投げられ、そのレスポンスがファイルとして保存されます。
2020-09-17 (C) Questetra, Inc. (MIT License)
Configs
  • C1: ダウンロードファイルの URL * #{EL}
  • C2: ダウンロードファイルを追加保存するデータ項目 (ファイル) *
  • C3: 保存する際のファイル名 * #{EL}
Script
main();
function main() {
  //// == Config Retrieving / 工程コンフィグの参照 ==
  const fileUrl = configs.get( "conf_DataIdA" );
  const dataIdB = configs.get( "conf_DataIdB" );
  const saveAs  = configs.get( "conf_SaveAs" );

  //// == Data Retrieving / ワークフローデータの参照 == 
  let processFiles = engine.findDataByNumber( dataIdB );
  // java.util.ArrayList 
  if (processFiles === null) {
    processFiles = new java.util.ArrayList();
  }

  //// == Calculating / 演算 ==
  if( saveAs === "" ){
    throw "Downloaded File Name isn't set";
  }
  if ( ! fileUrl.startsWith('http') ) {
    throw "Invalid URL. URL must start with either http or https.";
  }
  const response = accessToTheUrl( fileUrl );

  const qfile = saveFile( saveAs, response );

  //// == Data Retrieving / ワークフローデータへの代入 == 
  updateData( processFiles, dataIdB, qfile )
}

/// Access to the URL
function accessToTheUrl( fileUrl ) {
  let httpRequest = httpClient.begin(); // HttpRequestWrapper
  // com.questetra.bpms.core.event.scripttask.HttpClientWrapper
  let response;
  try {
    response = httpRequest.get( fileUrl ); // HttpResponseWrapper
  } catch (e) {
    throw `Unable to access ${fileUrl}.`;
  }
  const httpStatus  = response.getStatusCode();
  const responseTxt = response.getResponseAsString();
  engine.log( `STATUS: ${httpStatus}` );
  engine.log( responseTxt );
  if (httpStatus >= 300) {
    throw `Failed to download. STATUS: ${httpStatus}`;
  }

  return response;
}


/// == Save File / ファイルを保存 ==
// com.questetra.bpms.core.event.scripttask.NewQfile
function saveFile( saveAs, response ) {
  const qfile = new com.questetra.bpms.core.event.scripttask.NewQfile(
    saveAs, response.getContentType(), response.getResponse()
  );
  return qfile;
}

//// == Data Updating / ワークフローデータへの代入 ==
function updateData( processFiles, dataIdB, qfile ) {
  processFiles.add( qfile );
  engine.setDataByNumber( dataIdB, processFiles );
}

Download

Capture

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。