7 コミット・プロセッサ・スクリプトの作成

この章では、コミット・プロセッサ・スクリプトの作成について説明します。コミット・プロセッサ・スクリプトを作成すると、ユーザー定義のJavaScriptを使用してコミット・プロセッサ・ジョブをカスタマイズできます。

この章の内容は、次のとおりです。

CommitEventObjectクラス

CommitEventObjectクラスには、処理対象のバッチまたはドキュメントに関連するプロパティが含まれます。このクラスのインスタンスは処理の開始前に作成され、処理の様々なステージでコミット・ドライバに渡されます。

次の表に、CommitEventObjectのフィールドを示します:

プロパティ タイプ 説明
cancel java.lang.Boolean Trueに設定すると、処理操作は取り消されます。
logger Logger データをログ・ファイルに記録するために使用できるjava.util.logging.Loggerのインスタンス。
workingDirectory java.io.File コミット・ドライバがドキュメントを処理する現在の作業ディレクトリ。
batch BatchEntity バッチ情報が含まれます。
document DocumentEntity 処理中の現在アクティブなドキュメント。
attachmentFileNames DocumentEntity 処理中の現在アクティブな添付。
exportDriverInformation ExportDriverInformation 添付のエクスポート・ドライバ情報。
dateCommitted java.util.Date ドキュメントがコミットされた日付。
commitProfile CommitProfileEntity コミット・プロセッサで使用される現在のコミット・プロファイル。
documentFileName java.lang.String ドキュメントのファイル名。

コミット・プロセッサのイベント

コミット・プロセッサ・スクリプトは、特定のコミット・プロセッサ・イベントの動作をカスタマイズできるJavaScriptモジュールです。

この項では、次のコミット・プロセッサ・イベントについて説明します:

preCommit

preCommitイベントは、ドキュメントがリポジトリにコミットされる前に発生します。ユーザー定義メソッドではこの機能を使用して、コミット・ドライバにより処理されているコミット・プロファイルに対してアクションを実行できます。cancel属性をtrueに設定すると、すべてのドキュメントでこのコミット・プロファイルをスキップして、次のアクティブなコミット・プロファイルに移動できます。

構文 パラメータ
public preCommit (CommitEventObject commitEventObject) CommitEventObject

関連するCommitEventObjectプロパティ

preReleaseDocument

preReleaseDocumentイベントは、ドキュメントがリリースされる前に発生します。これにより、ユーザー定義のスクリプトでリリース対象のドキュメントに対してアクションを実行できます。cancelプロパティでは、ドキュメントの追加処理を取り消して次のドキュメントに移動することもできます。

構文 パラメータ
public preReleaseDocument (CommitEventObject commitEventObject) CommitEventObject

関連するCommitEventObjectプロパティ

postReleaseDocument

postReleaseDocumentイベントは、各ドキュメントがリポジトリにリリースまたはコミットされた後に発生します。これにより、ユーザー定義のスクリプトでリリース後にドキュメントに対してアクションを実行できます。この時点でcancelプロパティをtrueに設定しても、影響はありません。ドキュメントのコミット中に問題が発生した場合、このメソッドはトリガーされない可能性があります。コミット・プロファイルの「エラー処理ポリシー」で、この動作をオーバーライドできます。

たとえば、コミット・プロファイルの「エラー処理ポリシー」で「次のコミット・プロファイルまで取消」が定義されていると、エラーが発生した場合には次のアクティブなコミット・プロファイルにスキップされ、このメソッドはコールされません。

構文 パラメータ
public postReleaseDocument (CommitEventObject commitEventObject) CommitEventObject

関連するCommitEventObjectプロパティ

postCommit

postCommitイベントは、指定されたコミット・プロファイルに対してバッチが処理された後に発生します。これにより、ユーザー定義のスクリプトで後からクリーン・アップまたはロギング・アクションを実行できます。このメソッドを実行しても、ドキュメントがリポジトリに正常にコミットされているとはかぎりません。この時点でcancelプロパティをtrueに設定しても、影響はありません。

構文 パラメータ
public postCommit (CommitEventObject commitEventObject) CommitEventObject

関連するCommitEventObjectプロパティ

コミット・プロセッサ・スクリプトのサンプル

この項では、次のコミット・プロセッサ・スクリプト・サンプルを示します:

コミット・プロセッサ・スクリプトのサンプル1

次のスクリプトは、バッチがコミットされたときにすべてのイベントを出力します:

//commit processor javascript to print at the specific events
function preCommit(event){
     java.lang.System.out.println("In preCommit");
     java.lang.System.out.println("Batch name preCommit: "+event.getBatch().getBatchName());	
}
function preReleaseDocument(event){
     java.lang.System.out.println("In preReleaseDocument");
     java.lang.System.out.println("Batch name preReleaseDocument: "+event.getBatch().getBatchName());
}
function postReleaseDocument(event){
     java.lang.System.out.println("In postReleaseDocument");
     java.lang.System.out.println("Batch name postReleaseDocument: "+event.getBatch().getBatchName());
}
function postCommit(event){
     java.lang.System.out.println("In postCommit");
     java.lang.System.out.println("Batch name postCommit: "+event.getBatch().getBatchName());
}

コミット・プロセッサ・スクリプトのサンプル2

次のスクリプトは、preCommitイベントでの操作を取り消します:

function preProcessBatch(event){
     event.setCancel(true);
     java.lang.System.out.println("preCommit about to cancel operation commit profile operation.");
     java.lang.System.out.println("preCommit: Batch name "+event.getBatch().getBatchName());
}
function preReleaseDocument(event){
     java.lang.System.out.println("postProcessBatch - this method will not be called.");
     java.lang.System.out.println("postProcessBatch: Batch name "+event.getBatch().getBatchName());
}

コミット・プロセッサ・スクリプトのサンプル3

次のスクリプトは、preReleaseDocumentイベントでのドキュメント・コミットを取り消します:

function preReleaseDocument(event){
     event.setCancel(true);
     java.lang.System.out.println("preReleaseDocument batch-"+event.getBatch().getBatchName());
}