//

Kofax Capture Validierungsskripte – Von SBL zu VB.NET für Dummies

8.6.2016 | 4 Minuten Lesezeit

Kofax Capture bietet standardmäßig die Möglichkeit, Indexwerte zu einem Dokument in einer Validierungsmaske einzugeben bzw. automatisch erkannte Werte dort zu bestätigen oder zu ändern. Dazu werden alle zu einer Dokumentart definierten Felder angezeigt und man muss jedes Feld einzeln bestätigen/ändern oder einen Wert eingeben.

Dies ist bei automatisch erkannten Werten (wie zum Beispiel bei per OCR ausgelesenen Daten oder bei erkannten Barcodes – siehe dazu auch: „Kofax Capture – Dokumententrennung mit Barcodes“ ) lästig und unnötig, da die Gültigkeit dieser Werte oftmals durch einfache Logiken oder Abgleich gegen vorhandene Datenbestände sichergestellt werden kann.

Zur Implementierung solcher Logiken hatte Kofax Capture bzw. Ascent Capture von Anfang an eine interne Programmiersprache in die Validerungsanwendung eingebaut: Softbridge Basic Language oder kurz: SBL. Dies ist eine zum alten Visual Basic kompatible Scriptingsprache aus den 90er Jahren des letzten Jahrhunderts.

Seit einigen Versionen unterstützt Kofax Capture bei den Validierungsskripten aber auch die Programmiersprachen C# und VB.NET.
Mit der aktuellen Version 10.x von Kofax Capture wurde die Skriptingsprache SBL nun aber als ‚deprecated‘ gekennzeichnet, so dass sie eventuell im nächsten Hauptrelease von Kofax Capture nicht mehr enthalten sein wird.

Obwohl viele Entwickler in den letzten Jahren neue Validierskripte meist mit C# oder VB.NET realisiert haben, gibt es noch sehr viele Kofax Capture Installationen in denen SBL-Skripte aktiv sind. Im Rahmen der Umstellung solcher alten Skripte fiel mir auf, dass die offizielle Kofax Dokumentation zur Programmierung von Validerungsskripten in VB.NET nicht sehr umfangreich ist, und auch die Suche im Internet nur Bruchstücke und Teillösungen liefert. Dies brachte mich auf die Idee, in diesem Artikel kurz die wesentlichen Unterschiede der beiden Entwicklungsumgebungen sowie die wichtigsten bzw. meist genutzten Kofax Capture Events darzustellen.

Ein Vorteil von SBL war und ist noch immer die Out-of-the-box Verfügbarkeit als Bestandteil der Kofax Capture Anwendung. Kurze Validierungslogiken wie Längenprüfungen o.ä. waren damit mit minimalem Aufwand in kürzester Zeit möglich.

