Daeja ViewONE Virtualでリダクション処理をする

# リダクションとは？
リダクションとは、いわゆるマスキング処理のことです。画像の一部を塗りつぶすことによって、顧客の個人情報に関するものなどを後続の担当者に見せない状態で扱うことが可能になります。ViewONEはマスキング機能を提供しており、マスキングの永続化(焼き付け処理)なども行うことが可能です。

# リダクション・モードの使用
VeiwONEではリダクションを行うためのリダクションモードというものが提供されています。リダクション・モードを有効にするには以下のパラメータを設定します。

```
<PARAM NAME="editModeToggle" value="annotate,redact,docbuilder" />
```

また、リダクション・モードで焼き付け可能なアノテーションの種類を指定する必要があります。以下の例では、redact(塗りつぶし)とtextの焼き付けを可能とします。
```
<PARAM NAME="annotationDefaults" value="redact {burnable = true} text {burnable = true}">
```
これらのパラメータを設定してビューワーを起動した際には以下のように、リダクション・モードが表示可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/5b926d4c-7602-0984-4222-10b837973165.png)
# リダクションの焼き付け処理
リダクションを定義して画面上部の「作成」ボタンをクリックすることで、焼き付け処理を行ったPDFをダウンロードしてローカルに保存することが可能です。実際の利用シーンでは、ローカルにダウンロードするのは無く、FileNetの様なコンテンツ管理製品上にファイルを登録するケースがほとんどだと思われます。ViewONEのイベント・ハンドラ機能を用いることで、リダクションの焼き付けが完了した際に、コール・バック・メソッドを呼び出し、その中で登録処理を行うことが可能です。なお、デフォルトでは焼き付け処理を行ったファイルの形式はtifファイルとなります。PDFファイルに対してPDFで焼き付け後のファイルを生成するには以下の様ないburnPDFtoPDFパラメータをtrueに設定する必要があることに注意してください。
```
 <PARAM NAME="burnPDFtoPDF" value="true">
```

## イベント・ハンドラの設定
まず、ファイル生成時に発生するイベントを受け取るように構成する必要があります。リダクションの焼き付け処理の際に必要なイベントは、78,79,80となるため、以下のように3つのイベントに対するイベント・ハンドラを設定します。詳細については以下のマニュアルを参照してください。
https://www.ibm.com/docs/ja/daeja-viewone/5.0.x?topic=handling-events-ids-descriptions
```
        <PARAM name="eventInterest1" value="78" />
		<PARAM name="eventHandler1" value="taskStartEventHandler" />
		<PARAM name="eventInterest2" value="79" />
		<PARAM name="eventHandler2" value="taskStartedEventHandler" />
		<PARAM name="eventInterest3" value="80" />
		<PARAM name="eventHandler3" value="taskStatusEventHandler" />
```
また、今回はリダクション処理ですが、リダクションではなく、ドキュメント・ビルダーに関するハンドラを実装する場合には、イベント・ハンドラで追加の情報を必要とするため、eventHanlderJSONパラメータも有効にしておく必要があります。
```
        <PARAM name="eventHandlerJSON" value="true">
```
## イベント・ハンドラの実装
### taskStartEventHandler
まず、タスク開始時に呼び出されるtaskStartEventHandler内で、setEventHandlerCallbackResponseメソッドを呼び出し、callbackIDと'ok'という文字列をセットします。なお、ドキュメント・ビルダー・モードで編集したファイルを扱う場合には、'ok'ではなくて、イベント・ハンドラに渡されたjsonをそのままセットすればOKです。

```
function taskStartEventHandler(eventId, taskId, callbackId,json) {//引数にjsonを追加する。eventHanderJSON=Trueが必要。
			if (eventId == 78){	//タスク開始時に発生するイベント
				var viewone = document.getElementById('viewone')
				viewone.setEventHandlerCallbackResponse(callbackId,"ok");//DocumentBuilderの場合はここでjsonをセットする。中身は、json configuration
			}
		}
```
### taskstartedEventHandler
次にタスク実行中に呼び出されるイベント・ハンドラを実装します。今回は特に処理を実装しませんが、タスクの進捗状況などを確認してメッセージを表示する際などに利用することが可能です。
```
function taskStartedEventHandler(eventId, taskId, callbackId) {
			if (eventId == 79)
			{
				//必要な処理を実装
			}
		}
```
### taskStatusEventHandler
最後にタスクのステータスが変更された際に呼び出されるイベント・ハンドラを実装します。ファイルの生成が完了した際には、status==okで、再生されたファイルのURLが送信されてくるため、それを用いてサーブレット等を呼び出しファイルの登録処理を実装することが可能です。

```
function taskStatusEventHandler(eventId, taskId, status, jsonResponse) {
			console.log(eventId);
			if (eventId == 80)//taskStatus event is fired when the taskStarted event has been called
			{
				
				if (status == "ok") {
					var respJSON = JSON.parse(jsonResponse);
					console.log("json response "+respJSON);//ここに、生成されたドキュメントのURLが含まれる。
				}
				else {
					alert("Redaction Failed");
				}
			}
		}
```

### commit処理
焼き付け処理の実行は画面上部の「作成」ボタンをクリックする以外にもcommitメソッドを呼び出すことにより実行することも可能です。

# まとめ
ViewONEでは、リダクション(マスキング)処理を実行して機密情報をセキュアに扱うことが可能です。また、リダクションを永続化したファイルを生成し、イベント・ハンドラの実装によってコンテンツ・管理システムなどと連携することも可能です。そのためには、以下の機能の設定が必要となります。
 - リダクション・モードの有効化
 - 焼き付け可能オブジェクトの設定
 - イベント・ハンドラの実装


### ※Japan Business Automation User Groupのご紹介
IBMのコミュニティーである、[Japan Business Automation User Group](http://ibm.biz/JPBizAutomationUG)では、IBMのBusiness Automation製品関連の様々な技術情報、イベント情報の参照や、フォーラムを介した技術的な質問を行うことが可能です。是非ご参加ください。　http://ibm.biz/JPBizAutomationUG