差分確認 (Table and Table) (Diff (Table and Table))
2つのテーブル型データ項目を行単位で差分確認します
Configs
- A: オリジナル情報が格納されているテーブル型データを選択してください *
- B: 更新後情報が格納されているテーブル型データを選択してください *
- C: 差分に関する情報が格納される文字列型データを選択してください(更新) *
Script (click to open)
// GraalJS Script (engine type: 2)
// Confirm the difference between A-table and B-table
// (c) 2021, Questetra, Inc. (the MIT License)
//////// START "main()" ////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + "";
const dataIdB = configs.get( "conf_DataIdB" ) + "";
const dataIdC = configs.get( "conf_DataIdC" ) + "";
//// == Data Retrieving / ワークフローデータの参照 ==
const myAtable = engine.findDataByNumber( dataIdA );
const myBtable = engine.findDataByNumber( dataIdB );
// com.questetra.bpms.core.event.scripttask.ScriptListArray (BPMS Table)
if( myAtable === null){
throw new Error( "Source Table data A is NULL" );
}
if( myBtable === null){
throw new Error( "Source Table data B is NULL" );
}
const myAtableSize = myAtable.size() - 0;
const myBtableSize = myBtable.size() - 0;
engine.log( "Original A: " + myAtableSize );
engine.log( "New Data B: " + myBtableSize );
//// == Calculating / 演算 ==
let myAarr = [];
for ( let i = 0; i < myAtableSize; i++ ) {
let tmpRowObject = myAtable.getRow(i); // com.questetra.bpms.core.event.scripttask.ScriptListArray.ScriptListRow
let tmpRowStr = "";
for ( let j = 0; j < tmpRowObject.size(); j++ ) {
tmpRowStr += tmpRowObject.getCol(j);
if( j !== tmpRowObject.size() - 1 ) {
tmpRowStr += "\t";
}
}
myAarr.push( tmpRowStr );
}
let myBarr = [];
for ( let i = 0; i < myBtableSize; i++ ) {
let tmpRowObject = myBtable.getRow(i); // com.questetra.bpms.core.event.scripttask.ScriptListArray.ScriptListRow
let tmpRowStr = "";
for ( let j = 0; j < tmpRowObject.size(); j++ ) {
tmpRowStr += tmpRowObject.getCol(j);
if( j !== tmpRowObject.size() - 1 ){
tmpRowStr += "\t";
}
}
myBarr.push( tmpRowStr );
}
let tmpAdd = "";
for ( let i = 0; i < myBarr.length; i++ ) {
let existFlag = false;
for ( let j = 0; j < myAarr.length; j++ ){
if( myBarr[i] === myAarr[j] ){
existFlag = true;
break;
}
}
if( existFlag === false ){
tmpAdd += "+" + i + " " + myBarr[i] + "\n";
}
}
let tmpDel = "";
for ( let i = 0; i < myAarr.length; i++ ) {
let existFlag = false;
for ( let j = 0; j < myBarr.length; j++ ) {
if( myAarr[i] === myBarr[j] ){
existFlag = true;
break;
}
}
if( existFlag === false ){
tmpDel += "-" + i + " " + myAarr[i] + "\n";
}
}
//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdC, tmpAdd + tmpDel );
} //////// END "main()" ////////
Download
2021-08-06 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/tables-diff/
Addonファイルのインポートは Professional でのみご利用いただけます
Notes
- 10行目に1行追加されている場合の出力例:「+10 questetra クエステトラ」
Capture
