Questetra BPMS: 案件, 文字列型データ全連結

Questetra BPMS: 案件, 文字列型データ全連結 (Questetra BPMS: Process, Concat All Strings)

文字列型データをすべて連結します。Questetra BPM Suite のワークフローデータとして格納されている文字列型データおよびタイトル文字列を探索し結合します。各データの間には改行が加えられます。キーワードの存在確認などで利用します。

2019-11-05 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/questetra-bpms-process-concat-all-strings/

Configs
  • A: 通信許可の設定名([OAuth2.0設定]メニュー)を選択してください *
  • B: ワークフロー基盤URLをセットしてください(${var[applicationRoot]} or https://../) * #{EL}
  • C: 案件のプロセスIDをセットしてください ( 例 “123” ) * #{EL}
  • D: 連結された文字列が格納される文字列型データを選択してください (更新)
  • E: 連結された文字列が格納される文字列型データを選択してください (新行追記)
Script
// about Questetra Workflow API
// See https://online-demo-ja.questetra.net/s/swagger/index.html?urls.primaryName=Workflow%20API
// or "https://{YOUR}.questetra.net/s/swagger/index.html"

// about Questetra OAuth2 (for System Admin)
// Get ID&Secret: System Settings > API Clients > OAuth2 Clients > Add OAuthw Client
// (config "Redirect URL" = "https://s.questetra.net/oauth2callback" )
// (Scope: "read" or "any" )
// Set ID&Secret: Workflow App > Detail > OAuth2 Setting > (Get Refresh Token)


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

//// == Config Retrieving / 工程コンフィグの参照 ==
const oauth2          = configs.get( "conf_OAuth2"  )   + "";  // required
const applicationRoot = configs.get( "conf_ApplicationRoot" ) + "";  // required
const processId       = configs.get( "conf_ProcessId" ) + "";  // required
const dataIdD         = configs.get( "conf_DataIdD" )   + "";  // not required
const dataIdE         = configs.get( "conf_DataIdE" )   + "";  // not required
// 'java.lang.String' (String Obj) to javascript primitive 'string'

engine.log( " AutomatedTask Config: Application Root: " + applicationRoot );
engine.log( " AutomatedTask Config: Process ID: " + processId );


//// == Data Retrieving / ワークフローデータの参照 ==
let concatenatedTextSource = engine.findDataByNumber( dataIdE );

//// == Calculating / 演算 ==
// obtain Access Token
const token  = httpClient.getOAuth2Token( oauth2 );

// get ProcessInstance via Questetra Workflow API
// com.questetra.bpms.core.event.scripttask.HttpClientWrapper
let apiRequest = httpClient.begin(); // HttpRequestWrapper
    apiRequest = apiRequest.bearer( token );
    apiRequest = apiRequest.queryParam( "processInstanceId", processId );
const apiUri = applicationRoot + "API/OR/ProcessInstance/view";

// request to API
engine.log( " AutomatedTask Trying: GET " + apiUri );
const response = apiRequest.get( apiUri );
const responseCode = response.getStatusCode() + "";
engine.log( " AutomatedTask ApiResponse: Status " + responseCode );
if( responseCode !== "200"){
  throw new Error( "\n AutomatedTask UnexpectedResponseError: " +
         responseCode + "\n" + response.getResponseAsString() + "\n" );
}
const responseStr = response.getResponseAsString() + "";
const responseObj = JSON.parse( responseStr );
//engine.log( responseStr );

// retrieve JSON
let concatenatedText = "";
    concatenatedText += responseObj.processInstance.processInstanceTitle + "\n";
for( const key in responseObj.processInstance.data ){
  if( responseObj.processInstance.data.hasOwnProperty(key) ) {
    engine.log( key + ": " + responseObj.processInstance.data[key].dataType );
    if( responseObj.processInstance.data[key].dataType === "STRING" ){
      if( responseObj.processInstance.data[key].value == null ){
        engine.log( " AutomatedTask Json: null string" );
      }else{
        concatenatedText += responseObj.processInstance.data[key].value + "\n";
      }
    }
  }
}
concatenatedText = concatenatedText.replace(/[\n]*$/, "");


//// == Data Updating / ワークフローデータへの代入 ==
if( concatenatedText === "" ){
  engine.log( " AutomatedTask DataUpdating: Concatenated Text empty" );
}
if( dataIdD !== "" ){ 
  engine.setDataByNumber( dataIdD, concatenatedText );
}
if( dataIdE !== "" ){ 
  if( concatenatedTextSource !== null ){
    engine.setDataByNumber( dataIdE, concatenatedTextSource + "\n" + concatenatedText );
  }else{
    engine.setDataByNumber( dataIdE, concatenatedText );
  }
}


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

Download

Capture

文字列型データをすべて連結します。Questetra BPM Suite のワークフローデータとして格納されている文字列型データおよびタイトル文字列を探索し結合します。各データの間には改行が加えられます。キーワードの存在確認などで利用します。

Notes

  1. 全文検索用のデータ項目に利用できます
  2. ループ処理に対応しています(抽出結果の追記)
  3. 掲示板型やテーブル型には対応していません

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

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