/** * @see parent::resolveJobsForQueue() */ public static function resolveJobsForQueue() { parent::resolveJobsForQueue(); $pageSize = static::JOB_QUEUE_PAGE_SIZE; $offset = 0; $timeStamp = time(); do { $queueModels = static::getModelsTResolveToJobQueue($pageSize, $offset, static::getType(), $timeStamp); $offset = $offset + $pageSize; if (is_array($queueModels) && count($queueModels) > 0) { foreach ($queueModels as $queueModel) { InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($queueModel, static::getType()); } } } while (is_array($queueModels) && count($queueModels) > 0); }
protected function afterSave() { InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($this, 'ByTimeWorkflowInQueue'); parent::afterSave(); }
public function testResolveToAddJobToQueueAfterSaveOfModelWithNewModel() { //First test with a null processDaetTime $byTimeWorkflowInQueue = new ByTimeWorkflowInQueueForTest(); $byTimeWorkflowInQueue->modelClassName = get_class(self::$testModel); $byTimeWorkflowInQueue->modelItem = self::$testModel; $byTimeWorkflowInQueue->processDateTime = '0000-00-00 00:00:00'; $byTimeWorkflowInQueue->savedWorkflow = self::$savedWorkflow; $byTimeWorkflowInQueue->setIsNewModel(true); //simulates beforeSave behavior $this->assertCount(0, Yii::app()->jobQueue->getAll()); InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc'); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(1, $jobs); $this->assertEquals('abc', $jobs[5][0]['jobType']); //now test with processDateTime set Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); $byTimeWorkflowInQueue = new ByTimeWorkflowInQueueForTest(); $byTimeWorkflowInQueue->modelClassName = get_class(self::$testModel); $byTimeWorkflowInQueue->modelItem = self::$testModel; $byTimeWorkflowInQueue->processDateTime = '2037-02-02 00:00:00'; $byTimeWorkflowInQueue->savedWorkflow = self::$savedWorkflow; $byTimeWorkflowInQueue->setIsNewModel(true); //simulates beforeSave behavior $this->assertCount(0, Yii::app()->jobQueue->getAll()); InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc'); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(1, $jobs); $this->assertTrue(key($jobs) > 315360000); //Greater than 10 years in future confirms it is not soon... $firstKey = key($jobs); //now change processDateTime, and make sure the job is different. $saved = $byTimeWorkflowInQueue->save(); $this->assertTrue($saved); $byTimeWorkflowInQueue->processDateTime = '2037-03-02 00:00:00'; Yii::app()->jobQueue->deleteAll(); $this->assertCount(0, Yii::app()->jobQueue->getAll()); InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc'); $jobs = Yii::app()->jobQueue->getAll(); $this->assertCount(1, $jobs); $this->assertTrue(key($jobs) > 315360000); //Greater than 10 years in future confirms it is not soon... $this->assertNotEquals($firstKey, key($jobs)); }