pub struct WorkflowStepEnqueueBuilder<'a> { /* private fields */ }Expand description
Builder for WorkflowStepEnqueue.
Use this builder to configure optional per-step execution settings and dependencies.
Defaults:
organization_id:Nonepriority:Nonemax_attempts:Nonetimeout_seconds:Nonestage:Some(JobStage::Queued)dependencies: empty
§Examples
use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({"profile_id": "p_123"});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("c14"), JobType::new("seller.profile.research.c14.pain_mappings"), &payload)
.depends_on_success(&[StepKey::new("c6"), StepKey::new("c7")])
.try_build()
.expect("step payload should be valid");
assert_eq!(step.stage(), Some(JobStage::Queued));
assert_eq!(step.dependencies().len(), 2);Implementations§
Source§impl<'a> WorkflowStepEnqueueBuilder<'a>
impl<'a> WorkflowStepEnqueueBuilder<'a>
Sourcepub fn new(
step_key: StepKey<'a>,
job_type: JobType<'a>,
payload: &'a Value,
) -> Self
pub fn new( step_key: StepKey<'a>, job_type: JobType<'a>, payload: &'a Value, ) -> Self
Creates a new step builder with required fields and default options.
The default stage is Some(JobStage::Queued).
§Examples
use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.stage(), Some(JobStage::Queued));Sourcepub fn try_new(
step_key: &'a str,
job_type: &'a str,
payload: &'a Value,
) -> Result<Self, WorkflowBuildError>
pub fn try_new( step_key: &'a str, job_type: &'a str, payload: &'a Value, ) -> Result<Self, WorkflowBuildError>
Creates a new step builder from raw identifier strings with checked validation.
§Errors
Returns WorkflowBuildError when step_key or job_type is blank.
Sourcepub fn new_external(step_key: StepKey<'a>, payload: &'a Value) -> Self
pub fn new_external(step_key: StepKey<'a>, payload: &'a Value) -> Self
Creates a new external step builder with required fields and no queue settings.
Sourcepub fn organization_id(self, organization_id: Uuid) -> Self
pub fn organization_id(self, organization_id: Uuid) -> Self
Sets an execution-organization override for this step.
Sourcepub fn clear_organization_id(self) -> Self
pub fn clear_organization_id(self) -> Self
Clears any previously configured execution-organization override.
Sourcepub fn try_new_external(
step_key: &'a str,
payload: &'a Value,
) -> Result<Self, WorkflowBuildError>
pub fn try_new_external( step_key: &'a str, payload: &'a Value, ) -> Result<Self, WorkflowBuildError>
Creates a new external step builder from a raw step key with checked validation.
§Errors
Returns WorkflowBuildError when step_key is blank.
Sourcepub fn priority(self, priority: i32) -> Self
pub fn priority(self, priority: i32) -> Self
Sets job priority override for this step.
§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.priority(10)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.priority(), Some(10));Sourcepub fn clear_priority(self) -> Self
pub fn clear_priority(self) -> Self
Clears any previously configured priority override.
Sourcepub fn max_attempts(self, max_attempts: i32) -> Self
pub fn max_attempts(self, max_attempts: i32) -> Self
Sets max retry attempts override for this step.
§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.max_attempts(5)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.max_attempts(), Some(5));Sourcepub fn clear_max_attempts(self) -> Self
pub fn clear_max_attempts(self) -> Self
Clears any previously configured max-attempts override.
Sourcepub fn timeout_seconds(self, timeout_seconds: i32) -> Self
pub fn timeout_seconds(self, timeout_seconds: i32) -> Self
Sets timeout override (in seconds) for this step.
§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.timeout_seconds(300)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.timeout_seconds(), Some(300));Sourcepub fn clear_timeout_seconds(self) -> Self
pub fn clear_timeout_seconds(self) -> Self
Clears any previously configured timeout override.
Sourcepub fn stage(self, stage: JobStage) -> Self
pub fn stage(self, stage: JobStage) -> Self
Sets the initial step stage.
§Examples
use runledger_core::jobs::{JobStage, JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.stage(JobStage::Scheduled)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.stage(), Some(JobStage::Scheduled));Sourcepub fn clear_stage(self) -> Self
pub fn clear_stage(self) -> Self
Clears any previously configured step stage.
Sourcepub fn set_dependencies(
self,
dependencies: impl IntoIterator<Item = WorkflowStepDependencySpec<'a>>,
) -> Self
pub fn set_dependencies( self, dependencies: impl IntoIterator<Item = WorkflowStepDependencySpec<'a>>, ) -> Self
Replaces all previously configured dependencies with dependencies.
Sourcepub fn dependency(self, dependency: WorkflowStepDependencySpec<'a>) -> Self
pub fn dependency(self, dependency: WorkflowStepDependencySpec<'a>) -> Self
Appends one dependency specification.
Sourcepub fn depends_on_terminal(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self
pub fn depends_on_terminal(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self
Adds dependencies released when prerequisite steps reach a terminal state.
Appends to any existing dependencies in call order.
§Examples
use runledger_core::jobs::{StepKey, JobType, WorkflowDependencyReleaseMode, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.b"), JobType::new("jobs.test.b"), &payload)
.depends_on_terminal(&[StepKey::new("step.a")])
.try_build()
.expect("step payload should be valid");
assert_eq!(
step.dependencies()[0].release_mode,
Some(WorkflowDependencyReleaseMode::OnTerminal)
);Sourcepub fn depends_on_success(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self
pub fn depends_on_success(self, prerequisite_step_keys: &[StepKey<'a>]) -> Self
Adds dependencies released only when prerequisite steps succeed.
Appends to any existing dependencies in call order.
§Examples
use runledger_core::jobs::{StepKey, JobType, WorkflowDependencyReleaseMode, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.b"), JobType::new("jobs.test.b"), &payload)
.depends_on_success(&[StepKey::new("step.a")])
.try_build()
.expect("step payload should be valid");
assert_eq!(
step.dependencies()[0].release_mode,
Some(WorkflowDependencyReleaseMode::OnSuccess)
);Sourcepub fn try_build(self) -> Result<WorkflowStepEnqueue<'a>, WorkflowBuildError>
pub fn try_build(self) -> Result<WorkflowStepEnqueue<'a>, WorkflowBuildError>
Finalizes the builder and returns a validated WorkflowStepEnqueue.
§Errors
Returns WorkflowBuildError if required fields are empty or
dependencies are invalid (blank, duplicate, or self-referential).
§Examples
use runledger_core::jobs::{JobType, StepKey, WorkflowStepEnqueueBuilder};
let payload = serde_json::json!({});
let step = WorkflowStepEnqueueBuilder::new(StepKey::new("step.a"), JobType::new("jobs.test.a"), &payload)
.try_build()
.expect("step payload should be valid");
assert_eq!(step.step_key(), StepKey::new("step.a"));Trait Implementations§
Source§impl<'a> Clone for WorkflowStepEnqueueBuilder<'a>
impl<'a> Clone for WorkflowStepEnqueueBuilder<'a>
Source§fn clone(&self) -> WorkflowStepEnqueueBuilder<'a>
fn clone(&self) -> WorkflowStepEnqueueBuilder<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more