Overview

Intelligent Workflow Runner (IWR) is a high availability API for robust, long-running CSDK applications with scale-up capability. This documentation refers to any application as an IWR application if it is using the IWR API, such as:

  • Any custom application built by developers

  • IWR.exe and WorkflowXMLDesigner.exe deployed with the installation

Using the IWR and Workflow XML Designer offers the following advantages contrary to custom applications invoking CSDK API directly:

  • Stable – IWR is based on a thoroughly tested out-of-process architecture, preventing user application crashes, memory leaks, and deadlocks.

  • Scale-up – IWR can automatically leverage a multi-core CPU environment, loading as many cores as available. (Developers can limit the number of cores to use.)

  • Declarative programming – Developers can formulate their input-, output-, and processing requirements in XML without direct control on the program flow in the API.

  • Visual workflow design – Building workflows does not require XML editing, developers can visually build their custom workflows in Workflow XML Designer.

The IWR API is implemented as a COM server.

IWR applications do not call CSDK functions directly but pass a declarative workflow (job) to the OCRService.exe. The workflow describes the user requirements in XML format. The IWR engine converts the workflow to procedural CSDK calls. OCRService.exe notifies the IWR application when the workflow is finished and passes the result.

The following diagrams describe the relations between the API elements and the application.

Common IWR API connections

IWR API diagram

Special IWR API connections for IWR_InProcCore.exe

IWR API diagram for IWR_InProcCore.exe

The above diagrams use the following components:

  • OCRService.exe: This is the main component, running as a local COM server or Windows Service:

    • When hosted as a Windows Service, it runs as a single .exe file per computer.

    • When hosted as a COM server, it runs a dedicated .exe file for each authenticated Windows user.

    OCRService.exe exposes a single COM object called OCRService. All IWR applications communicate with this object. The IWR application passes a workflow XML and a unique identifier, such as a GUID string to the OCRService COM object.

    OCRService acts also as a dispatcher and adjusts the number of the running OCRServer.exe instances to the actual workload. See OCRServer objects and scaling for details.

  • OmniPageCSDK.IproPlus.JobService.dll: The .NET interop assembly of OCRService, for .Net developers.

  • OCRServer.exe: As an out-of-proc local COM server, it forms only a thin layer between OCRService.exe and OCRServer.dll. It delegates all requests from OCRService.exe to OCRServer.dll.

  • OCRServer.dll: The in-proc implementation of the workflow runner engine, implementing the IWR API logic. It translates the workflow requests to procedural CSDK calls. Developers can extend its functionality with add-ons implemented in custom DLLs.

  • OmniPageCSDK.NET.IproPlus.OCRServer.dll: The .NET interop assembly of OCRServer.dll. Facilitates the debugging of the add-ons developed for OCRServer.dll. Applications relying on this assembly bypass the out-proc and scale-up infrastructure of IWR.