テーブル, 複製
テーブル, 複製 (Table, Duplicate)
テーブル型データを複製します。テーブル型データ項目Aに格納されている全てセル値がテーブル型データ項目Bに上書きコピーされます。テーブルのカラム設計に不整合がある場合、エラーとなる場合があります。
Configs
  • A: テーブル型データを選択してください *
  • B: テーブル型データを選択してください(更新)
  • B2: テーブル型データを選択してください(追記)
Script (click to open)
// GraalJS Script (engine type: 2)
//
// Notes:
// Copies text information of all cell values.
// Copies in the display order of the column. (Does not refer to column ID/field name)
// If the number of columns decreases, the right columns will not be copied.
// If the number of columns increases, blank strings will be completed.
// To re-order columns, consider Table-TsvString-TsvEdit-Table.
// Auto-calculated columns are reevaluated. (Not always the same value)
// Use the standard function for duplication of string, numeric, date, etc.
// - Automated Step (BPMN Icons): "Update Data"
// - M227: Auto Executing Data Binding, Arithmetic Operations
// To add data without erasing already stored cell data, use B2.
//
// Notes (ja):
// 全てのセル値の文字情報をコピーします。
// カラムの表示順にコピーします。(カラムID/フィールド名に関わらない)
// カラム列数が少なくなる場合は、右列部がカットされます。
// カラム列数が増える場合は、空白文字列で補完されます。
// 列の入れ換えは、Table→TSV文字列→TSV加工→Table等を検討してください。
// 自動計算カラムは、再評価されます。(必ずしも同じ値になりません)
// 文字列型・数値型・日付型などのデータ複製には、標準機能をご活用ください。
// - 自動処理工程(BPMNアイコン): [データ更新]
// - M227: 業務データの結合や四則演算が自動実行されるように設定する
// 既に格納されているセルデータを消さずに追記したい場合は、B2をご利用ください。


