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