public override void ExecuteUnderTransaction(JobExecutionContext context) { logger.Info("Start QueueMailAccountJob...."); var smtpServer = context.JobDetail.JobDataMap["SmtpServer"] != null ? context.JobDetail.JobDataMap["SmtpServer"].ToString() : string.Empty; var fromEmailAddress = context.JobDetail.JobDataMap["FromEmailAddress"] != null ? context.JobDetail.JobDataMap["FromEmailAddress"].ToString() : string.Empty; var bccEmailAddress = context.JobDetail.JobDataMap["BccEmailAddress"] != null ? context.JobDetail.JobDataMap["BccEmailAddress"].ToString() : string.Empty; if (string.IsNullOrEmpty(smtpServer) || string.IsNullOrEmpty(fromEmailAddress)) { throw new NullReferenceException("QueueMailAccountJob: fromEmailAddress and smtpServer must not be null"); } var accountQueueMailService = (IAccountQueueMailService)ServiceLocator.Current.GetService(typeof(IAccountQueueMailService)); if (accountQueueMailService == null) { throw new NullReferenceException("accountQueueMailService must not be null"); } var accountMailQueues = accountQueueMailService.GetAccountMailQueueByStatus(QueueStatusTypeEnum.CREATED); using (var workflowRuntime = new WorkflowRuntime()) { workflowRuntime.AddService(new TerminateHelperService()); using (var manager = new WorkflowRuntimeManager(workflowRuntime)) { manager.MessageEvent += manager_MessageEvent; for (var i = 0; i < accountMailQueues.Count; i++) { var wfArguments = new Dictionary <string, object> { { "AccountMailQueueId", accountMailQueues[i].Id }, { "SmtpServer", smtpServer }, { "FromEmailAddress", fromEmailAddress }, { "BccEmailAddress", bccEmailAddress } }; var wrapper = manager.StartWorkflow(typeof(MailAccountWorkflow), wfArguments); var waitTest = manager.WaitOne(wrapper.Id, 30000); if (wrapper.Exception != null) { logger.Error(wrapper.Exception.Message); } } manager.WaitAll(300000); manager.ClearAllWorkflows(); } } }
public override void ExecuteUnderTransaction(JobExecutionContext context) { logger.Info("Start ChargingOrderJob...."); var paymentUrlProvider = context.JobDetail.JobDataMap["PaymentUrlProvider"].ToString(); var backupPaymentUrlProvider = context.JobDetail.JobDataMap["BackupPaymentUrlProvider"].ToString(); var orderService = (IOrderService)ServiceLocator.Current.GetService(typeof(IOrderService)); if (orderService == null) { throw new NullReferenceException("orderService must not be null"); } var orders = orderService.GetOrdersByStatus(OrderStatusEnum.Verified); using (var workflowRuntime = new WorkflowRuntime()) { workflowRuntime.AddService(new TerminateHelperService()); using (var manager = new WorkflowRuntimeManager(workflowRuntime)) { manager.MessageEvent += manager_MessageEvent; for (var i = 0; i < orders.Count; i++) { var wfArguments = new Dictionary <string, object> { { "OrderId", orders[i].Id }, { "PaymentProviderUrl", paymentUrlProvider }, { "BackupPaymentProviderUrl", backupPaymentUrlProvider } }; var wrapper = manager.StartWorkflow(typeof(ChargingOrderWorkflow), wfArguments); var testWait = manager.WaitOne(wrapper.Id, 30000); if (wrapper.Exception != null) { logger.Error(wrapper.Exception.Message); } } manager.WaitAll(300000); manager.ClearAllWorkflows(); } } }