Skip to main content
Version: Next

Technology Packages

Beside the products jadice flow offers some separately licensed technology packages with some specific functionalities. Below you can find all technology packages and their installation and configuration.

Existing Technology Packages

TessOCR

The "TessOCR" technology package performs OCR analysis on TIFF and PDF documents and returns an enriched PDF, text or hOCR.

Worker definition for the workers.yaml

The worker definition for the OCR technology package looks like this:

jadice-flow.workers:
workerDefinitions:
- workerName: "tessocr"
description: "Performs optical character recognition on the given image parts\
\ and stores the result as new part"
processorClass: "com.jadice.flow.controller.server.processor.impl.TessOCRProcessor"
workerURL: "http://jf-worker-tessocr/"
infoTags:
- "PART_BASED"
- "IMAGE_PROCESSING"
- "REMOTE"
workerParameters:
- name: "output-formats"
type: "com.jadice.flow.worker.ocr.OCROutputSetting"
subTypes: null
value: "\"TEXT\""
description: "OCR output format(s)"

Note: Remember that the worker parameters are just samples and have to be updated.

Add this part to your worker.yaml to use the technology package (see Installing the technology package - Step 5).

Usage

After that, you can use the worker and create a new jobtemplate or update an existing one:
Some jobtemplate examples you can find in the Readme of the worker-tessocr: Worker Doku. In the UI go to: Job configuration -> Create new template -> Add step -> Worker name. You should see the tessocr worker name there if you set everything up correctly. Then choose the worker and edit the step name, description and add a password.
For more information see: Configure a job flow.

