Class: MendixBridge::DSL::MicroflowBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mendix_bridge/dsl.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, returns, folder) ⇒ MicroflowBuilder

Returns a new instance of MicroflowBuilder.



344
345
346
347
348
349
350
351
# File 'lib/mendix_bridge/dsl.rb', line 344

def initialize(name, returns, folder)
  @name = name.to_s
  @return_type = returns&.to_s
  @folder = folder&.to_s
  @parameters = []
  @body = nil
  @execute_roles = []
end

Class Method Details

.build(name, returns: nil, folder: nil, &block) ⇒ Object



338
339
340
341
342
# File 'lib/mendix_bridge/dsl.rb', line 338

def self.build(name, returns: nil, folder: nil, &block)
  builder = new(name, returns, folder)
  builder.instance_eval(&block) if block
  builder.result
end

Instance Method Details

#body(source) ⇒ Object

Raises:

  • (ArgumentError)


361
362
363
364
365
# File 'lib/mendix_bridge/dsl.rb', line 361

def body(source)
  raise ArgumentError, "microflow body is already declared" if @body

  @body = source.to_s.strip
end

#execute_role(role) ⇒ Object

Raises:

  • (ArgumentError)


367
368
369
370
371
372
# File 'lib/mendix_bridge/dsl.rb', line 367

def execute_role(role)
  role = role.to_s
  raise ArgumentError, "duplicate execute role: #{role}" if @execute_roles.include?(role)

  @execute_roles << role
end

#parameter(name, type) ⇒ Object



353
354
355
356
357
358
359
# File 'lib/mendix_bridge/dsl.rb', line 353

def parameter(name, type)
  if @parameters.any? { |parameter| parameter.name == name.to_s }
    raise ArgumentError, "duplicate microflow parameter: #{name}"
  end

  @parameters << Model::FlowParameter.new(name: name.to_s, type: type.to_s)
end

#resultObject

Raises:

  • (ArgumentError)


374
375
376
377
378
379
380
381
382
383
384
385
# File 'lib/mendix_bridge/dsl.rb', line 374

def result
  raise ArgumentError, "microflow #{@name} requires a body" if @body.nil? || @body.empty?

  Model::Microflow.new(
    name: @name,
    parameters: @parameters,
    return_type: @return_type,
    folder: @folder,
    body: @body,
    execute_roles: @execute_roles
  )
end