Module: Conductor

Defined in:
lib/conductor.rb,
lib/conductor/version.rb,
lib/conductor/exceptions.rb,
lib/conductor/configuration.rb,
lib/conductor/worker/worker.rb,
lib/conductor/http/api_client.rb,
lib/conductor/http/models/role.rb,
lib/conductor/http/models/task.rb,
lib/conductor/http/rest_client.rb,
lib/conductor/http/models/group.rb,
lib/conductor/http/models/token.rb,
lib/conductor/client/task_client.rb,
lib/conductor/worker/task_runner.rb,
lib/conductor/workflow/task_type.rb,
lib/conductor/orkes/orkes_clients.rb,
lib/conductor/worker/task_context.rb,
lib/conductor/worker/task_handler.rb,
lib/conductor/client/prompt_client.rb,
lib/conductor/client/schema_client.rb,
lib/conductor/client/secret_client.rb,
lib/conductor/http/models/task_def.rb,
lib/conductor/http/models/workflow.rb,
lib/conductor/worker/worker_config.rb,
lib/conductor/http/models/poll_data.rb,
lib/conductor/worker/fiber_executor.rb,
lib/conductor/workflow/dsl/task_ref.rb,
lib/conductor/client/metadata_client.rb,
lib/conductor/client/workflow_client.rb,
lib/conductor/http/models/base_model.rb,
lib/conductor/http/models/permission.rb,
lib/conductor/http/models/schema_def.rb,
lib/conductor/http/models/tag_object.rb,
lib/conductor/http/models/target_ref.rb,
lib/conductor/worker/worker_registry.rb,
lib/conductor/workflow/dsl/input_ref.rb,
lib/conductor/workflow/llm/tool_call.rb,
lib/conductor/workflow/llm/tool_spec.rb,
lib/conductor/client/scheduler_client.rb,
lib/conductor/http/models/integration.rb,
lib/conductor/http/models/subject_ref.rb,
lib/conductor/http/models/task_result.rb,
lib/conductor/orkes/models/access_key.rb,
lib/conductor/worker/events/listeners.rb,
lib/conductor/worker/task_in_progress.rb,
lib/conductor/workflow/dsl/output_ref.rb,
lib/conductor/workflow/timeout_policy.rb,
lib/conductor/http/models/workflow_def.rb,
lib/conductor/client/integration_client.rb,
lib/conductor/http/models/bulk_response.rb,
lib/conductor/http/models/event_handler.rb,
lib/conductor/http/models/search_result.rb,
lib/conductor/http/models/task_exec_log.rb,
lib/conductor/http/models/workflow_task.rb,
lib/conductor/orkes/models/metadata_tag.rb,
lib/conductor/worker/events/http_events.rb,
lib/conductor/worker/ractor_task_runner.rb,
lib/conductor/workflow/llm/chat_message.rb,
lib/conductor/http/api/role_resource_api.rb,
lib/conductor/http/api/task_resource_api.rb,
lib/conductor/http/api/user_resource_api.rb,
lib/conductor/http/models/conductor_user.rb,
lib/conductor/workflow/workflow_executor.rb,
lib/conductor/client/authorization_client.rb,
lib/conductor/http/api/event_resource_api.rb,
lib/conductor/http/api/group_resource_api.rb,
lib/conductor/http/api/token_resource_api.rb,
lib/conductor/http/models/integration_api.rb,
lib/conductor/http/models/prompt_template.rb,
lib/conductor/orkes/models/rate_limit_tag.rb,
lib/conductor/workflow/dsl/switch_builder.rb,
lib/conductor/http/api/prompt_resource_api.rb,
lib/conductor/http/api/schema_resource_api.rb,
lib/conductor/http/api/secret_resource_api.rb,
lib/conductor/workflow/llm/embedding_model.rb,
lib/conductor/http/models/skip_task_request.rb,
lib/conductor/http/models/workflow_schedule.rb,
lib/conductor/worker/events/conductor_event.rb,
lib/conductor/worker/events/workflow_events.rb,
lib/conductor/workflow/dsl/parallel_builder.rb,
lib/conductor/workflow/dsl/workflow_builder.rb,
lib/conductor/http/api/metadata_resource_api.rb,
lib/conductor/http/api/workflow_resource_api.rb,
lib/conductor/http/models/integration_update.rb,
lib/conductor/http/models/task_result_status.rb,
lib/conductor/http/api/scheduler_resource_api.rb,
lib/conductor/http/models/upsert_user_request.rb,
lib/conductor/orkes/models/granted_permission.rb,
lib/conductor/worker/events/global_dispatcher.rb,
lib/conductor/worker/events/listener_registry.rb,
lib/conductor/http/models/upsert_group_request.rb,
lib/conductor/worker/events/task_runner_events.rb,
lib/conductor/worker/task_definition_registrar.rb,
lib/conductor/workflow/dsl/workflow_definition.rb,
lib/conductor/http/api/application_resource_api.rb,
lib/conductor/http/api/integration_resource_api.rb,
lib/conductor/http/models/authentication_config.rb,
lib/conductor/http/models/authorization_request.rb,
lib/conductor/http/models/conductor_application.rb,
lib/conductor/http/models/workflow_state_update.rb,
lib/conductor/http/models/workflow_test_request.rb,
lib/conductor/http/api/gateway_auth_resource_api.rb,
lib/conductor/http/models/generate_token_request.rb,
lib/conductor/http/models/integration_api_update.rb,
lib/conductor/http/models/rerun_workflow_request.rb,
lib/conductor/http/models/start_workflow_request.rb,
lib/conductor/worker/telemetry/metrics_collector.rb,
lib/conductor/http/api/authorization_resource_api.rb,
lib/conductor/http/api/workflow_bulk_resource_api.rb,
lib/conductor/worker/events/sync_event_dispatcher.rb,
lib/conductor/worker/telemetry/prometheus_backend.rb,
lib/conductor/configuration/authentication_settings.rb,
lib/conductor/http/models/workflow_status_constants.rb,
lib/conductor/http/models/prompt_template_test_request.rb,
lib/conductor/http/models/create_or_update_role_request.rb,
lib/conductor/http/models/create_or_update_application_request.rb

