public function getWorkflowDefinition($id)
	{
		if ( ! $this->isValidWorkflowId($id)) {
			throw new WorkflowException('Invalid workflow Id : '.VarDumper::dumpAsString($id));
		}

		if ( ! isset($this->_workflowDef[$id]) ) {

			if( $this->getDefinitionCache() != null ) {
				$cache = $this->getDefinitionCache();
				$key = $cache->buildKey('yii2-workflow-def-'.$id);
				if( $cache->exists($key) ) {
					$this->_workflowDef[$id] = $cache->get($key);
				} else {
					$this->_workflowDef[$id] = $this->getDefinitionLoader()->loadDefinition($id,$this);
					$cache->set($key, $this->_workflowDef[$id]);
				}
			} else {
				$this->_workflowDef[$id] = $this->getDefinitionLoader()->loadDefinition($id,$this);
			}
		}
		return $this->_workflowDef[$id];
	}