class Kuroko2::Workflow::Task::SubProcess
Public Instance Methods
execute()
click to toggle source
# File lib/autoload/kuroko2/workflow/task/sub_process.rb, line 5 def execute validate if (sub_process_id = token.context['sub_process_id']) instance = JobInstance.find(sub_process_id) if instance.working? :pass elsif instance.canceled_at? message = "(token #{token.uuid}) Sub process '##{instance.job_definition.id} #{instance.job_definition.name}' instance##{instance.job_definition.id}/#{instance.id} is canceled." token.job_instance.logs.warn(message) Kuroko2.logger.info(message) token.mark_as_failure :failure else token.context['sub_process_id'] = nil message = "(token #{token.uuid}) Sub process '##{instance.job_definition.id} #{instance.job_definition.name}' instance##{instance.job_definition.id}/#{instance.id} is finished." token.job_instance.logs.info(message) Kuroko2.logger.info(message) :next end else definition = JobDefinition.find(@node.option) launched_by = "'##{token.job_definition.id} #{token.job_definition.name}' instance##{token.job_definition.id}/#{token.job_instance.id}" instance = definition.create_instance(launched_by: launched_by) token.job_instance.logs.info("(token #{token.uuid}) Launched '##{instance.job_definition.id} #{instance.job_definition.name}' instance##{instance.job_definition.id}/#{instance.id} as a sub process.") token.context['sub_process_id'] = instance.id :pass end rescue ActiveRecord::RecordNotFound raise Workflow::AssertionError, "Job definition is not found for #{option}" end
validate()
click to toggle source
# File lib/autoload/kuroko2/workflow/task/sub_process.rb, line 43 def validate unless /\A\d+\z/ === option raise Workflow::AssertionError, "Option of sub process should be a number." end end