/** * @param ProcessData $processData * @param TaskListPosition $taskListPosition * @param WorkflowMessage $previousMessage * @param WorkflowEngine $workflowEngine */ protected function performProcessData(ProcessData $processData, TaskListPosition $taskListPosition, WorkflowMessage $previousMessage, WorkflowEngine $workflowEngine) { $workflowMessage = $previousMessage->prepareDataProcessing($taskListPosition, $processData->target(), $processData->metadata()); if (!in_array($workflowMessage->payload()->getTypeClass(), $processData->allowedTypes())) { $workflowMessage->changeProcessingType($processData->preferredType()); } try { $workflowEngine->dispatch($workflowMessage); } catch (CommandDispatchException $ex) { $this->receiveMessage(LogMessage::logException($ex->getPrevious(), $workflowMessage), $workflowEngine); } catch (\Exception $ex) { $this->receiveMessage(LogMessage::logException($ex, $workflowMessage), $workflowEngine); } }