|Espresso Logic is designed to complement automation with provisions for extending:
- SQL access - Your SQL operations are normally automated, but you can override these defaults to address more complex cases
Architected to be Open, Extensible
Recall that Espresso Logic is, underneath, a war file. It is distributed that way, or as a cloud/appliance-based service. It runs within the JVM as shown below.
Any client or server can call in to Espresso, via REST. This might include chron jobs, App Servers built with familiar frameworks, etc.
There are some key tenants that make the logic open and extensible:
- Ability to access remote services, via REST, SOAP, etc.
In addition, as a RESTful service, you can of course invoke Espresso resources from any machine or client, ranging from a mobile app, to a internal / partner system, an App Server, etc.
created from your schema, providing persistence-enabled row
objects for accessing attributes and related data.
Formula and Validation Logic
expressions. In the most common case, these are simple expression such as
row.price * row.quantity
Logic Event Rule Type
Table Event Handlers are invoked with the current / old rows and the current verb on POST, PUT and DELETE operations. They can operate on this row, the results of which is subjected to Reactive Expressions.
Resource Row EventResource Row Events are fired as rows are retrieved. You can inject new attributes or remove attributes or even make REST calls and append results.
You can define HTTP Handler
for your own custom end points to build services perhaps unrelated to your database objects.
Request Events provide an entry point before logic is invoked and Reponse Events can be used after all processing has been completed on any Request.
The extension capabilities draw upon the following underlying services.
The system initializes important Context Variables
you'll need for your code to operate, including:
- LogicContext - services for creating, reading, updating and deleting rows.
Provides information about key logic state, including verb, nest level; please see the api documentation
You also have access to System Logic
services such as allocate, copy, etc.
Re-usable Rule Types
You can add new Rule Types to the core rules (Formula, Sum, Count, Validation and so forth). You can define the parameters they accept, which are then used by the Logic Designer to utilize an extended rule. Extended Rule Types are designed to enable you to detect logic patterns, and implement re-usable solutions to these. The InsertIntoFrom
rules utilize this underlying technology, and so are good illustrations of the power of this technique.
Resources with a Type of Custom SQL
enable you to supply your own SQL for update-able objects. Your SQL must return the columns modeled by the Resource.
You can define Resources with a Type of Free SQL
. This enables you to supply your own SQL, without restriction.