Oracle® Fusion Middleware Oracle WebCenter Captureのためのスクリプトの開発 11g リリース1 (11.1.1) E51442-01 |
|
![]() 前 |
![]() 次 |
この章には、クライアント・プロファイル、インポート・ジョブまたは認識ジョブのために作成されるスクリプト例を示すJavaScriptのサンプルが含まれています。
この章では、次の内容を説明します。
この項では、次のサンプル・スクリプトを示します。
このサンプル・スクリプトは、クライアントの動作を次のようにカスタマイズします。
エントリにtestという語が含まれている場合、クライアント・ユーザーがメタデータ・フィールドを離れられないようにします。
どのメタデータ・フィールドにもユーザーがアスタリスクを入力できないようにします。
イベント情報をJavaコンソールに出力します(ユーザーがイメージ上で選択した部分を右マウス・ドラッグした後の座標など)。
このスクリプトでは、検証やデバッグ用に、スクリプト・イベントごとにJavaコンソールに1行を出力する(printIn)処理も行います。
importClass(java.awt.event.KeyEvent); function ScriptStart() { println("ScriptStart"); } function BatchScanBegin(event) { // BatchScanEvent println("BatchScanBegin"); } function BatchScanComplete(event) { // BatchScanEvent println("BatchScanComplete"); println(event.getBatch().getBatchName() + " finished Scanning."); } function BatchSelected(event) { // BatchSelectedEvent println("BatchSelected: " + event.getBatch().getBatchName()); } function PreBatchDelete(event) { // BatchDeleteEvent println("BatchDelete"); } function CaptureImage(event) { // ImageCaptureEvent println("CaptureImage"); } function DocumentCreated(event) { // DocumentCreatedEvent println("DocumentCreated"); } function DocumentSelected(event) { // DocumentSelectedEvent println("DocumentSelected: " + event.getDocument().getTitle()); } function FieldGotFocus(event) { // FieldEvent println("FieldGotFocus"); } function FieldLostFocus(event) { // FieldEvent var dataField; println("FieldLostFocus"); dataField = event.getField(); if (dataField.getUncommittedText().equalsIgnoreCase("test")) { event.setCancel(true); println("invalid value. script will not allow leaving focus."); } } function FieldProcessKey(event) { // FieldEvent var keyEvent; // println("FieldProcessKey"); keyEvent = event.getKeyEvent(); if (keyEvent.getID() == KeyEvent.KEY_TYPED) { //println(keyEvent.getKeyChar()); if (String.fromCharCode(keyEvent.getKeyChar()) == '*') { println("Asterisk not allowed in any field."); keyEvent.consume(); } } } function PostCaptureImage(event) { // ImageCaptureEvent println("PostCaptureImage"); } function PreCaptureImage(event) { // ImageCaptureEvent println("PreCaptureImage"); } function PreUploadItem(event) { // UploadItemEvent println("PreUploadItem: " + event.getCaptureItem().getFilename()); } function PostUploadItem(event) { // UploadItemEvent println("PostUploadItem: " + event.getCaptureItem().getFilename()); } function DBSearchComplete(searchEvent) { // DBSearchEvent println("DBSearchComplete."); } function DBSearchResults(searchEvent) { // DBSearchEvent var results; var resultRow; var searchParameters; println("DBSearchResult"); results = searchEvent.getRowResults(); println("Found " + results.size() + " results."); } function DBSearchStart(searchEvent) { // DBSearchEvent println("DBSearchStart"); println("Metadata value was " + searchEvent.getMetadataValue()); //searchEvent.setMetadataValue("c"); } function DocumentRemoved(event) { // DocumentRemovedEvent println("DocumentRemoved"); } function ImportFilesSelected(files, cancel) { // ImportFilesSelectedEvent println("ImportFilesSelected"); } function PostDownloadItem(event) { // DownloadItemEvent println("PostDownloadItem: " + event.getCaptureItem().getFilename()); } function PreDownloadItem(event) { // DownloadItemEvent println("PreDownloadItem: " + event.getCaptureItem().getFilename()); } function RegionSelected(event) { // RegionSelectedEvent var rect; println("RegionSelected"); rect = event.getSelectionRectangle(); println("Rectangle (X,Y): (" + rect.getX() + "," + rect.getY() + "); (W,H): (" + rect.getWidth() + "," + rect.getHeight() + ")"); }
このサンプル・スクリプトは、クライアントの動作を次のようにカスタマイズします。
BatchScanBegin関数を使用して、インポートできるファイルを拡張子.TIFのもののみに制限します。
DBSearchResults関数を使用して、データベース参照の結果に変更を加え、最初の結果のみが使用され、結果リストは表示されないようにします。
importClass(java.util.ArrayList); function BatchScanBegin(event) { // BatchScanEvent // Check if there are files being imported. var sourceFilesList = event.getSourceFiles(); if (sourceFilesList != null) { // Create a list to hold the filtered results. var filteredList = new ArrayList(); // Loop through each of the files. var iterator = sourceFilesList.iterator(); while (iterator.hasNext()) { // If the file name ends with ".TIF", add it to the list. var file = iterator.next(); var filename = file.getName().toUpperCase(); if (filename.endsWith(".TIF")) { filteredList.add(file); } } // Replace the original list with the filtered list. event.setSourceFiles(filteredList); } } function DBSearchResults(searchEvent) { // DBSearchEvent var results; var resultRow; var searchParameters; // Return only the first search result. results = searchEvent.getRowResults(); if (results.size() > 0) { resultRow = results.get(0); results.clear(); results.add(resultRow); // Do not display the list of results to the user. searchEvent.setDisplayHitlist(false); } }
次に示すサンプル・スクリプトでは、各ドキュメントのタイトルをインポートされるファイルの名前に設定します。ドキュメントが後でコミットされたときに、そのドキュメント・タイトルを出力フィールドにマッピングできるようになります。
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に設定します。
ジョブがpdf417バー・コードのみを検出するように設定します。
processorDate、TitleおよびAmountという名前の3つのバー・コードを定義します(検証ルールなし)。
バー・コードを3つのメタデータ・フィールドにマッピングします。
function batchItemAllValidBarcodes (rpc) { // Obtain current batch item var batchItem = rpc.getBatchItem(); // obtain bar code count. var count = batchItem.getBarcodeCount(); // All barcodes on a batch item. var allBarcodes; // bar code of interest. var barcodeValue; // after parsed barcode value. var parsed; // Obtain bar code value if there is a bar code found. if (count > 0) { allBarcodes = batchItem.getBarcodes(); barcodeValue = allBarcodes[0]; // Parse the bar code value by | character. parsed = barcodeValue.split('\\|'); var len = parsed.length; // It should get splitted into 10 strings. if (len == 10) { // This is the barcode we want, populate valid bar codes. populateValues(rpc, parsed); } } } function populateValues(rpc, parsed) { var valid = rpc.getValidBarcodes(); var i; for (i=0; i<valid.size(); i++) { var bar = valid.get(i); if (bar.getName() == "processDate") { bar.setValue(parsed[5]); } else if (bar.getName() == "Title") { bar.setValue(parsed[6]); } else if (bar.getName() == "Amount") { bar.setValue(parsed[4]); } } }