
マスターテーブル, TSV文字列で生成 (Master Table, Create by TSV String)
TSV文字列を参照して、マスターファイルを生成します。TSVデータ内の指定カラム列データが Master IDs として、それ以外が Master Labels として、セットされた選択肢マスタ(OptionsXML)が生成されます。下流工程に[サービスタスク(選択肢マスタ更新)] を配置すれば、更新業務を自動化できます。
2020-06-15 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/master-table-create-by-tsv-string/
Configs
- A: TSV文字列をセットしてください * #{EL}
- B1: Master ID となる列番号をセットしてください (例 “0”) * #{EL}
- B2: Label要素間のセパレータ文字をセットしてください (例 “*”) #{EL}
- C0: マスターファイル名をセットしてください (例 “foo.xml”) * #{EL}
- C1: マスターファイルが格納されるファイル型データを選択してください (追記) *
- C2: マスターのID一覧が格納される文字列型データを選択してください (更新)
- C3: マスターのLabel一覧が格納される文字列型データを選択してください (更新)
Script
// Nashorn Script (engine type: 1)
//
// Notes:
// When [service task (update option master)] is placed downstream
// - add Select-Type data item and refer to the ID-list and the Label-list
// - https://support.questetra.com/bpmn-icons/service-task-choices-update/
// - https://questetra.zendesk.com/hc/en-us/articles/360002260151-M208
//
// Notes(ja):
// 下流に[サービスタスク(選択肢マスタ更新)]を配置する場合
// - 別途、選択肢型データを定義し、ID一覧とLabel一覧を参照させます
// - https://support.questetra.com/ja/bpmn-icons/service-task-choices-update/
// - https://questetra.zendesk.com/hc/ja/articles/360002260151-M208
//
// id = value, label = display
/*
Questetra BPMS V12.0 (released 2020-05-11)
- configs.getObject()
- engine.findData()
- engine.setData()
*/
//////// START "main()" /////////////////////////////////////////////////////////////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const strTsv = configs.get( "strSetConfA" ) + ""; // required
const strColumnId = configs.get( "strSetConfB1" ) + ""; // required
let strSeparator = configs.get( "strSetConfB2" ) + ""; // not
const strMasterName = configs.get( "strSetConfC0" ) + ""; // required
const pocketFilesMaster = configs.getObject( "SelectConfC1" ); // required
const pocketStrOptionIds = configs.getObject( "SelectConfC2" ); // not
const pocketStrOptionLabels = configs.getObject( "SelectConfC3" ); // not
if( strTsv === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {TSV A} is empty \n" );
}
const numColumnId = parseInt( strColumnId );
engine.log( " AutomatedTask StringColumnId:" +
" String {B1}: " + numColumnId );
if( isNaN( numColumnId ) ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {Column-Number B1} is not an integer \n" );
}
engine.log( " AutomatedTask SeparatorInLabel:" +
" String {B2}: " + strSeparator );
if( strSeparator === "" ){
engine.log( " AutomatedTask ConfigWarning:" +
" Config {strSeparator B2} is empty or not configed" );
// strSeparator = "*";
}
if( strMasterName === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {MasterFile Name C0} is empty \n" );
}
//// == Data Retrieving / ワークフローデータの参照 ==
let filesMaster = engine.findData( pocketFilesMaster );
if( filesMaster === null ){
filesMaster = new java.util.ArrayList();
// java.util.ArrayList
// - com.questetra.bpms.core.event.scripttask.QfileView
}
//// == Calculating / 演算 ==
let strOptionIds = "";
let strOptionLabels = "";
const arrStrTsv = strTsv.split("\n");
engine.log( " AutomatedTask StringTsv: " +
arrStrTsv.length + " lines" );
let arrTmpRow;
for( let i = 0; i < arrStrTsv.length; i++ ){
arrTmpRow = arrStrTsv[i].split("\t");
if( arrTmpRow.length < 2 ){
throw new Error( "\n AutomatedTask UnexpectedTsvError:" +
" #of columns is less than 2 at line " + i + " \n" );
}
if( arrTmpRow.length < numColumnId ){
throw new Error( "\n AutomatedTask UnexpectedTsvError:" +
" #of columns is less than Col-Num at line " + i + " \n" );
}
for( let j = 0; j < arrTmpRow.length; j++ ){
if( j === numColumnId ){
strOptionIds += arrTmpRow[j] + "\n";
}else{
strOptionLabels += arrTmpRow[j] + strSeparator;
}
}
if( strSeparator.length !== 0 ){
strOptionLabels = strOptionLabels.slice( 0, (- strSeparator.length) );
}
strOptionLabels = strOptionLabels + "\n";
}
strOptionIds = strOptionIds.slice( 0, -1 );
strOptionLabels = strOptionLabels.slice( 0, -1 );
let xmlNew = '<?xml version="1.0" encoding="UTF-8"?><items>\n';
let arrOptionIds = strOptionIds.split("\n");
let arrOptionLabels = strOptionLabels.split("\n");
for( let i = 0; i < arrOptionIds.length; i++ ){
xmlNew += '<item value="';
xmlNew += arrOptionIds[i];
xmlNew += '" display="';
xmlNew += arrOptionLabels[i];
xmlNew += '" />\n';
}
xmlNew += "</items>";
filesMaster.add(
new com.questetra.bpms.core.event.scripttask.NewQfile(
strMasterName, "text/xml", xmlNew
)
);
//// == Data Updating / ワークフローデータへの代入 ==
engine.setData( pocketFilesMaster, filesMaster ); // FILES
if( pocketStrOptionIds !== null ){ // STRING
engine.setData( pocketStrOptionIds, strOptionIds );
}
if( pocketStrOptionLabels !== null ){ // STRING
engine.setData( pocketStrOptionLabels, strOptionLabels );
}
} //////// END "main()" /////////////////////////////////////////////////////////////////
Download
Capture

![TSV文字列を参照して、マスターファイルを生成します。TSVデータ内の指定カラム列データが Master IDs として、それ以外が Master Labels として、セットされた選択肢マスタ(OptionsXML)が生成されます。下流工程に[サービスタスク(選択肢マスタ更新)] を配置すれば、更新業務を自動化できます。](https://i0.wp.com/support.questetra.com/wp-content/uploads/2020/06/Master-Table-Create-by-TSV-String-capture-ja.png?resize=1200%2C675&ssl=1)
Notes
- 下流に[サービスタスク(選択肢マスタ更新)]を配置する場合
- 別途、選択肢型データを定義し、ID一覧とLabel一覧を参照させます
- https://support.questetra.com/ja/bpmn-icons/service-task-choices-update/
- https://questetra.zendesk.com/hc/ja/articles/360002260151-M208