Skip to content

Plugins

Most needs are met by the built-in functions, your own functions written as rules, and the built-in connectors. When you need something that cannot be written as a rule (a special matching algorithm, a check-digit for an ID used in your country, a connector to an in-house system), it can be added as a plugin.

This page explains what plugins can do. Writing one is a developer’s job, and installing one is done by whoever runs your RefinePoint servers.

Kind Example What you get
Functions [token similarity of] party and payee, account is a valid iban They work exactly like built-in functions: in the rule builder, the checker, the function list, the AI rule builder, and in runs.
Connectors An in-house ERP, a regional bank’s API The connector appears in the connector list with its own settings form; secrets are encrypted, and it can be tested and refreshed before runs like any other.

In the app, functions and connectors that come from a plugin are marked Plugin, with the name of the file they came from.

A plugin is a small Java library (a .jar file) written against RefinePoint’s public plugin API. It is placed in the plugins folder of the RefinePoint servers, and every part of RefinePoint loads it when it starts. Nothing else changes: no new release of RefinePoint is needed.

  • A plugin function whose name or words a built-in function already has, or a connector whose id is taken, is left out and logged.
  • A plugin that cannot be loaded is left out; RefinePoint still starts.

The plugin API, how to write a function or a connector, and a complete example plugin (two functions and a connector, with tests) are in the ryfn-plugin-api and ryfn-plugin-example projects. In short:

  • A function is described with a builder: its name, how it is written ([token similarity of] {0} and {1}), its parameters and their types, what it gives, a description, an example, and the Java code. Values arrive typed as the parameters say: text as String, numbers as BigDecimal, dates as LocalDate, yes or no as Boolean. Optionally, a DuckDB SQL expression makes it faster on large data.
  • A connector implements DataConnector: an id, a description with its settings fields, test and fetch.
  • Both are listed in the jar’s META-INF/services folder, Java’s standard way of announcing plugins.