From 7e922e651e3993a5a5302bda1a32fbbd650fc5d6 Mon Sep 17 00:00:00 2001 From: Alexandra Dunn Date: Wed, 8 Nov 2023 09:05:30 -0800 Subject: [PATCH] WorkflowActionForm: run service as a background job --- app/forms/hyrax/forms/workflow_action_form.rb | 12 +++++++++--- app/jobs/workflow_action_job.rb | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 app/jobs/workflow_action_job.rb diff --git a/app/forms/hyrax/forms/workflow_action_form.rb b/app/forms/hyrax/forms/workflow_action_form.rb index a7509971c7..be87ba76c1 100644 --- a/app/forms/hyrax/forms/workflow_action_form.rb +++ b/app/forms/hyrax/forms/workflow_action_form.rb @@ -33,9 +33,15 @@ def initialize(current_ability:, work:, attributes: {}) def save return false unless valid? - Workflow::WorkflowActionService.run(subject: subject, - action: sipity_workflow_action, - comment: comment) + + WorkflowActionJob.perform_later( + comment: comment, + name: name, + user: current_user, + work_id: work.id.to_s, + workflow: subject.entity.workflow + ) + true end diff --git a/app/jobs/workflow_action_job.rb b/app/jobs/workflow_action_job.rb new file mode 100644 index 0000000000..4e646cc208 --- /dev/null +++ b/app/jobs/workflow_action_job.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true +class WorkflowActionJob < Hyrax::ApplicationJob + def perform(comment: nil, name: false, user:, work_id:, workflow:) + work = Hyrax.query_service.find_by(id: work_id) + subject = ::Hyrax::WorkflowActionInfo.new(work, user) + action = Sipity::WorkflowAction(name, workflow) + + ::Hyrax::Workflow::WorkflowActionService.run( + subject: subject, + action: action, + comment: comment + ) + end +end