5 インポート・プロセッサ・スクリプトの作成
この章では、インポート・プロセッサ・スクリプトの作成について説明します。
インポート・プロセッサ用のスクリプトを開発すると、様々な機能を実行できます。一般的なタスクには、次のようなものがあります。
-
特定のイメージ・ファイルのインポートをスキップする
-
キャプチャのバッチ・プロパティを変更する
-
バッチのインポートをスキップする
-
インポート時にページ・レベルのメタデータ値を追加する
-
インポート後にイメージを別のフォルダに移動する
Captureでは、インポート・プロセッサ・スクリプトを作成してインポート・プロセスをカスタマイズできます。詳細は、『Oracle WebCenter Enterprise Captureのマネージング』を参照してください。
この章では、次の内容を説明します。
インポート・プロセッサのイベント
インポート・プロセッサ・スクリプトは、特定のインポート・プロセッサ・イベントの動作をカスタマイズできるJavaScriptモジュールです。
この項では、次のインポート・プロセッサ・イベントについて説明します:
preProcess
preProcessイベントは、インポート・ソースの前処理の前に発生します。初期化コードをここで実行できます。ctxパラメータでcancelプロパティをTrueに設定すると、この処理を取り消すことができます。
構文 | パラメータ |
---|---|
public void preProcess(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
process
processイベントは、インポート・プロセスの開始を通知します。
構文 | パラメータ |
---|---|
public process(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
postProcess
postProcessイベントは、インポート・ソースの処理が完了した後に発生します。
構文 | パラメータ |
---|---|
public void postProcess(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
preCreateBatch
preCreateBatchイベントは、新しいバッチが作成される前に発生します。ctxパラメータでcancelプロパティをTrueに設定すると、バッチ作成を取り消すことができます。
構文 | パラメータ |
---|---|
public void preCreateBatch(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
postCreateBatch
postCreateBatchイベントは、バッチの作成直後で、ドキュメントが作成される前に発生します。
構文 | パラメータ |
---|---|
public void postCreateBatch(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
preCreateDocument
preCreateDocumentイベントは、新しいドキュメントが作成される前に発生します。ctxパラメータでcancelプロパティをTrueに設定すると、ドキュメント作成を取り消すことができます。
構文 | パラメータ |
---|---|
public void preCreateDocument(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
postCreateDocument
postCreateDocumentイベントは、新しいドキュメントが作成された後に発生します。
構文 | パラメータ |
---|---|
public void postCreateDocument(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
preImportFile
preImportFileイベントは、ファイルがインポートされる前に発生します。ctxパラメータでcancelプロパティをTrueに設定すると、ファイルのインポートを取り消すことができます。
構文 | パラメータ |
---|---|
public void preImportFile(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
postImportFile
postImportFileイベントは、ファイルがインポートされた後に発生します。
構文 | パラメータ |
---|---|
public void postImportFile(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
preRelease
preReleaseイベントは、バッチがリリースされる前に発生します。ctxパラメータでcancelプロパティをTrueに設定すると、バッチのリリースを取り消すことができます。
構文 | パラメータ |
---|---|
public void preRelease(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
postRelease
postReleaseイベントは、バッチがリリースされた後に発生します。
構文 | パラメータ |
---|---|
public void postRelease(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
preDatabaseSearch
preDatabaseSearchイベントは、データベース参照の前に発生します。ctxパラメータでcancelDBSearchプロパティをTrueに設定すると、データベース検索を取り消すことができます。
構文 | パラメータ |
---|---|
public void preDatabaseSearch(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
processDatabaseSearchResults
processDatabaseSearchResultsイベントは、データベース参照によって検索結果が返された後に発生します。
構文 | パラメータ |
---|---|
public void processDatabaseSearchResults(ImportProcessorContext ctx); |
ImportProcessorContext ctx |
電子メール・ソースのイベント
この項では、次の電子メール・ソース・イベントについて説明します:
ノート: 電子メールのインポート・ソースをMicrosoft Exchange Webサービスとして選択する場合は、スクリプト内で対応する(getExchange)メソッドを呼び出す必要があります。導入された
新しいメソッドの詳細は、ImportProcessorContextクラスおよびEmailSourceContextクラスを参照してください。
deleteMessage
deleteMessageイベントは、電子メール・メッセージ後処理ステップの中で、電子メール・メッセージが削除される直前に発生します。電子メール・メッセージが削除されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void deleteMessage(ImportProcessorContext ctx, EmailSourceContext emailCtx); |
ImportProcessorContext ctx EmailSourceContext emailCtx |
moveMessage
moveMessageイベントは、電子メール・メッセージ後処理ステップの中で、電子メール・メッセージが電子メール・フォルダに移動される直前に発生します。電子メール・メッセージが移動されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void moveMessage(ImportProcessorContext ctx, EmailSourceContext emailCtx); |
ImportProcessorContext ctx EmailSourceContext emailCtx |
newAttachment
newAttachmentイベントは、新しい電子メール添付が処理される直前に発生します。添付がインポートされないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newAttachment(ImportProcessorContext ctx, EmailSourceContext emailCtx); |
ImportProcessorContext ctx EmailSourceContext emailCtx |
newMessage
newMessageは、新しい電子メール・メッセージが処理される直前に発生します。電子メール・メッセージがインポートされないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newMessage(ImportProcessorContext ctx, EmailSourceContext emailCtx); |
ImportProcessorContext ctx EmailSourceContext emailCtx |
フォルダ・ソースのイベント
この項では、次のフォルダ・ソース・イベントについて説明します:
deleteDocumentFile
deleteDocumentFileイベントは、フォルダ後処理ステップの中で、フォルダからファイルが削除される直前に発生します。ドキュメント・ファイルが削除されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void deleteDocumentFile(ImportProcessorContext ctx, FolderSourceContext folderCtx); |
ImportProcessorContext ctx FolderSourceContext folderCtx |
newFolder
newFolderイベントは、新しいフォルダが処理される直前に発生します。このフォルダを処理対象から除外するには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newFolder(ImportProcessorContext ctx, FolderSourceContext folderCtx); |
ImportProcessorContext ctx FolderSourceContext folderCtx |
renameDocumentFile
renameDocumentFileイベントは、フォルダ後処理ステップの中で、フォルダ内のファイルの名前が変更される直前に発生します。ドキュメント・ファイルの名前が変更されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void renameDocumentFile(ImportProcessorContext ctx, FolderSourceContext folderCtx); |
ImportProcessorContext ctx FolderSourceContext folderCtx |
リスト・ファイル・ソースのイベント
この項では、次のリスト・ファイル・ソース・イベントについて説明します:
deleteListFile
deleteListFileイベントは、リスト・ファイル後処理ステップの中で、リスト・ファイルが削除される直前に発生します。リスト・ファイルが削除されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void deleteListFile(ImportProcessorContext ctx, ListFileSourceContext listFileCtx); |
ImportProcessorContext ctx ListFileSourceContext listFileCtx |
newFolder
newFolderイベントは、リスト・ファイルが格納されている新しいフォルダが処理される直前に発生します。フォルダを処理対象から除外するには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newFolder(ImportProcessorContext ctx, ListFileSourceContext listFileCtx); |
ImportProcessorContext ctx ListFileSourceContext listFileCtx |
newListFile
newListFileイベントは、新しいリスト・ファイルが処理される直前に発生します。リスト・ファイルが処理されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newListFile(ImportProcessorContext ctx, ListFileSourceContext listFileCtx); |
ImportProcessorContext ctx ListFileSourceContext listFileCtx |
newListFileLine
newListFileLineイベントは、リスト・ファイル内の新しい行が処理される直前に発生します。リスト・ファイル行が処理されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void newListFileLine(ImportProcessorContext ctx, ListFileSourceContext listFileCtx); |
ImportProcessorContext ctx ListFileSourceContext listFileCtx |
renameListFile
renameListFileイベントは、リスト・ファイル後処理ステップの中で、リスト・ファイルの名前が変更される直前に発生します。リスト・ファイルの名前が変更されないようにするには、ctxパラメータでcancelプロパティをTrueに設定します。
構文 | パラメータ |
---|---|
public void renameListFile(ImportProcessorContext ctx, ListFileSourceContext listFileCtx); |
ImportProcessorContext ctx ListFileSourceContext listFileCtx |
インポート・プロセッサのクラス
この項では、次のインポート・プロセッサ・クラスについて説明します:
インポート・プロセッサ・スクリプトの設計に使用できる次のイベント・クラスに加えて、認識プロセッサおよびインポート・プロセッサに関連する共通クラスがいくつかあります。これらの共通クラスの詳細は、「共通キャプチャ・クラス」を参照してください。
EmailSourceContext
EmailSourceContextクラスには、電子メール・ソースの処理で使用されるすべてのクラスが含まれます。
プロパティ | タイプ | 説明 |
---|---|---|
account | String | 現在処理されている電子メール・アカウントの名前。 |
attachmentFilename | String | 現在処理されている電子メール・メッセージ添付のファイル名。 |
標準IMAP接続では、次のプロパティを使用します:
プロパティ | タイプ | 説明 |
---|---|---|
folder | Folder | 現在処理されている電子メール・フォルダ。 |
message | Message | 現在処理されている電子メール・メッセージ。 |
EWS接続では、次のプロパティを使用します:
プロパティ | タイプ | 説明 |
---|---|---|
getExchangeMessage | microsoft.exchange.webservices.data.core.service.item.EmailMessage | 現在処理されている電子メール・メッセージ。 |
getExchangeFolder | microsoft.exchange.webservices.data.core.service.folder.Folder | 現在処理されている電子メール・フォルダ。 |
FolderおよびMessageクラス定義の詳細は、Javamail APIのドキュメントを参照してください。
MSGraphEmailSourceContext
MSGraphEmailSourceContextクラスには、Microsoft電子メール・ソースの処理で使用されるすべてのクラスが含まれます。
MS Graph Api接続では、次のプロパティを使用します:
プロパティ | タイプ | 説明 |
---|---|---|
account | String | 現在処理されている電子メール・アカウントの名前。 |
attachmentFilename | String | 現在処理されている電子メール・メッセージ添付のファイル名。 |
folder | oracle.odc.importprocessor.email.ms.graph.api.Node |
現在処理されている電子メール・フォルダ。 |
message | com.microsoft.graph.models.Message | 現在処理されている電子メール・メッセージ。 |
bodyText | String | 電子メール・メッセージ本文。 |
attachmentList | List |
電子メール・メッセージへの添付のリスト。 |
FolderSourceContext
FolderSourceContextクラスには、フォルダ・ソースの処理で使用されるすべてのクラスが含まれます。
プロパティ | タイプ | 説明 |
---|---|---|
folderName | String | 現在処理されているディレクトリの名前。 |
documentFilename | String | 現在処理されているファイルの名前。 |
renamedDocumentFilename | String | 後処理ステップでファイルへの接頭辞追加または拡張子の変更が指定されている場合は、このプロパティが変更後のファイル名を示します。 |
ImportJob
インポート・ジョブは、バッチをインポート・ソース(ファイル・システム・フォルダ、区切り形式リスト・ファイル、電子メール・サーバーの受信トレイ/フォルダなど)からインポートするよう、キャプチャ・ワークスペース内で構成されます。
プロパティ | タイプ | 説明 |
---|---|---|
jobID | String | ジョブをシステム内で一意に識別する値。 |
workspaceID | String | ジョブが属するワークスペースの識別子。 |
jobName | String | 人間が判読可能なジョブ名。 |
dbSearchID | String | ジョブの処理時に使用するデータベース検索の識別子。 |
dbSearchFieldID | String | ジョブの処理時に使用するデータベース検索フィールドの識別子。 |
imageDownsample | Integer | イメージのサンプリング方法を決定します: 0 – なし(イメージ形式を保持)。 1 – 色を8ビット・グレースケールにダウンサンプル。 2 – 色またはグレースケールを白黒にダウンサンプル。 |
jpegQuality | Integer | JPEG画質(0から99)。 |
batchPrefix | String | バッチ名の作成時に使用するバッチ接頭辞。 |
defaultBatchStatusID | String | このジョブで作成されたバッチに関連付けるバッチ・ステータスの識別子。 |
defaultPriority | Integer | バッチに割り当てられるデフォルトの優先度(0から10)。 |
defaultDocumentTypeID | String | このジョブで作成されたドキュメントのデフォルトのドキュメント・プロファイル。 |
searchResultOption | Integer | データベース参照で複数の結果が返されたときの処理方法を決定します。 0 – 最初のレコードを使用する。 1 – 結果を無視する(フィールドに値を移入しない)。 |
scriptID | String | このジョブに使用するスクリプトの一意識別子。 |
importFrequency | Integer | ジョブで処理する作業をポーリングする頻度を指定する値(秒単位)。次の値を指定できます: 0 – 非アクティブ 30 – 30秒ごと 60 – 1分ごと 300 – 5分ごと 900 – 15分ごと 1800 – 30分ごと 3600 – 1時間ごと -1 – 毎日(時刻を指定) |
hour | Integer | importFrequencyが毎日に設定されている場合、ここで時刻(時)を指定します。 |
minute | Integer | importFrequencyが毎日に設定されている場合、ここで時刻(分)を指定します。 |
lastCheck | Date | ジョブが処理のために最後にチェックされた日付または時刻。これは、ジョブで処理する作業がポーリングされた後にインポート・ジョブ・スケジューラによって更新されます。 |
fieldMappings | Map<String, FieldMappingInfo> | ソース・メタデータ・フィールドをインポートするためにキャプチャのフィールドをマッピングする値のセット。 |
importSourceClassName | String | このジョブのインポート・ソースを実装するJavaクラスの名前。 |
batchProcessorClassName | String | バッチがリリースされるときの処理に使用されるクラスの名前。この値がnullの場合は、バッチ・ロックが破棄されてバッチがREADY状態になります。 |
batchProcessorJobID | String | バッチ・プロセッサ・ジョブの一意の識別子。この値がnullの場合は、プロセッサがジョブをサポートしていないか、バッチがREADY状態に移行しようとしています。 |
imageFailureAction | Integer | 無効なイメージが検出されたときに実行されるアクションを指定します: 0 – バッチを強制終了する 1 – アイテムをスキップする |
locale | Locale | リスト・ファイル・ソースのロケールを指定します。 |
defaultDateFormat | String | リスト・ファイル・ソース内の日付のデフォルトの形式を指定します。 |
description | String | このジョブの説明。 |
encoding | String | リスト・ファイル・ソースのファイル・エンコーディングを指定します。 |
isJobOnline | Boolean | このジョブを処理するかどうかを示します。 |
preserveImageFiles | Boolean | Trueに設定すると、インポート中にイメージ・ファイルが変更されないようにします。 |
ImportProcessorContext
ImportProcessorContextクラスには、処理されるジョブに関連するプロパティが格納されます。このクラスのインスタンスが処理開始前に作成され、処理の様々なステージでインポート・ソースに渡されます。
プロパティ | タイプ | 説明 |
---|---|---|
cancel | Boolean | このブール値がTrueに設定されている場合、実行される操作が取り消されます。 |
cancelDBSearch | Boolean | このブール値がTrueに設定されている場合、データベース参照が取り消されます。 |
dBSearchResults | DBSearchResults | データベース参照の結果が含まれます。 |
sourceName | String | 現在のインポート・ジョブで使用するように構成されているインポート・ソースの名前。 |
logger | Logger | 追加エントリのログ記録に使用できるjava.util.logging.Loggerのインスタンス。 |
importCancelAction | Integer | このプロパティは、スクリプトでpreImportFileイベントでcancelプロパティがTrueに設定された場合に実行されるアクションを指定します。値は次のいずれかの定数に設定できます: CANCEL_ACTION_SKIP = 0 — バッチへのファイルのインポートをスキップする CANCEL_ACTION_ABORT = 1 — バッチ全体を中断する |
importJob | ImportJob | 処理中の現在のインポート・ジョブ。 |
batchLock | BatchLockEntity | 新しいバッチの作成後、バッチのバッチ・ロック・エンティティが格納されます。 |
importSourceFile | String | 現在処理されているファイルの名前。 |
documentEntity | DocumentEntity | 現在処理されているファイルに関連付けられているドキュメント・エンティティ。 |
documentPageEntity | DocumentPageEntity | 現在処理されているファイルに関連付けられているドキュメント・ページ・エンティティ。 |
lastMultiPageTiffNumber | Integer | 処理中の複数ページTIFFファイルの現在のページ番号が格納されます。 |
workspaceEntity | CaptureWorkspaceEntity | 現在のバッチに関連付けられているワークスペース・エンティティ。 |
batchManager | BatchManagerSession | バッチ操作に使用されるバッチ・マネージャ・オブジェクト。 |
isExchangeMail | Boolean | 現在の電子メール・インポート・ジョブでExchange WebサービスAPIが使用されているかどうかを確認します。 |
ListFileSourceContext
ListFileSourceContextクラスには、リスト・ファイル・ソースの処理で使用されるすべてのクラスが含まれます。
プロパティ | タイプ | 説明 |
---|---|---|
folderName | String | 現在処理されているフォルダの名前。 |
listFilename | String | 現在処理されているリスト・ファイルの名前。 |
listFileLine | String | リスト・ファイル内の現在処理されている行の内容。 |
documentFilename | String | リスト・ファイルの現在の行から現在処理されているファイルの名前。 |
renamedListFilename | String | 後処理ステップでリスト・ファイルへの接頭辞追加または拡張子の変更が指定されている場合は、このプロパティが変更後のファイル名を示します。 |
インポート・プロセッサ・スクリプトのサンプル
この項では、次のインポート・プロセッサ・スクリプト・サンプルについて説明します:
インポート・プロセッサ・スクリプトのサンプル 1
次に示すサンプル・スクリプトでは、各ドキュメントのタイトルをインポートされるファイルの名前に設定します。ドキュメントが後でコミットされたときに、そのドキュメント・タイトルを出力フィールドにマッピングできるようになります。
importClass(java.io.File);
function preCreateDocument(event) { // ImportProcessorContext
var document; // DocumentEntity
var sourceFile; // File
sourceFile = new File(event.getImportSourceFile());
document = event.getDocumentEntity();
// Set the document title to be the name of the source file
document.setDocumentTitle(sourceFile.getName());
}
インポート・プロセッサ・スクリプトのサンプル 2
次のスクリプト・サンプルは、preCreateDocumentイベントを使用して、インポートされるファイルのベース・ファイル名を取得し、その名前をメタデータ・フィールドに割り当てます。さらに、このスクリプトは、メタデータ・フィールドの定義を名前で検索する方法、IndexValueを検索して作成する方法、およびIndexValueの値を設定する方法も示します。
次のサンプル・スクリプトは、フォルダ・インポート・ジョブ用に記述されています:
function preCreateDocument(ctx) {
// Get the base name of the file being imported.
var sourceFile = new java.io.File(ctx.getImportSourceFile());
var baseFileName = sourceFile.getName();
// Strip off any file extension.
var dotPos = baseFileName.lastIndexOf('.');
if (dotPos > -1)
baseFileName = baseFileName.substring(0, dotPos);
// Update the "File Name" metadata field with the base name of the file.
updateIndex(ctx, "File Name", baseFileName);
}
// Update a metadata field
function updateIndex(ctx, indexName, commitValue) {
var doc = ctx.getDocumentEntity();
var workspace = ctx.getWorkspaceEntity();
// Locate the index definition object by the index name.
var indexDef = findIndexDefinitionByName(workspace, indexName);
if (indexDef != null) {
// Get the ID for the index field.
var indexID = indexDef.getIndexFieldID();
// Get the index value object for the given document and index ID.
var indexValue = getIndexValue(doc, indexID);
// Set the commit value for the index field.
indexValue.setFieldValue(commitValue);
}
}
// Search the workspace to find the index definition by name
function findIndexDefinitionByName(workspace, indexName) {
var indexDefs = workspace.getIndexDefinitions();
var size = indexDefs.size();
var foundIndexDef = null;
for (var i = 0; i < size; i++) {
var indexDef = indexDefs.get(i);
if (indexName.equals(indexDef.getFieldName())) {
// An index by this name was found.
foundIndexDef = indexDef;
break;
}
}
return foundIndexDef;
}
// Search the index values of the document for an IndexValue object with the given ID.
// If one is found, return it; Otherwise, create one and return it.
function getIndexValue(doc, indexDefID) {
// Look through all existing document indexes to see if our index is present.
var indexes = doc.getIndexes();
var size = indexes.size();
var foundIndexValue = null;
for (var i = 0; i < size; i++) {
var indexValue = indexes.get(i);
if (indexDefID.equals(indexValue.getFieldID())) {
// An index by this ID was found.
foundIndexValue = indexValue;
break;
}
}
if (foundIndexValue == null) {
// The index value wasn't found, so create one with blank values.
foundIndexValue = new Packages.oracle.odc.data.IndexValue(indexDefID, "", "");
// Add it to the document's index collection.
indexes.add(foundIndexValue);
}
// Return the IndexValue object.
return foundIndexValue;
}