6 ドキュメント変換プロセッサ・スクリプトの作成
ドキュメント変換プロセッサでは、他のバッチ・プロセッサと同様に、JavaScript (Nashorn)を使用してドキュメント変換ジョブをカスタマイズできます。ここでは、ドキュメント変換プロセッサ・スクリプトの作成方法を学習します。
この章の内容は、次のとおりです。
DocumentConverterContextクラス
DocumentConverterContextクラスには、処理されるジョブに関連するプロパティが含まれます。このクラスのインスタンスは処理の開始前に作成され、処理の様々なステージでドキュメント変換イベントに渡されます。
次の表に、DocumentConverterContextのフィールドを示します。ドキュメント変換イベントが起動されると、対応するDocumentConverterContextフィールドがイベントに公開されます。
プロパティ | タイプ | 説明 |
---|---|---|
cancel | Boolean | このブール値がtrueに設定されている場合、実行される操作が取り消されます。 |
logger | Logger | 追加エントリのログ記録に使用できるjava.util.logging.Logger のインスタンス。 |
docConverterJob | DocConverterJob | 処理中の現在のドキュメント変換ジョブ。 |
ble | BatchLockEntity | 新しいバッチが作成された後、このプロパティにはバッチのバッチ・ロック・エンティティが含まれます。 |
activeDocument | DocumentEntity | 処理中の現在アクティブなドキュメント。 |
activeAttachment | DocumentEntity | 処理中の現在アクティブな添付。 |
activePage | DocumentPageEntity | 処理中の現在アクティブなページ。 |
externalProgramPath | String | ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。 |
externalProgramCommandLine | String | ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。 |
externalProgramSuccessCode | int | 正常に変換されたことを示す、外部プログラムから返される値。 |
externalProgramMonitoringMethod | int | 外部プログラムのモニターに使用されるモニター方法。有効な値は、次のとおりです: 0 - プロセス継続時間 1 - 出力ファイル |
externalProgramTimeout | int | externalProgramMonitoriingMethod が1 (プロセス継続時間)の場合、この値にはプログラムに許可される実行時間(分)が含まれます。この時間を超えると、プログラムはフォルトやハングが原因でタイムアウトしたとみなされます。この値に達すると、外部プログラムは終了し、例外がスローされます。 |
externalProgramDestFile | File | 外部プログラムによって生成される宛先ファイルを表すFileオブジェクト。Fileオブジェクトを作成してスクリプト内に渡します。 |
ドキュメント変換プロセッサのイベント
ドキュメント変換プロセッサ・スクリプトは、特定のドキュメント変換プロセッサ・イベントの動作をカスタマイズできるJavaScriptモジュールです。
この項では、次のドキュメント変換プロセッサ・イベントについて説明します:
Initialize
Initializeイベントは、ドキュメント変換プロセッサ・ジョブが初期化フェーズにあることを通知します。initialize
メソッドは、ジョブの開始時に呼び出されます。ジョブ全体のDocumentConversionContext
インスタンスはこの時点で初期化されて、メソッドに渡されます。実装者は、このメソッドを使用して、データベース接続の作成や一時パスの作成などの初期化タスクを実行できます。
構文 | パラメータ |
---|---|
public initialize(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
preProcessBatch
preProcessBatchイベントは、新しいバッチが処理される前に発生します。
構文 | パラメータ |
---|---|
public preProcessBatch(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、バッチは処理されません。
-
ble: この時点で、このプロパティは初期化されます。
postProcessBatch
postProcessBatchイベントは、ドキュメント変換プロセスの完了後に発生します。実装者は、データベース接続を閉じることも、一時ファイルおよびディレクトリをクリーン・アップすることもできます。
構文 | パラメータ |
---|---|
public postProcessBatch(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
preProcessDocument
preProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブに対してアクティブになっているときに発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。
構文 | パラメータ |
---|---|
public preProcessDocument(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ドキュメントは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeDocument: 処理される直前のドキュメントへの参照。
postProcessDocument
postProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブを完了した後に発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。
構文 | パラメータ |
---|---|
public postProcessDocument(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
preProcessAttachment
preProcessAttachmentイベントは、バッチの一部である添付が変換ジョブに対してアクティブになっているときに発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。
構文 | パラメータ |
---|---|
public preProcessAttachment(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、添付は処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeAttachment: 処理される直前の添付への参照。
postProcessAttachment
postProcessAttachmentイベントは、バッチの一部である添付が変換ジョブを完了した後に発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。
構文 | パラメータ |
---|---|
public postProcessAttachment(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
preProcessPage
preProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブに送信される直前に発生します。複数のページがある場合、このイベントはページごとに通知されます。
構文 | パラメータ |
---|---|
public preProcessPage(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ページは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeAttachment: 処理される直前のページへの参照。
postProcessPage
postProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブを完了した後に発生します。複数のページがある場合、このイベントはページごとに通知されます。
構文 | パラメータ |
---|---|
public postProcessPage(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
preInvokeExternalProcess
preInvokeExternalProcessメソッドは、外部変換プログラムが起動される直前に呼び出されます。
構文 | パラメータ |
---|---|
public preInvokeExternalProcess(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ページは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
externalProgramPath: 実行する外部プログラムのパス。
-
externalProgramCommandLine: 外部プログラムに渡すコマンドライン。
-
externalProgramSuccessCode: 外部プログラムの終了時に正常に実行されたことを表す整数値。
-
externalProgramMonitoringMethod: 外部プログラムのハングをモニターするために使用されるメソッド。
-
externalProgramTimeout: プログラムの終了までに外部プログラムに許可される実行時間(分)。
-
externalProgramDestFile: 外部プログラムによって生成される出力ファイル。このFileオブジェクトを作成してスクリプト内に渡します。
postInvokeExternalProcess
postInvokeExternalProcessメソッドは、外部変換プログラムの完了直後に呼び出されます。
構文 | パラメータ |
---|---|
public postInvokeExternalProcess(DocumentConverterContext ctx); |
DocumentConverterContext ctx |
ドキュメント変換プロセッサ・スクリプトのサンプル
この項では、次のドキュメント変換プロセッサ・スクリプト・サンプルを示します:
ドキュメント変換プロセッサ・スクリプトのサンプル1
次のスクリプトでは、バッチが変換されたときにすべてのイベントを出力します:
//doc conversion job script to print at the specific events
function initialize(event) {
java.lang.System.out.println("initialize");
}
function preProcessBatch(event){
java.lang.System.out.println("In preProcessBatch");
java.lang.System.out.println("Batch name preProcessBatch: "+event.getBle().getBatch().getBatchName());
}
function postProcessBatch(event){
java.lang.System.out.println("In postProcessBatch");
java.lang.System.out.println("Batch name postProcessBatch: "+event.getBle().getBatch().getBatchName());
}
function preProcessDocument(event){
java.lang.System.out.println("In preProcessDocument");
java.lang.System.out.println("Title name preProcessDocument: "+event.getActiveDocument().getDocumentTitle());
}
function postProcessDocument(event){
java.lang.System.out.println("In postProcessDocument");
}
function preProcessAttachment(event){
java.lang.System.out.println("In preProcessAttachment");
java.lang.System.out.println("Attachment name: "+event.getActiveAttachment().getDocumentTitle());
}
function postProcessAttachment(event){
java.lang.System.out.println("In postProcessAttachment");
}
function preProcessPage(event){
java.lang.System.out.println("In preProcessPage");
java.lang.System.out.println("Page name: "+event.getActivePage().getDocumentEntity().getDocumentTitle());
}
function postProcessPage(event){
java.lang.System.out.println("In postProcessPage");
}
function preInvokeExternalProcess(event){
java.lang.System.out.println("In preInvokeExternalProcess");
}
function postInvokeExternalProcess(event){
java.lang.System.out.println("In postInvokeExternalProcess");
}
ドキュメント変換プロセッサ・スクリプトのサンプル2
次のスクリプトは、preProcessBatchイベントでの操作を取り消します:
function initialize(event) {
java.lang.System.out.println("initialize");
}
function preProcessBatch(event){
var isCancel = true;
event.setCancel(isCancel);
java.lang.System.out.println("preProcessBatch and about to cancel operation.");
java.lang.System.out.println("Batch name preProcessBatch: "+event.getBle().getBatch().getBatchName());
}
function postProcessBatch(event){
java.lang.System.out.println("postProcessBatch - this line will not be printed.");
java.lang.System.out.println("Batch name postProcessBatch: "+event.getBle().getBatch().getBatchName());
}
ドキュメント変換プロセッサ・スクリプトのサンプル3
次のスクリプトは、preProcessDocumentイベントのバッチ名を変更します:
function preProcessDocument(event){
java.lang.System.out.println("preProcessDocument batch-"+event.getBle().getBatch().getBatchName());
event.getBle().getBatch().setBatchName("BatchInPreDocumentConv");
}
function postProcessDocument(event){
java.lang.System.out.println("postProcessDocument batch-"+event.getBle().getBatch().getBatchName());
}