13 — Reference
Builder Pattern Reference
Almost everything in rulii is built using the builder pattern. This page is a quick reference for all builders and the static helper methods you'll use most often.
All Builders at a Glance
| What You're Building | How to Start |
|---|---|
| Bindings container | Bindings.builder().standard() |
| Scoped Bindings | Bindings.builder().scoped() |
| Individual Binding | Binding.builder().with("name").value("Alice").build() |
| RuleContext | RuleContext.builder().build(bindings) |
| Condition | Condition.builder().with((x) -> ...).build() |
| Action | Action.builder().with(() -> ...).build() |
| Rule (lambda) | Rule.builder().name("...").given(...).then(...).build() |
| Rule (from class) | Rule.builder().build(MyRule.class) |
| Rule (from instance) | Rule.builder().build(new MyValidationRule("field")) |
| RuleSet | RuleSet.builder().with("Name").rule(...).build() |
| MessageFormatter | MessageFormatter.builder().build() |
| MessageResolver | MessageResolver.builder("baseName").build() |
| RuleViolation | RuleViolation.builder().build("rule", "code", "message") |
Static Helper Imports
These static imports let you write concise lambda-based conditions, actions, and functions:
import static org.rulii.model.condition.Conditions.condition;
import static org.rulii.model.action.Actions.action;
import static org.rulii.model.function.Functions.function;
Usage Examples
condition() — Creates a Condition
// No parameters
condition(() -> true)
// With parameters (matched by name to bindings)
condition((String name) -> name != null)
condition((Integer age, String status) -> age >= 18 && "active".equals(status))
action() — Creates an Action
// No parameters
action(() -> System.out.println("Done!"))
// Modify a binding value
action((Binding<Integer> count) -> count.setValue(count.getValue() + 1))
// Add new bindings
action((Bindings bindings) -> bindings.bind("result", 42))
function() — Creates a Function (returns a value)
// Return a constant
function(() -> "hello world!")
// Return a computed value from bindings
function((String firstName, String lastName) -> firstName + " " + lastName)
Built-in Constants
// A condition that always returns true
Conditions.TRUE()
// An action that does nothing
Actions.EMPTY_ACTION()
Cheat Sheet
// Quick rule with lambda
Rule.builder().name("R1").given(condition(...)).then(action(...)).build()
// Quick rule from annotated class
Rule.builder().build(MyRule.class)
// Quick validation rule
Rule.builder().build(new NotNullValidationRule("field"))
// Quick rule set
RuleSet.builder().with("Name").rule(r1).rule(r2).build()
// Quick run with lambda bindings
rule.run(name -> "Alice", age -> 30)