Overview

Main Conductor module Provides convenience methods for configuration

Defined Under Namespace

Modules: Client, Http, Orkes, Worker, Workflow Classes: ApiError, AuthenticationSettings, AuthorizationError, ConductorError, Configuration, ConfigurationError, NonRetryableError, TaskInProgress

Constant Summary collapse

VERSION =
'0.1.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configConductor::Configuration

Get or set the default configuration

Returns:



137
138
139
# File 'lib/conductor.rb', line 137

def config
  @config ||= Conductor::Configuration.new
end

Class Method Details

.configure {|Conductor::Configuration| ... } ⇒ Object

Configure Conductor with a block

Examples:

Conductor.configure do |config|
  config.server_url = 'http://localhost:7001/api'
  config.authentication_settings = Conductor::Configuration::AuthenticationSettings.new(
    key_id: 'my_key',
    key_secret: 'my_secret'
  )
end

Yields:



155
156
157
# File 'lib/conductor.rb', line 155

def configure
  yield(config) if block_given?
end

.workflow(name, version: nil, description: nil, executor: nil) { ... } ⇒ Workflow::Dsl::WorkflowDefinition

Define a workflow using the new Ruby-idiomatic DSL

Examples:

workflow = Conductor.workflow :order_processing, version: 1, executor: executor do
  user = simple :get_user, user_id: wf[:user_id]
  order = simple :create_order, user_email: user[:email]

  parallel do
    simple :send_confirmation, email: user[:email]
    simple :update_inventory, order_id: order[:id]
  end

  output order_id: order[:id], status: 'created'
end

workflow.register(overwrite: true)
result = workflow.execute(input: { user_id: 123 })

Parameters:

  • name (Symbol, String)

    Workflow name

  • version (Integer, nil) (defaults to: nil)

    Workflow version (optional)

  • description (String, nil) (defaults to: nil)

    Workflow description (optional)

  • executor (WorkflowExecutor, nil) (defaults to: nil)

    Optional executor for .register() and .execute()

Yields:

  • Block containing workflow definition

Returns:



181
182
183
184
185
186
187
188
189
190
# File 'lib/conductor.rb', line 181

def workflow(name, version: nil, description: nil, executor: nil, &block)
  builder = Workflow::Dsl::WorkflowBuilder.new(
    name.to_s,
    version: version,
    description: description,
    executor: executor
  )
  builder.instance_eval(&block)
  Workflow::Dsl::WorkflowDefinition.new(builder, executor: executor)
end