//////// START "main()" ////////////////////////////////////////////////////////////////
main();
function main(){

//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + ""; // required
const dataIdB = configs.get( "conf_DataIdB" ) + ""; // not required
const dataIdB2 = configs.get( "conf_DataIdB2" ) + ""; // not required
// 'java.lang.String' to javascript primitive 'string'

const numColsA = engine.findDataDefinitionByNumber( dataIdA ).getSubDataDefinitions().size() - 0; // java.util.List<com.questetra.bpms.core.event.scripttask.SubDataDefinitionView>#size()
engine.log( " AutomatedTask TableConfig:" +
            " #of {A}-Columns Definition: " + numColsA );

let outputTable1ProcessDataDefinitionView = null;
let outputTable1DataDefinition = null;
let outputTable1 = null;
let numColsB = 0;
if( dataIdB !== "" ){
  outputTable1ProcessDataDefinitionView = engine.findDataDefinitionByNumber( dataIdB ); // com.questetra.bpms.core.event.scripttask.ProcessDataDefinitionView
  outputTable1DataDefinition = outputTable1ProcessDataDefinitionView.getSubDataDefinitions(); // java.util.List<com.questetra.bpms.core.event.scripttask.SubDataDefinitionView>
  outputTable1 = outputTable1ProcessDataDefinitionView.createListArray(); // com.questetra.bpms.core.event.scripttask.ScriptListArray
  numColsB = outputTable1DataDefinition.size() - 0;
  engine.log( " AutomatedTask TableConfig:" +
              " #of {B}-Columns Definition: " + numColsB );
}

let outputTable2ProcessDataDefinitionView = null;
let outputTable2DataDefinition = null;
let outputTable2 = null;
let numColsB2 = 0;
if( dataIdB2 !== "" ){
  outputTable2ProcessDataDefinitionView = engine.findDataDefinitionByNumber( dataIdB2 ); // com.questetra.bpms.core.event.scripttask.ProcessDataDefinitionView
  outputTable2DataDefinition = outputTable2ProcessDataDefinitionView.getSubDataDefinitions(); // java.util.List<com.questetra.bpms.core.event.scripttask.SubDataDefinitionView>
  outputTable2 = engine.findDataByNumber( dataIdB2 ); // com.questetra.bpms.core.event.scripttask.ScriptListArray
  if( outputTable2 === null ){
    // Table with zero rows.
    outputTable2 = outputTable2ProcessDataDefinitionView.createListArray(); // com.questetra.bpms.core.event.scripttask.ScriptListArray
  }
  numColsB2 = outputTable2DataDefinition.size() - 0;
  engine.log( " AutomatedTask TableConfig:" +
              " #of {B2}-Columns Definition: " + numColsB2 );
}


//// == Data Retrieving / ワークフローデータの参照 ==
const inputTable = engine.findDataByNumber( dataIdA );
// com.questetra.bpms.core.event.scripttask.ScriptListArray (BPMS Table)
// https://questetra.zendesk.com/hc/en-us/articles/360024574471-R2300
if( inputTable === null ){
  throw new Error( "\n AutomatedTask UnexpectedTableError:" +
                   " Table {A} is empty \n" );
}


//// == Calculating / 演算 ==
if( dataIdB !== "" ){
  for( let i = 0; i < inputTable.size() - 0; i++ ){
    let tmpRow = outputTable1.addRow(); // com.questetra.bpms.core.event.scripttask.ScriptListArray.ScriptListRow
    if( numColsA < numColsB ){
      for( let j = 0; j < numColsA; j++ ){
        tmpRow.setCol( j, inputTable.getRow(i).getCol(j) );
      }
      for( let k = numColsA; k < numColsB; k++ ){
        tmpRow.setCol( k, "" ); // Fill with empty characters
      }
    }
    if( numColsA >= numColsB ){
      for( let j = 0; j < numColsB; j++ ){
        tmpRow.setCol( j, inputTable.getRow(i).getCol(j) );
      }
    }
    engine.log( " AutomatedTask:" +
                " Add B[" + i + "]" );
  }
}

if( dataIdB2 !== "" ){
  let numOriginLines = outputTable2.size() - 0;
  engine.log( " AutomatedTask:" +
              " #of {B2}-Rows: " + numOriginLines );

  for( let i = 0; i < inputTable.size() - 0; i++ ){
    let tmpRow = outputTable2.addRow(); // com.questetra.bpms.core.event.scripttask.ScriptListArray.ScriptListRow
    if( numColsA < numColsB2 ){
      for( let j = 0; j < numColsA; j++ ){
        tmpRow.setCol( j, inputTable.getRow(i).getCol(j) );
      }
      for( let k = numColsA; k < numColsB2; k++ ){
        tmpRow.setCol( k, "" ); // Fill with empty characters
      }
    }
    if( numColsA >= numColsB2 ){
      for( let j = 0; j < numColsB2; j++ ){
        tmpRow.setCol( j, inputTable.getRow(i).getCol(j) );
      }
    }
    engine.log( " AutomatedTask:" +
                " Add B2[" + (numOriginLines + i) + "]" );
  }
}


//// == Data Updating / ワークフローデータへの代入 ==
if( dataIdB !== "" ){
  engine.setDataByNumber( dataIdB, outputTable1 );
}
if( dataIdB2 !== "" ){
  engine.setDataByNumber( dataIdB2, outputTable2 );
}


} //////// END "main()" ////////////////////////////////////////////////////////////////

Download

2021-08-19 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/table-duplicate-2021/
Addonファイルのインポートは Professional でのみご利用いただけます

Notes

  1. 全てのセル値の文字情報をコピーします。
  2. カラムの表示順にコピーします。(カラムID/フィールド名に関わらない)
  3. カラム列数が少なくなる場合は、右列部がカットされます。
  4. カラム列数が増える場合は、空白文字列で補完されます。
  5. 列の入れ換えは、Table→TSV文字列→TSV加工→Table等を検討してください。
  6. 自動計算カラムは、再評価されます。(必ずしも同じ値になりません)
  7. 文字列型・数値型・日付型などのデータ複製には、標準機能をご活用ください。
    1. 自動処理工程(BPMNアイコン): [データ更新]
    2. M227: 業務データの結合や四則演算が自動実行されるように設定する
  8. 既に格納されているセルデータを消さずに追記したい場合は、B2をご利用ください。

Capture

テーブル型データを複製します。テーブル型データ項目Aに格納されている全てセル値がテーブル型データ項目Bに上書きコピーされます。テーブルのカラム設計に不整合がある場合、エラーとなる場合があります。

See also

%d人のブロガーが「いいね」をつけました。