第494話:自動工程におけるデータ加工、アレコレ(その1)

2016年8月1日
特定の「業務データ」を加工したい。
特定の「業務データ」のデータ型を変換したい。
特定の「業務データ」のプロパティとしての文字数を取得したい。

基本的な話として、「ワークフローシステム」は業務データの「受け渡し」を自動化する。ただ「受け渡し」だけでなく、「作業そのもの」についても出来る範囲で自動化(無人化)したいものだ。特に「機械的な作業」であれば尚更。。。

クラウド型ワークフロー『Questetra BPM Suite』の場合、
  • 文字列Aと文字列Bを結合する(M227)
  • 数値Aと数値Bを足す(M227)
  • 文字列を台紙 PDF に挿入された PDF を生成する(M228)
  • ファイルを Google Drive に保存する(M229)
と言った作業であれば、最初から組み込まれている自動工程でサーバサイド処理させることができる。しかし、少しでも「オリジナリティが高い作業」となれば、そうも行かない。

たとえば、以下のワークフローにある『文字数カウンタ』は、上流工程で入力された文字列型データXについて、(サーバサイドにて)、その文字数を数え、数値型データYに格納させる自動工程だ。こういった場合には[スクリプト工程](スクリプトタスク)(M230)と呼ばれる万能工程を配置し、スクリプト(ECMA-Script/JavaScript)をセットする必要がある。(Ver. 11.0 時点では…)

[文字数カウンタ]

[文字数カウンタ:「1.原稿セット」画面]

ここでセットすべきスクリプトは非常に短いものになるだろう。具体的に「文字数を数える部分」を想像すれば、
var countA = myText.length;
と書くだけでも良い。しかし、現実の業務において何文字と数えるべきか?は悩ましいケースも少なくない。それは業種や文化によって考え方が大きく異なるのだ。
  • 論文の査読
  • HTMLの校正
  • プログラム・レビュー
  • プレス原稿のレビュー

たとえば、以下のような文字列を何文字と数えるべきか? (便宜的に全角空白を「_」で表示)
1234567890
12345678 0
12345678_0
1234567 _0
「改行」は文字でないと考える業種は多いだろう。「見やすさの為に入力した改行や連続空白など」については文字数としてカウントすべきではないと考える業種もあるだろう。日本語原稿であれば「全角空白」や「半角空白」を文字としてカウントしないと考えるかも知れない。

つまるところ、自社における「文字数のカウント方法」をあらかじめ決めておく必要がある。

▼スクリプト工程『文字数カウンタ』の設定サンプル (サーバサイド JavaScript)
//// == ワークフローデータの参照 / Retrieving ==
var myText = data.get("q_mytext") + ""; // JavaScript String

//// == 演算 / Calculating ==
var countA = myText.length;
var countB = myText.replace(/\r|\n/g, "").length;
var countC = myText.replace(/\r|\n/g, "")
.replace(/\s+/g," ").length;
var countD = myText.replace(/\r|\n/g, "")
.replace(/\s/g,"").length;
//注)タブや全角空白なども「\s」に含まれる(UTF-8)

//// == ワークフローデータへの代入 / Updating ==
retVal.put("4", java.math.BigDecimal( countA ) );
retVal.put("5", java.math.BigDecimal( countB ) );
retVal.put("6", java.math.BigDecimal( countC ) );
retVal.put("7", java.math.BigDecimal( countD ) );

▼ブラウザ側にも『文字数カウンタ』を実装してみた例(HTML/JavaScript)
<span id="myCounter">0</span>
<script type="text/javascript">
  jQuery('textarea[name="data[0].input"]').bind('keyup change',function(){
  var myTextLength = jQuery(this).val().length;
  jQuery('#myCounter').html( myTextLength );
});
</script>

<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