top of page

ACLの活用:承認者の特定

yagi01_edited.jpg

執筆者 八木基次

執行役員

■国際認定CAATs技術者(ICCP)

■公認情報システム監査人(CISA)

大手監査法人において、IT戦略・計画策定支援、内部監査支援、財務諸表・内部統制監査の一環としてのIT監査等に従事。2019年より三恵ビジネスコンサルティング株式会社に入社。現在CAATs導入支援、業務改善支援等に従事。

契約や価格設定等の申請および承認業務において、ワークフローシステムを利用しており、且つワークフローシステムから各申請伝票の承認履歴をデータとして入手できるなら、この申請伝票の承認履歴データを活用することで、各伝票の承認処理が適正な承認権限者によって実施されているか否かの検証を網羅的且つ効率的に実施することが可能になります。

とは言っても、ワークフローシステムから承認履歴データを入手しても、データの持ち方や見方が意外と複雑で、Excel上で表示しても、「ここを見ればよい」と一目瞭然に判別できることが難しいケースもあるかと思います。

このような状況に対応するべく、入手したデータの特性や各データフィールドの意味等を理解し、監査テーマや検証の目的に照らして、重要なデータの特定、重複部分や空値(空白やゼロ等)の解消等のデータ加工を行い、「見やすいデータ」に整える事前準備の処理が必要となる場面が実務では多いのではと思われます。

 ⇔ データ分析を行う際は、”データクレンジング”(データの質を向上させる処理)が重要!!と言われる場面のひとつです。

今回は、ワークフローシステムで承認履歴を保持した申請伝票データを題材として、この「見やすいデータ」に整えるACLスクリプトの作成例を紹介したいと思います。

ステップ0:データ等の前提

ワークフローシステムの承認履歴に関するデータの記録・保持は、それこそシステムにより様々ですが、今回例示するワークフローシステムにおいては、最大3段階までの承認階層を設定可能であり、

実際にどの階層(第1承認、第2承認、第3承認)までの承認処理が、どの社員により実施されたかは、

伝票ごとに異なり、申請伝票データ上の「承認者01_社員CD」、「承認者02_社員CD」、「承認者03_社員CD」の各フィールドに保持されている社員CD(6桁コード)により、判定できるものとします。

acl06-①.jpg

上記のような申請伝票データを対象に、ACLを利用して、最終承認が何階層目で実施されたのか、またどの社員により実施されたのか、分かり易く明示したデータを作成するスクリプトの例を紹介します。

ステップ1:最終承認の階層の識別とデータ作成

各申請伝票データの最終承認が何階層目で実施されたのかを識別するために、『最終承認FLG』を演算フィールドで追加します。「承認者01_社員CD」、「承認者02_社員CD」、「承認者03_社員CD」の各フィールドに社員CD(6桁コード)が保持されているか否かを判定して、「承認者03_社員CD」に社員CDが存在すれば「3」を付与、「承認者02_社員CD」に社員CDが存在すれば「2」を付与など行います。以下のように条件付き演算フィールドを定義することにより作成します。

acl06-②.jpg

上記の留意点としては、ワークフローシステムの仕組み上、最大の最終承認階層(上記の例は、3階層目が最大の承認階層)を把握した上で、その最大の最終承認階層から順(3⇒1の順)に、IF文の条件式を定義することです。これを逆にすると(上記の例であれば、1⇒3の順で、IF文の条件式を定義すると)、全ての申請伝票データの最終承認階層は、「1」と判定されることになるので、留意が必要です。

ステップ2:最終承認階層の承認者の取得とデータ作成

ステップ1で作成した『最終承認FLG』から、最終承認階層の承認者を特定し、”最終承認者”フィールドにデータをセットする方法について、繰り返し処理の一つである「GROUP IF」とデータの最後に追加する「APPEND」を利用した処理を以下に例示します。

まずは、『最終承認FLG』の値に応じた”最終承認者”の社員CDを取得して、ワークテーブルを作成する処理を行います。「GROUP IF」の条件分岐点として、『最終承認FLG』の値を利用し、分岐後の処理として、最終承認階層ごとのワークテーブルの作成処理を「EXTRACT」コマンドにより行います。

acl06-⑤.jpg

「GROUP IF」は、各レコードに対して1つ以上のコマンドを1回繰り返して処理する場合で、条件に応じて処理を変える場合に使用します。

(申請伝票データの演算フィールド:最終承認FLGが2の場合、「承認者02_社員CD」を”最終承認者_社員CD”としてフィールド定義して、”WT02_最終承認者データ”のテーブルに出力する)

acl06-④.jpg

次に、最終承認階層ごとに作成したワークテーブルを一つのテーブルに合算する処理を行います。この場合、データの最後に追加する「APPEND」コマンドを利用します。

acl06-⑤.jpg

ステップ3:申請Noの昇順並べ替え

最後に、データ加工前の申請伝票データと同じような並び順にする必要がある場合、「申請No」を昇順キーとする並び替え処理を「SORT」コマンドの利用により行います。

acl06-⑥.jpg

まとめ

以上、ワークフローシステムの申請伝票データの承認履歴から最終承認者のデータを作成するACLスクリプトの例となります。他のスクリプト処理の手順でも、同様なデータ作成は可能ですが、今回例示しました

「DEFINE FIELD … COMPUTED」:演算フィールドの作成、

「GROUP IF」:条件分岐の繰り返し処理、

「EXTRACT」:テーブル作成、

「APPEND」:データの最後に追加、

「SORT」:データの並べ替え処理、

については、多くの場面で役に立つ有用なコマンドで、且つスクリプトの構文も比較的簡単なので、実務で体現してもらえれば幸いです。

bottom of page