- 下記のスクリプトを記述した XML ファイルをダウンロードできます
main();
function main() {
//// == Config Retrieving / 工程コンフィグの参照 ==
const tableId = configs.get("Table_DataId");
const filename = configs.get("File_Name");
const fileId = configs.get("File_DataId");
if (filename === "" || filename === null) {
throw new Error("File Name is blank");
}
//// == Data Retrieving / ワークフローデータの参照 ==
const myTable = engine.findDataByNumber(tableId);
// com.questetra.bpms.core.model.formdata.ListArray
let myFiles = engine.findDataByNumber(fileId); // java.util.ArrayList
if (myFiles === null) {
myFiles = new java.util.ArrayList();
}
let myTsv = "";
if (myTable !== null) {
myTsv = tableToTsv(myTable);
}
myFiles.add(
new com.questetra.bpms.core.event.scripttask.NewQfile(
filename,
"text/tab-separated-values; charset=UTF-16",
"x-UTF-16LE-BOM",
myTsv
)
);
//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber(fileId, myFiles);
}
/**
* テーブル型データ を tsv に変換する
* @param {com.questetra.bpms.core.model.formdata.ListArray} myTable テーブル型データ
* @return {String} mytsv 変換後の tsv 形式の文字列
*/
function tableToTsv(myTable) {
//// == Calculating / 演算 ==
const numOfRows = myTable.size() - 0; // 行(Tableの高さ)
const numOfCols = myTable.getRow(0).size(); // 列(Tableの幅)
let mytsv = "";
for (let i = 0; i < numOfRows; i++) {
for (let j = 0; j < numOfCols; j++) {
mytsv += myTable.get(i, j);
if (j != numOfCols - 1) {
mytsv += "\t";
}
}
if (i != numOfRows - 1) {
mytsv += "\n";
}
}
return mytsv;
}