To create a job go to Job overview -> Create job -> Job template and click on the name of the job template you just created. Next you need to click on the Add item button and chose the file you want to encrypt (if it doesn't have a password) or decrypt.

After clicking ok you should see the job has started and will not take long to complete. The job result should have the decrypted/encrypted file that you can download.

PDF Permissions

The "PDF Permissions" technology package handles passwords on PDF documents.

Note: Before you use this technology package, you have to consult your legal department to determine whether and in which cases this usage is allowed for your processes and type of documents. Please contact jadice-support@levigo.de for more information about this technology package.

Worker definition for the workers.yaml

The worker definition for the PDF Permission technology package looks like this:

jadice-flow.workers:
workerDefinitions:
- workerName: "pdf-permissions"
description: "Handle passwords on PDF"
processorClass: "com.jadice.flow.controller.server.processor.RemoteItemProcessor"
workerURL: "http://jf-worker-pdfpermissions/"
infoTags:
- "PART_BASED"
- "REMOTE"
workerParameters:
- name: "passwordList"
type: "java.util.List"
subTypes: "com.jadice.flow.controller.util.Password"
value: "[{\"raw\":\"test\"}]"
description: "owner passwords"

Note: Remember that the worker parameters are just samples and have to be updated.

Add this part to your worker.yaml to use the technology package (see Installing the technology package - Step 5).

Usage

After that, you can use the worker and create a new jobtemplate or update an existing one:
In the UI go to: Job configuration -> Create new template -> Add step -> Worker name. You should see the pdf-permissions worker name there if you set everything up correctly. Then choose the worker and edit the step name, description and add a password.
For more information see: Configure a job flow.

To create a job go to Job overview -> Create job -> Job template and click on the name of the job template you just created. Next you need to click on the Add item button and chose the file you want to encrypt (if it doesn't have a password) or decrypt.

After clicking ok you should see the job has started and will not take long to complete. The job result should have the decrypted/encrypted file that you can download.

ClamAV

The "ClamAV" technology package performs checks on incoming files for viruses. The check is carried out with the help of ClamAV.

Note: ClamAV is an open source antivirus toolkit. For use with this worker, ClamAV must be provided as a daemon service or run in a Docker container.

Worker definition for the workers.yaml

The worker definition for the ClamAV technology package looks like this:

jadice-flow.workers:
workerDefinitions:
- workerName: "clam-av"
description: "Performs a virus check"
processorClass: "com.jadice.flow.controller.server.processor.RemotePartProcessor"
workerURL: "http://jf-worker-clamav/"
infoTags:
- "PART_BASED"
- "REMOTE"
workerParameters: []

Note: Remember that the worker parameters are just samples and have to be updated.

Add this part to your worker.yaml to use the technology package (see Installing the technology package - Step 5).

ClamAV worker setup

For ClamAV to work you ned to add a special configuration to the values.yaml that you create in Step 2.

jf-worker-clamav values
jf-worker-clamav:
enabled: true
enableJsonLogging: false
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
worker:
application:
annotation: {}
startupProbe:
failureThreshold: 50
sidecarContainers:
- name: clamav
image: clamav/clamav:1.4.2
resources:
requests:
cpu: 500m
memory: 2048Mi
limits:
cpu: 500m
memory: 2048Mi
ports:
- name: clamav
containerPort: 3310
protocol: TCP
readinessProbe:
tcpSocket:
port: clamav
initialDelaySeconds: 0
periodSeconds: 60
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
livenessProbe:
exec:
command:
- clamdcheck.sh
initialDelaySeconds: 0
periodSeconds: 60
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
startupProbe:
tcpSocket:
path: /
port: clamav
initialDelaySeconds: 0
failureThreshold: 180
periodSeconds: 10
timeoutSeconds: 2

Adjust the config according to your needs

Usage

After that, you can use the worker and create a new jobtemplate or update an existing one:
In the UI go to: Job configuration -> Create new template -> Add step -> Worker name. You should see the clamav worker name there if you set everything up correctly. Then choose the worker and edit the step name and description.
For more information see: Configure a job flow.

To create a job go to Job overview -> Create job -> Job template and click on the name of the job template you just created. Next you need to click on the Add item button and chose the file you want to check for viruses.

After clicking ok you should see the job has started and will not take long to complete. The job result should have the checked up file.

MS Office

The "MS Office" technology package allows converting office files with Microsoft Office. It requires an MS Windows machine and is installed, unlike all other technology packages, not as a dockerized application but as a java server application.

Installation of the worker-msoffice

The distribution-worker-msoffice ZIP can be downloaded from the levigo artifacts repository.
The installation is described in the Readme of the worker-msoffice: Workers.

Integration with a jadice flow bundle

To use the worker from a jadice flow bundle, it must be registered with the jf-controller. This is done by adding it to the existing workers.yaml, or if auto-discovery is enabled by creating a new ConfigMap.

  1. Worker definition to add to the workers.yaml

    Add this entry to the list of workerDefinitions in your worker.yaml.

    msoffice worker definition
    - workerName: "msoffice"
    description: "Converts MS Office formats to PDF"
    processorClass: "com.jadice.flow.controller.server.processor.RemotePartProcessor"
    workerURL: "http://my-windows-machine:8080/"
    infoTags:
    - "PART_BASED"
    - "REMOTE"
    workerParameters:
    - name: "password"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "document password (default: null)"
    - name: "targetMimeType"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "requested MIME type of the conversion result (default: application/pdf)"
    - name: "filename"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "fallback filename to generate a temporary file (default: word.doc)"
    - name: "exportRange"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "The range of pages to export/convert. If the range is not valid\
    \ all pages will be processed. (default: null -> ALL_PAGES)"
    - name: "openFormat"
    type: "com.jadice.flow.worker.msoffice.WordNodeConfig$WdOpenFormat"
    subTypes: null
    value: null
    description: "the format which converter will be used to open the document (default:\
    \ WordNodeConfig.WdOpenFormat.WD_OPEN_FORMAT_AUTO)"
    - name: "exportMarkup"
    type: "java.lang.Boolean"
    subTypes: null
    value: null
    description: "Switch if MS Word shall export the document with or without markup.\
    \ (default: false)"
    - name: "emptyWorkbookHandlingMode"
    type: "com.jadice.flow.worker.msoffice.ExcelNodeConfig$EmptyWorkbookHandlingMode"
    subTypes: null
    value: null
    description: "the empty workbook handling mode for conversions (default: ExcelNodeConfig.EmptyWorkbookHandlingMode.NONE)"
    - name: "replacementPageStyleSheetLocation"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "This variable determines the location of the replacement page\
    \ stylesheet on the server (default: resource:/ms-office/emptyExcelReplacementStylesheet.xsl)"
    - name: "viewsToExport"
    type: "java.util.List"
    subTypes: null
    value: null
    description: "the type of View to export (default: [\"PJ_VIEW_GANTT\"])"
  2. New ConfigMap

    Create a ConfigMap in the same namespace as the jf-controller

    cm-workers.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: my-workers
    namespace: default
    data:
    workers.yaml: |
    jadice-flow.workers:
    workerDefinitions:
    - workerName: "msoffice"
    description: "Converts MS Office formats to PDF"
    processorClass: "com.jadice.flow.controller.server.processor.RemotePartProcessor"
    workerURL: "http://my-windows-machine:8080/"
    infoTags:
    - "PART_BASED"
    - "REMOTE"
    workerParameters:
    - name: "password"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "document password (default: null)"
    - name: "targetMimeType"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "requested MIME type of the conversion result (default: application/pdf)"
    - name: "filename"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "fallback filename to generate a temporary file (default: word.doc)"
    - name: "exportRange"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "The range of pages to export/convert. If the range is not valid\
    \ all pages will be processed. (default: null -> ALL_PAGES)"
    - name: "openFormat"
    type: "com.jadice.flow.worker.msoffice.WordNodeConfig$WdOpenFormat"
    subTypes: null
    value: null
    description: "the format which converter will be used to open the document (default:\
    \ WordNodeConfig.WdOpenFormat.WD_OPEN_FORMAT_AUTO)"
    - name: "exportMarkup"
    type: "java.lang.Boolean"
    subTypes: null
    value: null
    description: "Switch if MS Word shall export the document with or without markup.\
    \ (default: false)"
    - name: "emptyWorkbookHandlingMode"
    type: "com.jadice.flow.worker.msoffice.ExcelNodeConfig$EmptyWorkbookHandlingMode"
    subTypes: null
    value: null
    description: "the empty workbook handling mode for conversions (default: ExcelNodeConfig.EmptyWorkbookHandlingMode.NONE)"
    - name: "replacementPageStyleSheetLocation"
    type: "java.lang.String"
    subTypes: null
    value: null
    description: "This variable determines the location of the replacement page\
    \ stylesheet on the server (default: resource:/ms-office/emptyExcelReplacementStylesheet.xsl)"
    - name: "viewsToExport"
    type: "java.util.List"
    subTypes: null
    value: null
    description: "the type of View to export (default: [\"PJ_VIEW_GANTT\"])"

    Then let the controller know about the ConfigMap by setting the helm value below. This requires a restart of the controller.

    jf-controller:
    workersConfigMap: my-workers

Usage

After that, you can use the worker and create a new jobtemplate or update an existing one: \

Example jobtemplate
- jobName: "msoffice"
description: null
properties: {}
enabled: true
stepTemplates:
- stepName: "msoffice"
workerDefinitionName: "msoffice"
inputMimeTypes: []
inputFilterJson: "[]"
expectsNewPartResult: true
markSrcAsMetaOnResult: true
parameters:
- name: "password"
type: "java.lang.String"
subTypes: null
value: null
description: "document password (default: null)"
- name: "targetMimeType"
type: "java.lang.String"
subTypes: null
value: null
description: "requested MIME type of the conversion result (default: application/pdf)"
- name: "filename"
type: "java.lang.String"
subTypes: null
value: null
description: "fallback filename to generate a temporary file (default: word.doc)"
- name: "exportRange"
type: "java.lang.String"
subTypes: null
value: null
description: "The range of pages to export/convert. If the range is not valid\
\ all pages will be processed. (default: null -> ALL_PAGES)"
- name: "openFormat"
type: "com.jadice.flow.worker.msoffice.WordNodeConfig$WdOpenFormat"
subTypes: null
value: null
description: "the format which converter will be used to open the document (default:\
\ WordNodeConfig.WdOpenFormat.WD_OPEN_FORMAT_AUTO)"
- name: "exportMarkup"
type: "java.lang.Boolean"
subTypes: null
value: null
description: "Switch if MS Word shall export the document with or without markup.\
\ (default: false)"
- name: "emptyWorkbookHandlingMode"
type: "com.jadice.flow.worker.msoffice.ExcelNodeConfig$EmptyWorkbookHandlingMode"
subTypes: null
value: null
description: "the empty workbook handling mode for conversions (default: ExcelNodeConfig.EmptyWorkbookHandlingMode.NONE)"
- name: "replacementPageStyleSheetLocation"
type: "java.lang.String"
subTypes: null
value: null
description: "This variable determines the location of the replacement page\
\ stylesheet on the server (default: resource:/ms-office/emptyExcelReplacementStylesheet.xsl)"
- name: "viewsToExport"
type: "java.util.List"
subTypes: null
value: null
description: "the type of View to export (default: [\"PJ_VIEW_GANTT\"])"
jobFlow:
- from: null
"on": "*"
to: "msoffice"

To create a new jobtemplate in the UI go to: Job configuration -> Create new template -> Add step -> Worker name. You should see the msoffice worker name there if you set everything up correctly. Then choose the worker and edit the step name and description.
For more information see: Configure a job flow.

To create a job, go to Job overview -> Create job -> Job template and click on the name of the job template you just created. Next you need to click on the Add item button and choose the file you want to convert.

PDF Verification

The "PDF Verification" technology package verifies PDFs against a PDF/A conformance level.

The worker registers itself with the jf-controller via the Auto Discovery. The available parameters can be seen in the controller-ui or in the worker reference. You can use the worker in a new jobtemplate or update an existing one, see Configure a job flow.

Install a technology package

Prerequisites

Before you begin, make sure you have the following prerequisites installed on your system:

Note: The default storage for storing job results is Eureka. For more information see: Install products

Where to get

To add a Helm repository to your repositories you can execute the following commands:

$ helm repo add levigo https://artifacts.jadice.com/repository/helm-charts/ --username <username>
Password: <enter your password>

When you see the password prompt please enter your password.

You now have access to the Helm charts of the technology packages in your helm cli.

Installing the technology package

To use the technology package with a jadice flow product, you can either install the worker chart on its own or create a new chart with both as dependencies. For both options the 'global' values from the product chart should be added to the values.yaml.

Option A

Example: Installing "PDF Permissions" in addition to "jf-email-conversion" as a separate Helm chart.

  1. Values.yaml

    Get the global values from the product chart.

    $ helm get values jf-email-conversion -o yaml

    Create a new file "values.yaml" with the following content:

    Content values.yaml
    global:
    <global values from the command above>
  2. Install the worker Helm Chart

    $ helm repo add levigo https://artifacts.jadice.com/repository/helm-charts/ --username <username>
    Password: <enter your password>
    $ helm install -f values.yaml <releasename> -n <namespace> --create-namespace levigo/jf-worker-pdfpermissions

Option B

Example: Installing "PDF Permissions" and "jf-email-conversion" as a new "bundled" Helm chart. This option has the advantage that all custom values are in one place and you can easily add more custom Kubernetes resources as Helm templates.

In the end the origin folder should have the following structure:

origin folder
Chart.yaml
value.yaml
templates
custom-resource.yaml # optional custom resources
  1. Create a folder

    Create a new folder for the Helm Chart configuration files via the user interface or command line and navigate into it. In the following instructions this folder will be called “origin folder”.

  2. Chart.yaml

    Create in the same folder a new file "Chart.yaml" with the following content:

    Example Content Chart.yaml for the technology package "pdf permissions":
    apiVersion: v2
    name: jf-email-conversion-extended
    description: jadice flow email conversion with technology package
    type: application
    version: 2.0.0
    appVersion: 2.0.0

    dependencies:
    - name: jf-email-conversion
    version: 0.43.1
    repository: https://artifacts.jadice.com/repository/helm-charts/
    - name: jf-worker-pdfpermissions
    version: 1.18.4
    repository: https://artifacts.jadice.com/repository/helm-charts/
    condition: jf-worker-pdfpermissions.enabled

    Note: Insert a corresponding description, version and jadice flow product or technology package name. Also remember to use the latest version of the jadice flow product and used technology package.

  3. Values.yaml

    Get the global values from the product chart.

    $ helm get values jf-email-conversion -o yaml

    Create a new file "values.yaml" with the following content:

    Content values.yaml
    global:
    <global values from the command above>

    jf-email-conversion:
    <customization of the jf-email-conversion chart>
    jf-worker-pdfpermissions:
    <customization of the jf-worker-pdfpermissions chart>
  4. Install the local Helm Chart

    Run in the origin folder the following command:

    $ helm install -f values.yaml <releasename> -n <namespace> --create-namespace .

    Note: Insert a release and namespace name for your local helm Chart.

After that, you can use the technology package together with a jadice flow product.

Validate Installation

To validate the local Helm Chart deployment run:

$ kubectl get pods -n <namespace>

After that you should see the running workers of the installed jadice flow product and the technology package.

Uninstalling the Chart

To uninstall the local Helm Chart deployment run:

$ helm uninstall <releasename> -n <namespace>

Handle jadice flow product releases

To update the jadice flow product version or technology package version you have to open the Chart.yaml in the origin folder. There you have to insert the new released version of the product at dependencies -> version.

Example: Insert a new version "1.25.2" of the jf-email-conversion product in the Chart.yaml (see line 10)
apiVersion: v2
name: jf-email-conversion-extended
description: jadice flow email conversion with technology package
type: application
version: 2.0.0
appVersion: 2.0.0

dependencies:
- name: jf-email-conversion
version: 1.25.2
repository: https://artifacts.jadice.com/repository/helm-charts/
- name: jf-worker-pdfpermissions
version: 1.3.0
repository: https://artifacts.jadice.com/repository/helm-charts/
condition: jf-worker-pdfpermissions.enabled