Tools #

A standard without good tools does not prevail. Because Prexfo relies on file-based exchange rather than a central API, the quality of the SDK decides its acceptance among developers.

The workflow engine #

The heart follows the UNIX philosophy: tools do one thing well, workflows orchestrate them, the engine runs workflows.

  • Each tool is a standalone program — language does not matter (Python, Bash, Go …).
  • A document goes in (argument), the result comes out (stdout/files).
  • Defined exit codes make runs script- and pipeline-friendly (0 = OK, 2 = input error, 5 = review needed).
prexfo Brief.pdf                     # auto-detect → matching workflow
prexfo Brief.pdf berlus-posteingang  # explicit workflow
prexfo --dry-run Brief.pdf           # dry run

Workflows are described as simple XML and can be nested — a composite workflow calls others and inherits its context:

<workflow name="berlus-posteingang" description="Classify inbox">
  <context>
    <var name="owner">Berlus GmbH</var>
  </context>
  <workflow ref="pdf-extract"/>
  <workflow ref="classify"/>
</workflow>

Importers — data from any source #

Legacy data need not be transferred by hand. Importers convert a wide range of sources into the Prexfo format:

SourceExamples
Management systemsBerlussimo (MySQL), Immoware24 (WebDAV/CSV/PDF)
Banksaccount statements MT940 / CAMT.053
InvoicesZUGFeRD / XRechnung
Metering servicesista, Techem, Brunata, Minol
E-mail & filesIMAP / .eml, PDF / scan
Tax advisorsDATEV CSV

The SDK #

The SDK abstracts the complexity and offers three high-level functions — initially for Python, later Java and JavaScript:

# Read: open PDF/A-3, extract prexfo.xml, validate, return object
data = PREXFOReader.load("path/to/file.pdf")

# Write: data object + template → valid Prexfo PDF/A-3
PREXFOWriter.save(data, "path/to/output.pdf")

# Validate: check an entire folder structure for conformance
PREXFOValidator.validate_folder("path/to/ROOT")

Recommended technology stack: lxml (Python, XSD validation & XPath), JAXP (Java, included in the JDK), libxmljs / native DOMParser (JavaScript).

Command-line interface #

For quick checks and integration into automated scripts:

prexfo-cli validate --path /path/to/ROOT/

A clear success or error message with details — exactly what a CI run needs.

Open. Schema and SDK are released under Apache 2.0. Excellent documentation, contribution guidelines and a code of conduct are part of the plan — see Roadmap.