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:, instance: nil, executor: :default, cancel_raise: true, raw_args: false, arg_hints: nil, result_hint: nil) { ... } ⇒ Info

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

Yields:

  • Use this block as the activity.

Raises:

  • (ArgumentError)


205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/temporalio/activity/definition.rb', line 205

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

  @proc = block
  @executor = executor
  @cancel_raise = cancel_raise
  @raw_args = raw_args
  @arg_hints = arg_hints
  @result_hint = result_hint
  Internal::ProtoUtils.assert_non_reserved_name(name)
end

Instance Attribute Details

#arg_hintsArray<Object>? (readonly)



148
149
150
# File 'lib/temporalio/activity/definition.rb', line 148

def arg_hints
  @arg_hints
end

#cancel_raiseBoolean (readonly)



142
143
144
# File 'lib/temporalio/activity/definition.rb', line 142

def cancel_raise
  @cancel_raise
end

#executorSymbol (readonly)



139
140
141
# File 'lib/temporalio/activity/definition.rb', line 139

def executor
  @executor
end

#instanceObject, ... (readonly)



133
134
135
# File 'lib/temporalio/activity/definition.rb', line 133

def instance
  @instance
end

#nameString, ... (readonly)



130
131
132
# File 'lib/temporalio/activity/definition.rb', line 130

def name
  @name
end

#procProc (readonly)



136
137
138
# File 'lib/temporalio/activity/definition.rb', line 136

def proc
  @proc
end

#raw_argsBoolean (readonly)



145
146
147
# File 'lib/temporalio/activity/definition.rb', line 145

def raw_args
  @raw_args
end

#result_hintObject? (readonly)



151
152
153
# File 'lib/temporalio/activity/definition.rb', line 151

def result_hint
  @result_hint
end

Class Method Details

.from_activity(activity) ⇒ Object

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



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# File 'lib/temporalio/activity/definition.rb', line 157

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],
      instance: proc { activity.new },
      executor: details[:activity_executor],
      cancel_raise: details[:activity_cancel_raise],
      raw_args: details[:activity_raw_args],
      arg_hints: details[:activity_arg_hints],
      result_hint: details[:activity_result_hint]
    ) { |*args| Context.current.instance&.execute(*args) }
  when Definition
    details = activity.class._activity_definition_details
    new(
      name: details[:activity_name],
      instance: activity,
      executor: details[:activity_executor],
      cancel_raise: details[:activity_cancel_raise],
      raw_args: details[:activity_raw_args],
      arg_hints: details[:activity_arg_hints],
      result_hint: details[:activity_result_hint]
    ) { |*args| Context.current.instance&.execute(*args) }
  when Info
    activity
  else
    raise ArgumentError, "#{activity} is not an activity class, instance, or definition info"
  end
end