Für die Entwicklung von Validierskripten mit VB.NET (und auch C#) muss dagegen eine Visual Studio Version auf einer Kofax Capture Admin-Workstation installiert sein.
Die jeweils nutzbaren Versionen von Visual Studio sind im Kofax Capture Developers Guide der verwendeten Kofax Capture Version aufgelistet. Ich habe für Kofax Capture 10.2 und die folgenden Beispiele Microsoft Visual Basic 2010 verwendet.

Event-Bezeichnungen in SBL und VB.Net

Die folgende Tabelle zeigt die wichtigsten und meist genutzten Events beim Skripten in der Kofax-Validierung. Sie enthält zu jedem Event den internen Namen in der SBL-Umgebung (Functions) und in der neuen VB.Net-Umgebung (Subs).

Unser Beispiel hat auf Dokumentebene zwei Felder definiert: Barcode und Status:

EventSBL-NameVB.Net-Name
Stapel öffnenKfxLoadValidationValidation_BatchLoading
Stapel schliessenKfxUnloadValidationValidation_BatchUnloading
Dokument öffnenKfxDocPreProcessDocPreProcessing
Dokument schliessenKfxDocPostProcessDocPostProcessing
Feld Barcode öffnenPreBarcodeBarcode_FieldPreProcessing
Feld Barcode schliessenPostBarcodeBarcode_FieldPostProcessing
Feld Status öffnenPreStatusStatus_FieldPreProcessing
Feld Status schliessenPostStatusStatus_FieldPostProcessing

Ich spare mir hier das entsprechende Stück SBL-Scripting und zeige direkt das passende Stück Scripting in VB.Net.

  • In allen Events wurden Messageboxen zum Testen der Ablaufsequenz eingebaut.
  • Beim Feld Barcode wurde beispielhaft eine Prüfung der Länge auf 6 Zeichen eingebaut.
1' Class script: Project
2Imports Kofax.AscentCapture.NetScripting
3Imports Kofax.Capture.CaptureModule.InteropServices
4Imports System
5Imports System.Collections.Generic
6Imports System.Text
7
8Namespace ExampleDocClass
9    
10   <SuppressFieldEventsOnDocClose(false)>  _
11   Public Class ExampleDocClass
12    Inherits DocumentValidationScript
13        
14    <IndexFieldVariableAttribute("Barcode")> _
15    Dim WithEvents Barcode As FieldScript
16        
17    <IndexFieldVariableAttribute("Status")> _
18    Dim WithEvents Status As FieldScript
19
20    '--------------------------------------
21        Private Sub Barcode_FieldPostProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PostFieldEventArgs) Handles Barcode.FieldPostProcessing
22            Try
23                If Len(Barcode.IndexField.Value) <> 6 Then
24                    Throw New Kofax.AscentCapture.NetScripting.ValidationErrorException("Barcode nur 6-stellig!", Barcode.IndexField)
25                End If
26            Finally
27            End Try
28        End Sub
29
30    '--------------------------------------
31        Private Sub Barcode_FieldPreProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PreFieldEventArgs) Handles Barcode.FieldPreProcessing
32            MsgBox("Barcode_FieldPreProcessing")
33            'This will skip the field
34            'e.SkipMode = PreFieldEventArgs.SkipModeEnum.SaveAndSkipField
35        End Sub
36
37    '--------------------------------------
38        Private Sub Status_FieldPostProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PostFieldEventArgs) Handles Status.FieldPostProcessing
39            MsgBox(Status.IndexField.Value)
40        End Sub
41
42    '--------------------------------------
43        Private Sub Status_FieldPreProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PreFieldEventArgs) Handles Status.FieldPreProcessing
44            MsgBox("Status_FieldPreProcessing")
45            'This will skip the field **********************
46            'e.SkipMode = PreFieldEventArgs.SkipModeEnum.SaveAndSkipField
47        End Sub
48
49    '--------------------------------------
50        Private Sub DocPostProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PostDocumentEventArgs) Handles Me.DocumentPostProcessing
51            MsgBox("DocPostProsessing")
52        End Sub
53
54    '--------------------------------------
55        Private Sub DocPreProcessing(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.PreDocumentEventArgs) Handles Me.DocumentPreProcessing
56            MsgBox("DocPreProsessing")
57            'This will SaveAndSkip the document **********************
58            'e.SaveAndSkip = True
59        End Sub
60
61    '--------------------------------------
62        Private Sub Validation_BatchLoading(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.BatchEventArgs) Handles Me.BatchLoading
63            MsgBox("Validation_BatchLoading")
64        End Sub
65
66    '--------------------------------------
67        Private Sub Validation_BatchUnloading(ByVal sender As Object, ByVal e As Kofax.AscentCapture.NetScripting.BatchEventArgs) Handles Me.BatchUnloading
68            MsgBox("Validation_BatchUnloading")
69        End Sub
70
71    Sub New(ByVal bIsValidation As Boolean, ByVal strUserID As String, ByVal strLocaleName As String)
72        MyBase.New(bIsValidation, strUserID, strLocaleName)
73    End Sub
74    
75   End Class
76End Namespace
77
78
79

Schließlich benötigen wir für VB.Net noch die oft genutzte SaveAndSkipField- und SaveAndSkipDocument- Funktionalität zum Überspringen von Feldern oder ganzen Dokumenten. Dies ist im obigen Beispielcode als Kommentar hinterlegt:

  • Für Felder im Event Feldname_FieldPreProcessing:
    e.SkipMode = PreFieldEventArgs.SkipModeEnum.SaveAndSkipField
  • Für Dokumente im Event DocPreProcessing:
    e.SaveAndSkip = True

Detaillierte Informationen zum Kofax Capture .NET Scripting finden Sie in der ‚Kofax Capture API Reference‘, die Bestandteil der Dokumentation ist.

Weitere Blog-Artikel über KC und KTM:

CenterDevice und Kofax Capture – Integration out of the box

Unterstützung eines automatisierten Kündigungsprozesses mit Kofax KTM

Kofax Transformation Modules: SEPA-Mandate und handschriftliche Ergänzungen – oder: wer hat etwas auf mein Formular gekritzelt?

Kofax Transformation Modules (KTM): ‘Freiformerkennung’ für handschriftliche Nummern

Kofax Capture – Dokumententrennung mit Barcodes

KTM im Versicherungseinsatz: Heller, grauer und dunkler Posteingang

Dokumentenklassifizierung mit Kofax Transformation Modules (KTM)

Kofax Transformation Modules – Formatlokatoren und dynamische reguläre Ausdrücke – Teil 2

Kofax Transformation Modules – Formatlokatoren und dynamische reguläre Ausdrücke

IBM Content Collector for SAP (formerly known as IBM CommonStore for SAP), Kofax Capture 10 und das IBM CommonStore Release Skript

Beitrag teilen

Gefällt mir

0

//

Gemeinsam bessere Projekte umsetzen

Wir helfen Deinem Unternehmen

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.