/** * Convert state object to model representation. * * @param State $state The state being persisted. * * @return StateModel */ private function convertStateToModel(State $state) { $model = new StateModel(); $model->workflowName = $state->getWorkflowName(); $model->entityId = (string) $state->getEntityId(); $model->transitionName = $state->getTransitionName(); $model->stepName = $state->getStepName(); $model->success = $state->isSuccessful(); $model->errors = $this->serialize($state->getErrors()); $model->data = $this->serialize($state->getData()); $model->reachedAt = $state->getReachedAt()->getTimestamp(); $model->tstamp = time(); return $model; }
function it_latest_state_from_history(EntityId $entityId, State $state, State $failedState) { $failedState->isSuccessful()->willReturn(false); $failedState->getStepName()->willReturn('failed'); $state->isSuccessful()->willReturn(true); $state->getStepName()->willReturn('start'); $state->getWorkflowName()->shouldBeCalled(); $this->beConstructedThrough('reconstitute', array($entityId, static::$entity, array($state, $failedState))); $this->getLatestState(false)->shouldReturn($failedState); }
/** * Apply a new state. * * @param State $state The state being assigned. * * @return void */ private function apply(State $state) { // only change current step if transition was successful if ($state->isSuccessful()) { $this->currentStepName = $state->getStepName(); $this->workflowName = $state->getWorkflowName(); } elseif (!$this->isWorkflowStarted()) { $this->workflowName = $state->getWorkflowName(); } $this->stateHistory[] = $state; }