void instance_ChildServiceRequested(object sender, ServiceRequestedEventArgs e) { Console.WriteLine(e.RequestedService); ServiceInstance instance = e.RequestedService; instance.StateChanged += new EventHandler <ServiceStateChangedEventArgs>(instance_StateChanged); instance.OutcomeReported += new EventHandler(instance_OutcomeReported); instance.ChildServiceRequested += new EventHandler <ServiceRequestedEventArgs>(instance_ChildServiceRequested); instance.ProgressReported += new EventHandler(instance_ProgressReported); instance.Initialize(); if (e.RequestedService.Configuration.Options["IsStep"] != null) { int sessionID = int.Parse(e.RequestedService.ParentInstance.ParentInstance.Configuration.Options["SessionID"]); lock (StepInstances) StepInstances[sessionID] = e.RequestedService; } if (e.RequestedService.Configuration.Options["WizardRole"] == "ExecutorContainer") { int sessionID = int.Parse(e.RequestedService.ParentInstance.Configuration.Options["SessionID"]); lock (MainExecuters) MainExecuters[sessionID] = e.RequestedService; } if (e.RequestedService.ParentInstance.Configuration.Options["WizardRole"] == "ExecutorContainer") { int sessionID = int.Parse(e.RequestedService.ParentInstance.ParentInstance.Configuration.Options["SessionID"]); lock (ExecuterSteps) { if (ExecuterSteps.ContainsKey(sessionID)) { ExecuterSteps[sessionID].Add(e.RequestedService); } else { List <ServiceInstance> listOfServiceInstances = new List <ServiceInstance>(); listOfServiceInstances.Add(e.RequestedService); ExecuterSteps.Add(sessionID, listOfServiceInstances); } } } }
/// <summary> /// Hanlde all necessary operations to run the service. /// </summary> /// <param name="service">The service to run.</param> private void RunService(ServiceInstance service) { service.StateChanged += delegate(object sender, ServiceStateChangedEventArgs e) { if (service.State == ServiceState.Ready) { service.Start(); } }; try { service.Initialize(); } catch (Exception ex) { Log.Write(String.Format("Exception occured while performing RunService.", service.Configuration.Name), ex); } }
public WizardSession Start(string WizardName) { //Debugger.Launch(); //load the service from configuration file //CHANGED 1 (Service is taken from app.config- what to do if service not found?) int wizardID; ServiceElement requestedWizardConfiguration = ServicesConfiguration.Services[WizardName]; if (requestedWizardConfiguration == null) { throw new Exception("Wizard cannot be found"); } //Get service data wizardID = int.Parse(requestedWizardConfiguration.Options["WizardID"]); //to insert in database it's int future //first step name ExecutionStepElement FirstStepCollector = GetFirstCollectorStep(requestedWizardConfiguration.ExecutionSteps); if (FirstStepCollector == null) { throw new Exception("No step collector found"); } ActiveServiceElement configurationToRun = new ActiveServiceElement(requestedWizardConfiguration); //Initalize the main wizard service (account service...etc) ServiceInstance instance = Service.CreateInstance(configurationToRun); instance.ChildServiceRequested += new EventHandler <ServiceRequestedEventArgs>(instance_ChildServiceRequested); instance.ProgressReported += new EventHandler(instance_ProgressReported); instance.StateChanged += new EventHandler <ServiceStateChangedEventArgs>(instance_StateChanged); instance.OutcomeReported += new EventHandler(instance_OutcomeReported); instance.Initialize(); object sessionID = null; //Open new session by insert values in to the wizards_sessions_data table using (DataManager.Current.OpenConnection()) { using (SqlCommand sqlCommand = DataManager.CreateCommand(@"INSERT INTO Wizards_Sessions_Data (WizardID,CurrentStepName,ServiceInstanceID,WizardStatus) Values (@WizardID:Int,@CurrentStepName:NvarChar,@ServiceInstanceID:BigInt,@WizardStatus:Int);SELECT @@IDENTITY" )) { sqlCommand.Parameters["@WizardID"].Value = wizardID; sqlCommand.Parameters["@CurrentStepName"].Value = FirstStepCollector.Name; sqlCommand.Parameters["@ServiceInstanceID"].Value = instance.InstanceID; sqlCommand.Parameters["@WizardStatus"].Value = WizardStatus.Collect; sessionID = sqlCommand.ExecuteScalar(); if (sessionID == null) { throw new Exception("Error: Session not created"); } } } instance.Configuration.Options["SessionID"] = sessionID.ToString(); //Create WizardSession object to return WizardSession wizardSession = new WizardSession(); wizardSession.SessionID = System.Convert.ToInt32(sessionID); //@@IDENTITY IS DECIMAL wizardSession.WizardID = wizardID; wizardSession.CurrentStep = new StepConfiguration() { StepName = FirstStepCollector.Name }; return(wizardSession); }