protected function doStart($parentId)
{
$this->conn->beginTransaction();
$platform = $this->conn->getDatabasePlatform();
$variables = $this->variables;
$executionNextPollDate = null;
if (isset($variables['batchWaitInterval'])) {
if (!$variables['batchWaitInterval'] instanceof \DateInterval) {
throw new \ezcWorkflowExecutionException("Specified batch waiting interval has to be instance of DateInterval!");
}
$executionNextPollDate = new \DateTime("now");
$executionNextPollDate->add($variables['batchWaitInterval']);
$executionNextPollDate = $executionNextPollDate->format($platform->getDateTimeFormatString());
}
$serializer = $this->options->getSerializer();
$now = new \DateTime("now");
$data = array('workflow_id' => (int) $this->workflow->id, 'execution_parent' => $parentId, 'execution_started' => $now->format($platform->getDateTimeFormatString()), 'execution_variables' => $serializer->serialize($variables), 'execution_waiting_for' => $serializer->serialize($this->waitingFor), 'execution_threads' => $serializer->serialize($this->threads), 'execution_next_thread_id' => (int) $this->nextThreadId, 'execution_next_poll_date' => $executionNextPollDate);
if ($platform->prefersSequences()) {
$data['execution_id'] = (int) $this->conn->fetchColumn($platform->getSequenceNextValSQL($this->options->executionSequence()));
$this->id = $data['execution_id'];
}
$this->conn->insert($this->options->executionTable(), $data);
// execution_id
if (!$platform->prefersSequences()) {
$this->id = (int) $this->conn->lastInsertId();
}
}