From 304bd2c437c844a1cd38a08922d3e519952ba271 Mon Sep 17 00:00:00 2001 From: Florisbosch Date: Wed, 31 May 2023 15:40:09 +0200 Subject: [PATCH 1/2] Check for the activity connection and use dispatchNow on sync queue --- src/ActivityStub.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/ActivityStub.php b/src/ActivityStub.php index 1872ad05..2825c1d9 100644 --- a/src/ActivityStub.php +++ b/src/ActivityStub.php @@ -4,6 +4,8 @@ namespace Workflow; +use Illuminate\Support\Arr; +use Illuminate\Support\Facades\Queue; use function React\Promise\all; use React\Promise\Deferred; use React\Promise\PromiseInterface; @@ -40,6 +42,26 @@ public static function make($activity, ...$arguments): PromiseInterface return resolve($result); } + $connection = Arr::get( + (new ReflectionClass($activity))->getDefaultProperties(), + 'connection' + ) ?: Queue::getDefaultDriver(); + + if ($connection === 'sync') { + $result = $activity::dispatchNow($context->index, $context->now, $context->storedWorkflow, ...$arguments); + $context->storedWorkflow->logs() + ->create([ + 'index' => $context->index, + 'now' => $context->now, + 'class' => $activity, + 'result' => Y::serialize($result), + ]); + + ++$context->index; + WorkflowStub::setContext($context); + return resolve($result); + } + $activity::dispatch($context->index, $context->now, $context->storedWorkflow, ...$arguments); ++$context->index; From 69fd352c81172f683c5e285c1a1d6b394f2ab53e Mon Sep 17 00:00:00 2001 From: Florisbosch Date: Wed, 31 May 2023 16:39:10 +0200 Subject: [PATCH 2/2] Fix stan --- src/ActivityStub.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ActivityStub.php b/src/ActivityStub.php index 2825c1d9..88aedc06 100644 --- a/src/ActivityStub.php +++ b/src/ActivityStub.php @@ -12,6 +12,7 @@ use function React\Promise\resolve; use Throwable; use Workflow\Serializers\Y; +use ReflectionClass; final class ActivityStub {