Common Operators Catalog
bloge-common-operators provides ready-to-use operators across integration, AI, data shaping, notification, approval, storage, crypto, validation, and dynamic graph execution. The module is designed as an operator catalog, not as a mandatory dependency of the core runtime.
Registration Pattern
var registry = new DefaultOperatorRegistry();
CommonOperators.builder()
.http()
.transform()
.validation()
.crypto(secretProvider)
.ai(llmProvider)
.dynamic()
.build()
.registerAll(registry);Provider-backed categories require the corresponding SPI implementation. Self-contained categories can be registered without external services.
Categories
| Category | Operators | Required provider |
|---|---|---|
| HTTP | httpRequest, graphqlQuery, webhookTrigger, httpPoll | JDK HTTP client plus optional verifier |
| Database | sqlQuery, sqlExecute, sqlBatch, noSqlQuery, redis | DataSourceProvider, Redis/NoSQL providers where applicable |
| Messaging | messagePublish, messageConsume, eventEmit | MessageBrokerProvider |
| AI / LLM | llmChat, llmStreamingChat, embedding, textClassify, textSummarize, ragRetrieve, structuredExtract, textSplit, conversation | LlmProvider, EmbeddingProvider, VectorStoreProvider, optional TokenEstimator |
| Transform | jsonParse, jsonStringify, xmlParse, csvParse, templateRender, regexExtract, dataMapping | None |
| Notification | emailSend, smsSend, multiChannelNotify | Mail and SMS providers |
| Approval | approvalRequest, approvalCheck | ApprovalService |
| Storage | fileRead, fileWrite, objectStorage | ObjectStorageProvider for object storage |
| Crypto | hash, encryptDecrypt, jwt | SecretProvider for secret-backed operations |
| Validation | schemaValidate, ruleEngine | None |
| Dynamic | dynamicSubGraph | Current OperatorRegistry and DSL sandbox policy |
AI and Conversation Operators
The AI operator set is the runtime foundation for agent workflows, RAG pipelines, and structured model calls.
| Operator | Use case |
|---|---|
llmChat | Text or structured chat completion |
llmStreamingChat | Chunked model output |
conversation | Conversation memory with full, sliding-window, or token-budget strategies |
ragRetrieve | Retrieval over a vector store |
structuredExtract | Schema-shaped extraction |
textClassify / textSummarize / textSplit | Common text processing primitives |
Agent loops in bloge-agent-ext build on these provider contracts but remain a separate extension runtime. See Agents.
Dynamic Subgraphs
dynamicSubGraph validates runtime-generated BLOGE DSL through a sandbox policy, compiles it with the current operator registry, and executes it as a nested sub-graph.
Use it when:
- an upstream step generates a small workflow
- generated DSL must be sandboxed before execution
- the resulting graph should still use normal BLOGE scheduling, resilience, and observability
Do not use it as a substitute for ordinary imports or checked-in DSL. Runtime graph generation needs strict policy, size limits, and audit visibility.
Design Rules
- Register only the operator categories the service actually uses.
- Keep provider-backed operators behind clear service abstractions.
- Treat operator input and output schemas as public contracts for lint, editor tooling, and agents.
- Prefer common operators for commodity integration work; write domain operators for business decisions and side effects.
- Add explicit timeout and fallback policies around operators that call external systems.
Next Steps
- Learn schema contracts in Schema & I/O.
- Design custom operators with Design Principles.
- Use AI operators with AI Agents & LLM Operators.