/** * Serialize data of WorkflowItem * * @param WorkflowItem $workflowItem * @param UnitOfWork $uow */ protected function serialize(WorkflowItem $workflowItem, UnitOfWork $uow) { if ($workflowItem->getData()->isModified()) { $oldValue = $workflowItem->getSerializedData(); $this->serializer->setWorkflowName($workflowItem->getWorkflowName()); $serializedData = $this->serializer->serialize($workflowItem->getData(), $this->format); $workflowItem->setSerializedData($serializedData); $uow->propertyChanged($workflowItem, 'serializedData', $oldValue, $serializedData); } }
/** * Serialize data of WorkflowItem * * @param WorkflowItem $workflowItem */ protected function serialize(WorkflowItem $workflowItem) { $this->serializer->setWorkflowName($workflowItem->getWorkflowName()); // Cloning workflow data instance to prevent changing of original data. $workflowData = clone $workflowItem->getData(); // entity attribute must not be serialized $workflowData->remove($workflowItem->getDefinition()->getEntityAttributeName()); $serializedData = $this->serializer->serialize($workflowData, $this->format); $workflowItem->setSerializedData($serializedData); $workflowItem->getData()->setModified(false); }
/** * Get data * * @return WorkflowData * @throws WorkflowException If data cannot be deserialized */ public function getData() { if (!$this->data) { if (!$this->serializedData) { $this->data = new WorkflowData(); } elseif (!$this->serializer) { throw new WorkflowException('Cannot deserialize data of workflow item. Serializer is not available.'); } else { $this->serializer->setWorkflowName($this->workflowName); $this->data = $this->serializer->deserialize($this->serializedData, 'Oro\\Bundle\\WorkflowBundle\\Model\\WorkflowData', $this->serializeFormat); $this->data->set($this->getDefinition()->getEntityAttributeName(), $this->getEntity(), false); } } return $this->data; }