Skip to content

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 ​

java
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 ​

CategoryOperatorsRequired provider
HTTPhttpRequest, graphqlQuery, webhookTrigger, httpPollJDK HTTP client plus optional verifier
DatabasesqlQuery, sqlExecute, sqlBatch, noSqlQuery, redisDataSourceProvider, Redis/NoSQL providers where applicable
MessagingmessagePublish, messageConsume, eventEmitMessageBrokerProvider
AI / LLMllmChat, llmStreamingChat, embedding, textClassify, textSummarize, ragRetrieve, structuredExtract, textSplit, conversationLlmProvider, EmbeddingProvider, VectorStoreProvider, optional TokenEstimator
TransformjsonParse, jsonStringify, xmlParse, csvParse, templateRender, regexExtract, dataMappingNone
NotificationemailSend, smsSend, multiChannelNotifyMail and SMS providers
ApprovalapprovalRequest, approvalCheckApprovalService
StoragefileRead, fileWrite, objectStorageObjectStorageProvider for object storage
Cryptohash, encryptDecrypt, jwtSecretProvider for secret-backed operations
ValidationschemaValidate, ruleEngineNone
DynamicdynamicSubGraphCurrent 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.

OperatorUse case
llmChatText or structured chat completion
llmStreamingChatChunked model output
conversationConversation memory with full, sliding-window, or token-budget strategies
ragRetrieveRetrieval over a vector store
structuredExtractSchema-shaped extraction
textClassify / textSummarize / textSplitCommon 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 ​