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 );
}
Pingback: HTTP Files Retrieve – Questetra Support
Pingback: File-Type – Questetra Support