Class: Temporalio::Activity::Definition::Info

Inherits:
Object
  • Object
show all
Defined in:
lib/temporalio/activity/definition.rb

Overview

Definition info of an activity. Activities are usually classes/instances that extend Temporalio::Activity::Definition, but definitions can also be manually created with a block via #initialize here.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, executor: :default, cancel_raise: true, raw_args: false) { ... } ⇒ Info

Manually create activity definition info. Most users will use an instance/class of Temporalio::Activity::Definition.

Parameters:

  • name (String, Symbol, nil)

    Name of the activity or nil for dynamic activity.

  • executor (Symbol) (defaults to: :default)

    Name of the executor.

  • cancel_raise (Boolean) (defaults to: true)

    Whether to raise in thread/fiber on cancellation.

  • raw_args (Boolean) (defaults to: false)

    Whether to use Converters::RawValues as arguments.

Yields:

  • Use this block as the activity.

Raises:

  • (ArgumentError)


163
164
165
166
167
168
169
170
171
# File 'lib/temporalio/activity/definition.rb', line 163

def initialize(name:, executor: :default, cancel_raise: true, raw_args: false, &block)
  @name = name
  raise ArgumentError, 'Must give block' unless block_given?

  @proc = block
  @executor = executor
  @cancel_raise = cancel_raise
  @raw_args = raw_args
end

Instance Attribute Details

#cancel_raiseBoolean (readonly)

Returns Whether to raise in thread/fiber on cancellation. Default is ‘true`.

Returns:

  • (Boolean)

    Whether to raise in thread/fiber on cancellation. Default is ‘true`.



115
116
117
# File 'lib/temporalio/activity/definition.rb', line 115

def cancel_raise
  @cancel_raise
end

#executorSymbol (readonly)

Returns Name of the executor. Default is ‘:default`.

Returns:

  • (Symbol)

    Name of the executor. Default is ‘:default`.



112
113
114
# File 'lib/temporalio/activity/definition.rb', line 112

def executor
  @executor
end

#nameString, ... (readonly)

Returns Name of the activity, or nil if the activity is dynamic.

Returns:

  • (String, Symbol, nil)

    Name of the activity, or nil if the activity is dynamic.



106
107
108
# File 'lib/temporalio/activity/definition.rb', line 106

def name
  @name
end

#procProc (readonly)

Returns Proc for the activity.

Returns:

  • (Proc)

    Proc for the activity.



109
110
111
# File 'lib/temporalio/activity/definition.rb', line 109

def proc
  @proc
end

#raw_argsBoolean (readonly)

Returns Whether to use Converters::RawValues as arguments.

Returns:



118
119
120
# File 'lib/temporalio/activity/definition.rb', line 118

def raw_args
  @raw_args
end

Class Method Details

.from_activity(activity) ⇒ Object

Obtain definition info representing the given activity, which can be a class, instance, or definition info.

Parameters:

Returns:

  • Info Obtained definition info.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/temporalio/activity/definition.rb', line 124

def self.from_activity(activity)
  # Class means create each time, instance means just call, definition
  # does nothing special
  case activity
  when Class
    unless activity < Definition
      raise ArgumentError,
            "Class '#{activity}' does not extend Temporalio::Activity::Definition"
    end

    details = activity._activity_definition_details
    new(
      name: details[:activity_name],
      executor: details[:activity_executor],
      cancel_raise: details[:activity_cancel_raise],
      raw_args: details[:activity_raw_args]
    ) { |*args| activity.new.execute(*args) } # Instantiate and call
  when Definition
    details = activity.class._activity_definition_details
    new(
      name: details[:activity_name],
      executor: details[:activity_executor],
      cancel_raise: details[:activity_cancel_raise],
      raw_args: details[:activity_raw_args]
    ) { |*args| activity.execute(*args) } # Just and call
  when Info
    activity
  else
    raise ArgumentError, "#{activity} is not an activity class, instance, or definition info"
  end
end