差分確認 (Table and Table)

差分確認 (Table and Table)

2つのテーブル型データ項目を行単位で差分確認します

2018 © Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/tables-diff/

Configs
  • A: オリジナル情報が格納されているテーブル型データを選択してください *
  • B: 更新後情報が格納されているテーブル型データを選択してください *
  • C: 差分に関する情報が格納される文字列型データを選択してください(更新) *
Script
//////// 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.model.formdata.ListArray (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 tmpRow = "";
  for (let j=0; j < myAtable.getRow(i).size(); j++){
  // com.questetra.bpms.core.model.formdata.ListArray.ListRow
    tmpRow += myAtable.get(i, j);
    if( j !== myAtable.getRow(i).size() - 1 ){ tmpRow += "\t"; }
  }
  myAarr.push( tmpRow );
}

let myBarr = [];
for (let i=0; i < myBtableSize; i++){
  let tmpRow = "";
  for (let j=0; j < myBtable.getRow(i).size(); j++){
  // com.questetra.bpms.core.model.formdata.ListArray.ListRow
    tmpRow += myBtable.get(i, j);
    if( j !== myBtable.getRow(i).size() - 1 ){ tmpRow += "\t"; }
  }
  myBarr.push( tmpRow );
}

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

Capture

Notes

  • 10行目に1行追加されている場合の出力例:「+10 questetra クエステトラ」

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

上部へスクロール