def add_process(self, plugins=None, filter=None):
        plugins_list = []

        # Add plugins by name
        if plugins:
            for plugin in plugins:
                plugins_list.append(self.get_plugin(plugin))

        # Add plugins by filter
        if filter:
            plugins_list.extend(self.get_plugins(filter))

        # Raise exception if no plugins was found
        if len(plugins_list) == 0:
            raise NoPluginsFound

        process = {
            'plugins' : plugins_list,
        }

        plugins_name = []
        for p in plugins_list:
            plugins_name.append(p.name)

        lg.info("Forcing run of %d plugins: %s" % (len(plugins_list), ', '.join(plugins_name)))

        # Add process into the list
        self.processes.append(process)
        id = len(self.processes)-1

        # Force run for each plugin and clear forced_result
        for plugin in plugins_list:
            plugin.forced = True
            plugin.forced_result = None
            plugin.run()

        return id
Utility method used by copy.deepcopy().
dataset/ETHPy150Open gooddata/smoker/smoker/server/plugins/__init__.py/PluginManager.add_process--crossover with--dataset/ETHPy150Open cloudera/hue/desktop/core/ext-py/Django-1.6.10/django/utils/tree.py/Node.__deepcopy__