//////// START "main()" ////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + "";
const dataIdC = configs.get( "conf_DataIdC" ) + "";
const dataIdD = configs.get( "conf_DataIdD" ) + "";
const colIds = configs.get( "conf_ColIds" ) + "";
const arrColIds = colIds.split(",");
// 'java.lang.String' (String Obj) to javascript primitive 'string'
// https://wiki.openjdk.java.net/display/Nashorn/Rhino+Migration+Guide#RhinoMigrationGuide-JavaScriptvsJavaStrings
// https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html#sthref21
//// == Data Retrieving / ワークフローデータの参照 ==
let myTsv = engine.findDataByNumber( dataIdA );
if( myTsv !== null ){ myTsv += ""; }else{
throw new Error( "Source TSV data is NULL" );
}
const arrMyTsv = myTsv.split("\n");
let fileName = engine.findDataByNumber( dataIdC ) + ""; // NULL to "null"
let myFiles = engine.findDataByNumber( dataIdD ); // java.util.ArrayList
if( myFiles === null ){ myFiles = new java.util.ArrayList(); }
//// == Calculating / 演算 ==
let newTsv = "";
for( let i = 0; i < arrMyTsv.length; i++){
let arrCellValues = arrMyTsv[i].split("\t");
for( let j = 0; j < arrColIds.length; j++ ){
newTsv += arrCellValues[ parseInt( arrColIds[j] ) ];
if( j != arrColIds.length - 1 ){
newTsv += "\t";
}
}
if( i != arrMyTsv.length -1 ){
newTsv += "\n";
}
}
myFiles.add(
new com.questetra.bpms.core.event.scripttask.NewQfile(
fileName,
"text/tab-separated-values; charset=x-UTF-16LE-BOM",
newTsv
)
);
//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdD, myFiles );
} //////// END "main()" ////////