The Interface

LF‑ET generates an interface from the decision table with
-
an 'is-method' for each condition value
-
a 'do-method' for each action value
-
a 'trace method' which can be used to log the execution of the rules
| If method names other than the automatically generated ones are to be generated, this can be configured individually for specific conditions and actions using the inline parameter $$MethodName. |
// *** WARNING: DO NOT MODIFY *** This is a generated Java source code!
//
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet
// From decision table
// "/src/main/resources/lfet/demo/InvoiceTotal.lfet"
// 24.02.2026 15:20
//
// Prolog Standard ---->
// profile LFET.Java.Prolog.Standard.Interface.ini not found
// used LF-ET 2.4.1 (260219a) build in default
package lfet.demo;
import javax.annotation.processing.Generated;
@Generated("LF-ET")
interface InvoiceTotal_iFace
{
// Prolog Standard <----
/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/01: < 20.00 - low</b>
*/
boolean isPurchaseOrderValue_Less2000();
/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/02: 20.00 - 75.00 - normal</b>
*/
boolean isPurchaseOrderValue_20007500();
/**
* <b>C02: Discount</b><br>
* <br>
* <b>C02/01: >0 - discount given</b>
*/
boolean isDiscount_Greater0();
/**
* <b>C03: Discount type</b><br>
* <br>
* <b>C03/01: % - percentage discount on the purchase order value</b>
*/
boolean isDiscountType_PercentageDiscountOnThePurchaseOrderValue();
/**
* <b>C04: Discount < Purchase order value</b><br>
* <br>
* <b>C04/01: Y - Yes</b>
*/
boolean isDiscountLessPurchaseOrderValue();
/**
* <b>A01: Apply discount</b>
*/
void doApplyDiscount();
/**
* <b>A02: Calculate shipping costs</b>
*/
void doCalculateShippingCosts();
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/01: upd - Invoice total must be updated</b>
*/
void doInvoiceTotal_Upd();
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/02: pov - Purchase order value can be taken over as invoice total</b>
*/
void doInvoiceTotal_Pov();
void doTrace(java.lang.String dtName, java.lang.String version, int rules, int rule);
// Epilog Standard ---->
// profile LFET.Java.Epilog.Standard.Interface.ini not found
// used LF-ET 2.4.1 (260219a) build in default
}
// Epilog Standard <----
// End of generated Java source code
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet
For each condition value an is‑method
…almost, since for the last value of each condition, the so-called 'ELSE-Value', an ELSE branch is always generated.
Presented as an example here the methods for Condition C01:

/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/01: < 20.00 - low</b>
*/
boolean isPurchaseOrderValue_Less2000();
/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/02: 20.00 - 75.00 - normal</b>
*/
boolean isPurchaseOrderValue_20007500();
-
For each condition value, a unique method name is generated from 'is', the title of the condition and the symbol of the condition value
-
For example, 'Purchase order value < 20.00' becomes the method name isPurchaseOrderValue_Less2000
-
Automatically JavaDoc:
-
A JavaDoc comment is created from Condition title, symbol and description of value and from a Text potentially specified for the value for each method
-
This means that also the comments in the software are automatically kept up-to-date during maintenance and further development of decision tables
-
-
For the last condition value 'Purchase order value > 75.00' no method has been generated since we are speaking here about the last value, the so-called 'ELSE-value' for which an ELSE branch is generated
For each action value a do‑method

Presented here are e.g. the generated methods for Action A03:
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/01: upd - Invoice total must be updated</b>
*/
void doInvoiceTotal_Upd();
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/02: pov - Purchase order value can be taken over as invoice total</b>
*/
void doInvoiceTotal_Pov();
-
for each action value a unique method name is generated from 'do', the action title and the action value symbol
-
no matter how often the method is used in rules, it must be implemented only once, the generator takes over the “installation” in the rules module
-
A03/01 is used in 6 rules (i.e. in 6 program branches)
-
A03/02 is used in 1 rule
-
And a trace-method
It is called in the rules module in each rule BEFORE the first action is executed.
void doTrace(java.lang.String dtName, java.lang.String version, int rules, int rule);
Notes
-
As long as only rules are changed in the decision table:
-
the Interface - and also all implementations of the interfaces remain valid
-
can simply be regenerated, only the rules module is affected by these changes, this is automatically completely recalculated and regenerated
-
-
Only if also conditions or actions are changed in decision tables, also the interface is affected, however, only targeted readjustments of individual methods are necessary
-
omission of values: methods must be removed
-
changed values: methods must be adjusted
-
new values: methods must be implemented once
-
-
As a rule, modern development environments offer powerful functions to support such readjustments.