プログラミング知識の活用
「スクリプト工程」とは、業務プロセス内にある「自動工程」の一種です。たとえば、
- 上流工程で入力された『出勤時刻』と『帰宅時刻』を参照して、
- 自動的に『勤務時間』( {帰宅時刻} - {出勤時刻} )を算出する
逆に言えば、その様なスクリプト工程を日報フローに組み込めばすれば、社員に『勤務時間』を記入してもらう必要が無くなります。
何が出来るのか?
ワークフロー基盤側で行われる自動処理は、いわゆる『サーバサイド処理』です。つまり、業務プロセスを流れてきた案件が「スクリプト工程」に到達すれば、自動的にデータが参照され、また書き換えられます。全ての処理は人間の関知しないところで実行されます。
そこにセットされるプログラムコードは
- 「業務データの参照」に始まり、
- 「様々な演算処理」を経て、
- 「業務データの書き換え」で終わる
どの様な「演算」が可能なのか?
たとえばクラウド型ワークフロー製品である『Questetra BPM Suite』の場合、「サーバサイド JavaScript (ECMA Script) をセットできる」(※)という仕様となっています。そして、以下のような演算が可能です。- 基本的な数値データ演算(四則演算、平方根、指数、四捨五入、乱数…)
- 基本的な文字列データ操作(結合、分割、整形、抜き出し、置換、検索…)
- 基本的な日時データ操作(加算、減算、経過計算、曜日判定、和暦変換…)
- JSON データの生成や解析
- XML データの生成や解析
- HTTPリクエストの送信(データGET、データPOST、OAuth2通信、Basic認証…)
- SMTPリクエストの送信(メール送信、添付ファイル生成、文字コード変換…)
※ 詳細情報はコチラやコチラ
[出退勤報告フロー-時分表示]
プログラムコードの例
このワークフローにある『勤務時間計算』というスクリプト工程には、たとえば以下のようなプログラムコードがセットされます。社員による『2.退勤時刻の報告』が完了すると、案件が『勤務時間計算』の工程に到達し、「8.11 (h)」や「7.96 (h)」といった『勤務時間』(数値型データ)が自動的に追加される仕組みです。
//// == ワークフローデータの参照 / Retrieving == var workStart = data.get("6"); var workEnd = data.get("7"); // com.questetra.bpms.util.AddableTimestamp var workBreak = data.get("8") - 0; // (h) number //// == 演算 / Calculating == // java.sql.Timestamp: long getTime() // Returns the number of milliseconds since Jan 1, 1970 GMT var intervalMilliSec = workEnd.getTime() - workStart.getTime() ; var intervalHour = Math.ceil( intervalMilliSec / 10 / 3600 ) / 100 ; // 小数第二位 / two places of decimals var workHour = intervalHour - workBreak ; //// == ワークフローデータへの代入 / Updating == retVal.put("9", java.math.BigDecimal( workHour ) );
スクリプト工程のメンテナンス
もし「8.11 (h)」や「7.96 (h)」といった数値型だけでなく、「8:07」や「7:58」といった文字列型のデータも算出されるように改めたくなった場合には、プログラムコードを編集する必要があります。(「15~18行目」と「22行目」が追加されたコード)
//// == ワークフローデータの参照 / Retrieving == var workStart = data.get("6"); var workEnd = data.get("7"); // com.questetra.bpms.util.AddableTimestamp var workBreak = data.get("8") - 0; // (h) number //// == 演算 / Calculating == // java.sql.Timestamp: long getTime() // Returns the number of milliseconds since Jan 1, 1970 GMT var intervalMilliSec = workEnd.getTime() - workStart.getTime() ; var intervalHour = Math.ceil( intervalMilliSec / 10 / 3600 ) / 100 ; // 小数第二位 / two places of decimals var workHour = intervalHour - workBreak ; var h = Math.floor( workHour ); var m = Math.floor( (workHour - Math.floor( workHour ) ) * 60 ); var mm = ( "0" + m ).slice(-2); var workHourStr = h + ":" + mm; //// == ワークフローデータへの代入 / Updating == retVal.put("9", java.math.BigDecimal( workHour ) ); retVal.put("12", workHourStr );
スクリプト工程を使用する際の注意
「業務工程の自動化」は、生産性向上に大きく寄与します。しかし一方で、スクリプト工程のメンテナンスには、どうしてもプログラミング知識が必要となります。
スクリプト工程の利用例などを参考にして、業務プロセスにスクリプト工程を活用する際には、「メンテナンスを含めた運用体制」について、しっかり議論しておくことが重要だと言えます。
[出退勤報告フロー-時分表示:「1.出勤時刻の報告」画面]
<データ項目一覧画面>
[雛形ダウンロード (無料)]
- 業務テンプレート:出退勤報告フロー-時分表示
- 出勤時刻と退社時刻をワークフローで! (2014-01-20)
- 勤怠管理もクラウド型ワークフローで! (2016-01-12)
- 業務システムでインフルの兆候をつかむ? (2016-02-29)
- 第523話:クラウドを用いた労働時間の適正な把握 (2017-02-20)
- M213 入力画面: 処理フォーム画面をデコレーションする(HTML/JavaScript) (使い方)
- M217 自動開始: 決められた日時に先頭処理が自動的に開始されるように設定する (使い方)
- M202 業務の流れ: 処理フローを定義し、各工程の締切時刻を設定する (使い方)
[英文記事 (English Entry) ]
0 件のコメント :
コメントを投稿