Cognos BIでレポート公開承認のワークフローを作ってみた

##概要
Cognos BIでレポートを作った後に、レポートを公開してよいかどうか承認者に（承認 or 却下）の判断をしてもらう、ワークフロー的な機能をCognos BIで実装できないか、という要件がたまにあります。
Event Studioの機能を利用して、下図のようなワークフローをCognos BIで実装した例をご紹介します。
![018.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/894a8d36-de26-031a-ccb6-9192f6a9cb9d.png)

##実装概要
実装方法の概要です。
Report01の承認依頼を行いたい時に、「承認ジョブ」というジョブを実行してワークフローを回すイメージです。
![016.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/b2fec616-90ee-fa3b-0058-7f1e76a0a432.png)

「承認ジョブ」の中身は、単純に「承認EV01」「承認EV02」を順次実行します。
![017.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/d79f8ceb-f474-5dd8-0ce6-d91354f947e5.png)

「承認EV01」「承認EV02」の実体は、Event Studioで以下のようなタスクを並べて作成しています。
![021.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/c820b28c-0bec-6da3-1039-2cdd3baf8987.png)

##実装詳細
「承認EV01」「承認EV02」の詳細な説明となりますが、その前に下ごしらえがあります。

**事前準備**
ワークフローで「承認・却下」の結果を、フラッグとして保持しておくためのテーブルを作成します。
※DB2での例です。
![001.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/00b8d52b-873b-9dc1-d7f7-21ab539c7347.png)

作成したテーブルに「承認(1)・却下(0)」を書き込むための、ストアード・プロシージャーを作成します。
![002.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/8047c5bf-4540-497b-38bf-82cdb562f295.png)

ストアード・プロシージャー作成の実行コマンドです。
![003.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/54542287-5615-b3c6-d82c-d701363b5548.png)

Framework Managerのメタデータ･ウィザードでストアード・プロシージャーを取り込みます。
![004.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/22bf48b7-ed49-47f0-19c3-f92a56503f99.png)

同様にテーブルの方も取り込んでおきます。
![0041.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/ede730dd-1f87-8529-4bec-0c84afcd0381.png)

取り込んだストアード・プロシージャーの定義を修正します。
タイプ、パラメーター名、値、を以下のように修正し、パッケージを発行します。
![006.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/62e8f191-673f-11be-f3a9-0d5b56f30124.png)

**承認EV01の説明**
A).左端のイベントです、これは何でも結果が正になればよく、適当なデータアイテム >=0 を記載しています。
![007.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/4d991440-79e2-6e9d-4e23-89f98bbb0efa.png)

B).データ更新タスクで、先のストアード・プロシージャーを指定し、値を0に指定します。
これでテーブル上のフラッグが 0 に初期化されます。
![008.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/501474c7-c208-19c8-4db6-f9340f4587dd.png)

C).メール送信タスクで、レポート承認依頼のメールを送付します。
![009.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/965bbe7a-f6ee-1205-404d-d6448fb9b2eb.png)

D).承認要求タスクで、以下のようにレポートのリンクを付与して、依頼文を記載します。
ジョブはここで一旦停止したままとなり、承認者が「個人用受信トレイ」に通知された承認要求通知に「承認」か「却下」をする事により、先に進みます。
![010.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/c42ab91b-0c0b-d585-2f60-7e4c05daee57.png)

「却下」をされた場合、この「承認EV01」自体から抜けてしまいます。「承認ジョブ」に定義された、次の「承認EV02」に入ります。
「承認」された場合、「承認EV01」の後続のタスクが実行されます。

E).ここで再度テーブルのフラッグ更新が発生し、値の1 (承認)がテーブルに入ります。
![011.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/e7040b33-1bb9-83d6-a066-d2cdbb96f2d4.png)

F).メール通知タスクで、レポートが承認された事が申請者に通知されます。
![012.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/6a6f498e-eeea-1410-e5b3-828449884f6f.png)

次に「承認EV02」が呼ばれます。
この時点で、承認を受けている場合はテーブルのフラッグの値は 1、却下を受けている場合は 0 が入っているはずです。
G).フラッグ「FLG」の値が、0 であれば後続のタスクを実行し、0以外であれば「承認EV02」を抜けます。
![013.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/4a33c688-fe16-e216-fa1d-d336e1f97a80.png)

H).メール通知タスクで、レポートが却下された事を通知します。
![014.PNG](https://qiita-image-store.s3.amazonaws.com/0/147246/e36714db-566e-de47-2376-a91cc160001e.png)



如何だったでしょうか？
普段あまり使われない Event Studioにストアード・プロシージャーを合わせて、こんな感じになんちゃってワークフローを実現したりできる、ちょっと面白い事例です。
是非ご活用頂ければと思います。