Expression

Exposes Common Expression Language (CEL) engine for evaluating arbitrary expressions

Technology

The expression module provides Common Expression Language (CEL) integration for Project Forge applications. It enables runtime evaluation of arbitrary expressions with high performance and caching capabilities.

Overview

This module provides:

Key Features

Performance

Safety

Flexibility

Package Structure

Core Components

Usage Examples

Basic Expression Evaluation

 1
2
3
4
5
6
7
8
9
10
11
12
13
// Create CEL engine
engine, err := expression.NewEngine()
if err != nil {
return err
}

// Evaluate boolean expression
params := map[string]any{
"age": 25,
"name": "John",
}
result, err := engine.Check("age >= 18 && size(name) > 0", params, logger)
// result: true

Pre-compiled Expressions

 1
2
3
4
5
6
7
8
9
10
// Compile expression for reuse
expr, err := engine.Compile("price * quantity > 100", logger)
if err != nil {
return err
}

// Run with different parameters
params1 := map[string]any{"price": 10.50, "quantity": 12}
result1, duration, err := expr.Run(params1)
// result1: true, runs in microseconds due to pre-compilation

Custom CEL Environment

1
2
3
4
5
6
// Create engine with custom CEL options
engine, err := expression.NewEngine(
cel.Declarations(
decls.NewVar("user", decls.NewObjectType("User")),
),
)

CEL Expression Language

This module uses Google’s Common Expression Language (CEL), which provides:

Supported Operators

Built-in Functions

Data Types

Configuration

The module supports CEL environment customization via engine creation options:

1
2
3
4
5
engine, err := expression.NewEngine(
cel.Types(&CustomType{}), // Custom type definitions
cel.Declarations(decls.NewVar(...)), // Variable declarations
cel.Functions(customFunctions...), // Custom function definitions
)

Performance Characteristics

Source Code

See Also