OpenL Tablets: Production Deployment Guide
OpenL Tablets: Production Deployment Guide
Overview
This document describes a structured approach for deploying OpenL Tablets rule services in production environments. It provides a recommended setup based on modern software development practices such as Git-based version control, Maven builds, containerization, and CI/CD pipelines.
This setup is applicable for production usage and can serve as a base for operational rule platforms within organizations. It separates rule authoring, development, deployment, and runtime responsibilities to ensure quality, traceability, and automation.
System Architecture
The system is built around five roles and four workflow stages:
Key Roles
- Rule Author – edits business rules using OpenL Studio
- OpenL Developer – extends, configures, or customizes the platform (e.g., Java, Groovy, extensions)
- DevOps Engineer – manages build pipelines and environment deployments
- CI/CD System – builds artifacts and creates container images
- Environments – multiple isolated targets: tooling, dev, staging, production
Workflow Stages
This setup divides the delivery pipeline into four distinct stages. Each is illustrated below with a focused diagram and logical handoff to the next stage.
- Authoring – Rule authors modify rules through OpenL Studio.
- Development – OpenL developers customize project structure or logic.
- Build & Package – CI/CD builds artifacts and Docker images from Git.
- Deploy & Promote – Images are promoted from development to production environments.
Authoring and Development
graph LR
classDef handoff fill:#fdf6e3,stroke:#b58900,stroke-width:2px,stroke-dasharray: 5;
A1["Rule Author (OpenL Studio)"] --> B["Git Repository"]
A2["OpenL Developer"] --> B
B --> OUT1(["▶ Next: CI/CD"])
class OUT1 handoff;
Build and Package
graph LR
classDef handoff fill:#fdf6e3,stroke:#b58900,stroke-width:2px,stroke-dasharray: 5;
IN1(["◀ From: Git Repository"]) --> C1["CI/CD Pipeline"]
class IN1 handoff;
C1 --> C2["Build"]
C2 --> C3["Docker Image"]
C3 --> OUT2(["▶ Next: Deployment"])
class OUT2 handoff;
Deploy and Promote
graph LR
classDef handoff fill:#fdf6e3,stroke:#b58900,stroke-width:2px,stroke-dasharray: 5;
IN2(["◀ From: Docker Image"]) --> D1["Development"]
class IN2 handoff;
D1 --> D2["Staging"]
D2 --> D3["Production"]
Rationale
- OpenL Studio is used for editing, not execution
- Git serves as the single source of truth for rules and custom code
- OpenL Developers manage reusable logic and structure
- CI/CD provides traceability, automation, and artifact reproducibility
- Deployment is gated and environment-specific
Role Responsibilities
Rule Author
- Uses OpenL Studio to edit and test rules
- Commits changes to the Git repository
OpenL Developer
- Designs module structure, datatypes, interfaces
- Implements or maintains Java/Groovy extensions
- Configures the Maven project and dependencies
DevOps Engineer
- Maintains CI/CD tools (e.g., Jenkins, GitHub Actions)
- Configures pipeline triggers and promotion logic
- Ensures environment parity and automation
CI/CD Pipeline
flowchart LR
A[Git Push] --> B[CI/CD Trigger]
B --> C[Maven Build]
C --> D[Docker Image Build]
D --> E[Push to Registry]
CI/CD may be triggered on every commit, periodically (e.g., nightly), or manually.
Deployment and Promotion
Artifacts are deployed progressively across isolated environments.
| Environment | Purpose | Editable | Deployment Method |
|---|---|---|---|
| Tooling | Rule editing and testing | Rules only (via OpenL Studio) | CI-triggered |
| Development | Integration testing | No | CI/CD automatic |
| Staging | Pre-production validation | No | Manual or gated promo |
| Production | Live execution | No | Manual approval |
graph LR
I[Docker Image] --> Dev[Development]
Dev --> Staging
Staging --> Prod[Production]
Configuration Examples
Summary of Benefits
- Separation of responsibilities: rule authors, platform developers, and infrastructure engineers
- Centralized version control for all rule logic and customizations
- Automated builds and repeatable deployment processes
- Custom extension support via Java and Groovy
- Clean promotion pipeline with environment isolation