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:
| Source | Examples |
|---|---|
| Management systems | Berlussimo (MySQL), Immoware24 (WebDAV/CSV/PDF) |
| Banks | account statements MT940 / CAMT.053 |
| Invoices | ZUGFeRD / XRechnung |
| Metering services | ista, Techem, Brunata, Minol |
| E-mail & files | IMAP / .eml, PDF / scan |
| Tax advisors | DATEV 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.