/** * @param string $eventId * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems * @param array $data * * @return array */ public function triggerEvent($eventId, array $orderItems, $data) { $identifier = $this->buildIdentifierForOrderItemsLock($orderItems); $this->triggerLocker->acquire($identifier); try { $triggerEventResult = $this->stateMachine->triggerEvent($eventId, $orderItems, $data); } finally { $this->triggerLocker->release($identifier); } return $triggerEventResult; }
/** * @param \Spryker\Zed\Oms\Business\OrderStateMachine\OrderStateMachineInterface $orderStateMachine * * @return int */ public function checkTimeouts(OrderStateMachineInterface $orderStateMachine) { $orderItems = $this->findItemsWithExpiredTimeouts(); $countAffectedItems = $orderItems->count(); $groupedOrderItems = $this->groupItemsByEvent($orderItems); foreach ($groupedOrderItems as $event => $orderItems) { $orderStateMachine->triggerEvent($event, $orderItems, []); } return $countAffectedItems; }