ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Captureのためのスクリプトの開発
11g リリース1 (11.1.1)
E51442-01
  ドキュメント・ライブラリへ移動
ライブラリ
目次へ移動
目次

前
 
次
 

2 キャプチャのスクリプト処理のサンプル

この章には、クライアント・プロファイル、インポート・ジョブまたは認識ジョブのために作成されるスクリプト例を示すJavaScriptのサンプルが含まれています。

この章では、次の内容を説明します。

2.1 クライアント・スクリプトのサンプル

この項では、次のサンプル・スクリプトを示します。

第2.1.1項「クライアント・スクリプトのサンプル1」

第2.1.2項「クライアント・スクリプトのサンプル2」

2.1.1 クライアント・スクリプトのサンプル1

このサンプル・スクリプトは、クライアントの動作を次のようにカスタマイズします。

  • エントリに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() + ")");
}

2.1.2 クライアント・スクリプトのサンプル2

このサンプル・スクリプトは、クライアントの動作を次のようにカスタマイズします。

  • 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);
    }
}

2.2 インポート・プロセッサ・スクリプトのサンプル

次に示すサンプル・スクリプトでは、各ドキュメントのタイトルをインポートされるファイルの名前に設定します。ドキュメントが後でコミットされたときに、そのドキュメント・タイトルを出力フィールドにマッピングできるようになります。

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.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]);
                }        
        }
}