Root README covers architecture, Rust builder API quick start, YAML pipeline quick start, provider table, deno executor overview, feature flags, and testing instructions. Per-crate READMEs follow consistent structure: one-liner, what it does, quick start code example, API reference, configuration, testing, license. Engineering-confident tone throughout.
wfe-opensearch
OpenSearch search index provider for the WFE workflow engine.
What it does
Implements the SearchIndex trait backed by OpenSearch. Indexes workflow instances as documents and supports full-text search with bool queries, term filters (status, reference), date range filters, and pagination. The index mapping is created automatically on start() if it does not already exist.
Quick start
use wfe_opensearch::OpenSearchIndex;
let index = OpenSearchIndex::new(
"http://localhost:9200",
"wfe_workflows",
)?;
// Create the index mapping (idempotent)
index.start().await?;
// Index a workflow
index.index_workflow(&workflow_instance).await?;
// Search with filters
use wfe_core::traits::search::{SearchFilter, SearchIndex};
let page = index.search(
"deploy", // free-text query
0, // skip
20, // take
&[SearchFilter::Status(WorkflowStatus::Complete)],
).await?;
API
| Type | Trait |
|---|---|
OpenSearchIndex |
SearchIndex |
Key methods:
| Method | Description |
|---|---|
new(url, index_name) |
Create a provider pointing at an OpenSearch instance |
start() |
Create the index with mappings if it does not exist |
index_workflow(instance) |
Index or update a workflow document |
search(terms, skip, take, filters) |
Bool query with filters, returns Page<WorkflowSearchResult> |
client() |
Access the underlying OpenSearch client |
index_name() |
Get the configured index name |
Search filters
| Filter | OpenSearch mapping |
|---|---|
SearchFilter::Status(status) |
term query on status (keyword) |
SearchFilter::Reference(ref) |
term query on reference (keyword) |
SearchFilter::DateRange { field, before, after } |
range query on date fields |
Free-text terms run a multi_match across description, reference, and workflow_definition_id.
Index mapping
The index uses the following field types:
| Field | Type |
|---|---|
id |
keyword |
workflow_definition_id |
keyword |
version |
integer |
status |
keyword |
reference |
keyword |
description |
text |
data |
object (disabled -- stored but not indexed) |
create_time |
date |
complete_time |
date |
Configuration
Constructor takes two arguments:
| Parameter | Example | Description |
|---|---|---|
url |
http://localhost:9200 |
OpenSearch server URL |
index_name |
wfe_workflows |
Index name for workflow documents |
Security plugin is not required. For local development, run OpenSearch with DISABLE_SECURITY_PLUGIN=true.
Testing
Requires a running OpenSearch instance. Use the project docker-compose:
docker compose up -d opensearch
cargo test -p wfe-opensearch
Default test connection: http://localhost:9200
License
MIT