Check dependency for the given task_tag and start task. For dependency checking see
		:meth:`.WTaskDependencyRegistryStorage.dependency_check`. If task is already started then it must be
		stopped before it will be started again.

		:param task_tag: task to start. Any required dependencies will be started automatically.
		:param skip_unresolved: flag controls this method behaviour for tasks that could not be found. \
		When False, method will raise an exception if task tag was set in dependency and the related task \
		wasn't found in registry. When True that unresolvable task will be omitted

		:return: None

def start_task(self, task_tag, skip_unresolved=False):
		""" Check dependency for the given task_tag and start task. For dependency checking see
		:meth:`.WTaskDependencyRegistryStorage.dependency_check`. If task is already started then it must be
		stopped before it will be started again.

		:param task_tag: task to start. Any required dependencies will be started automatically.
		:param skip_unresolved: flag controls this method behaviour for tasks that could not be found. \
		When False, method will raise an exception if task tag was set in dependency and the related task \
		wasn't found in registry. When True that unresolvable task will be omitted

		:return: None
		"""
		if self.started_tasks(task_registry_id=task_tag) is not None:
			return

		task_cls = self.tasks_by_tag(task_tag)
		if task_cls is None:
			raise RuntimeError("Task '%s' wasn't found" % task_tag)

		self.dependency_check(task_cls, skip_unresolved=skip_unresolved)

		def start_dependency(start_task_cls):
			for dependency in start_task_cls.__dependency__:

				if self.started_tasks(task_registry_id=dependency) is not None:
					continue

				dependent_task = self.tasks_by_tag(dependency)

				if dependent_task is not None:
					start_dependency(dependent_task)

			self.__started.append(start_task_cls.start_dependent_task())

		start_dependency(task_cls)