public JobProcessManager(IFactory factory)
        {
            Logger.Log.Instance.Info("JobProcessManager. Constructor. Initialize job chunk provider and dispatcher");
            _factory = factory;
            _jobChunksProvider = factory.CreateChunksProvider();
            
            _jobJobChunkRegistrator = factory.CreateJobChunkRegistrator();
            _jobJobChunkRegistrator.JobMapComplete += new Action<object, string>(_jobJobChunkRegistrator_JobMapComplete);
            _jobJobChunkRegistrator.JobReduceComplete += new Action<object, string>(_jobJobChunkRegistrator_JobReduceComplete);

            _chunkDispatcher = factory.CreateChunkDispatcher(_jobJobChunkRegistrator);

            _jobHistoryUpdater = factory.CreateJobHistoryUpdater();

            _jobChunkResultWatcher = factory.CreateChunkResultWatcher();
            _jobChunkResultWatcher.ChunkResultArrive += new Action<object, ChunkResultMessage>(_chunkResultWatcher_ChunkResultArrive);
            _jobChunkResultWatcher.StartWatch();
            
            _jobProcessDataCollection = new Dictionary<string, JobProcessData>();
        }