This example uses the adTempus API to add a Notification Action to a job to send an email message when the job fails.
It also demonstrates how to create a Notification Recipient for an email recipient.
| public void Main() | |
| { | |
| // if the adTempus server is on a different computer, replace "." with the server name | |
| using (var session = Scheduler.Connect(".", LoginAuthenticationType.Windows, "", "")) | |
| { | |
| using (var context = session.NewDataContext()) | |
| { | |
| // In this example we fetch a sample job. | |
| var job = context.GetJob("Sample Job"); | |
| if (job == null) | |
| throw new Exception("Job not found"); | |
| // create the Response | |
| var response = (Response)context.CreateObject(ClassID.Response); | |
| // Create the Event to trigger on job failed | |
| var responseEvent = (ResponseEvent)context.CreateObject(ClassID.ResponseEvent); | |
| responseEvent.Event = JobEvent.JobFailed; | |
| response.Events.Add(responseEvent); | |
| // find or create the recipient | |
| var recipient = GetOrCreateNotificationRecipient(context, "someone@example.com", "Someone"); | |
| // create a Notification Action | |
| var action = (NotificationAction)context.CreateObject(ClassID.NotificationAction); | |
| action.Recipients.Add(recipient); | |
| // If you don't set a subject or message, the defaults are used. | |
| // If you set them explicitly, use Job Variables to insert job name, computer name, etc., rather than | |
| // hard-coding them. See the list of [predefined variables](https://documentation.arcanadev.com/adtempus/help/4.0/#objects/JobVariable/Predefined_Variables.htm) | |
| // action.NotificationSubject="Job %ADTJobName% failed on %ServerName%" | |
| // action.NotificationMessage="The job failed" | |
| // include Captured Console output | |
| action.SendConsoleOutput = true; | |
| response.Actions.Add(action); | |
| job.Responses.Add(response); | |
| job.Save(); | |
| } | |
| } | |
| } | |
| // returns the existing NotificationRecipient for an email address, or creates a new one if none is found | |
| public void GetOrCreateNotificationRecipient(ArcanaDevelopment.adTempus.Client.DataContext context, string emailAddress, string name) | |
| { | |
| var recipient = context.GetNotificationRecipientsForAddress(NotificationAddressType.SMTP, emailAddress).FirstOrDefault(); | |
| if (recipient != null) | |
| // there's already a NotificationRecipient that uses this address | |
| return recipient; | |
| // otherwise create it | |
| // recipient not found; create it | |
| recipient = (NotificationIndividual)context.CreateObject(ClassID.NotificationIndividual); | |
| recipient.Name = name; | |
| var address = (NotificationAddress)context.CreateObject(ClassID.NotificationAddress); | |
| address.AddressType = NotificationAddressType.SMTP; | |
| address.RecipientAddress = emailAddress; | |
| recipient.Addresses.Add(address); | |
| recipient.Save(); | |
| return recipient; | |
| } |
| Sub Main | |
| 'if the adTempus server is on a different computer, replace "." with the server name | |
| Using session = Scheduler.Connect(".", LoginAuthenticationType.Windows, "", "") | |
| Using context = session.NewDataContext() | |
| 'In this example we fetch a sample job. | |
| Dim job = context.GetJob("Sample Job") | |
| If job Is Nothing Then | |
| Throw New Exception("Job not found") | |
| End If | |
| 'create the Response | |
| Dim response = Ctype(context.CreateObject(ClassID.Response), Response) | |
| 'Create the Event to trigger on job failed | |
| Dim responseEvent = CType(context.CreateObject(ClassID.ResponseEvent), ResponseEvent) | |
| responseEvent.Event = JobEvent.JobFailed | |
| response.Events.Add(responseEvent) | |
| 'find or create the recipient | |
| Dim recipient = GetOrCreateNotificationRecipient(context,"someone@example.com", "Someone") | |
| 'create a Notification Action | |
| Dim action = CType(context.CreateObject(ClassID.NotificationAction), NotificationAction) | |
| action.Recipients.Add(recipient) | |
| 'If you don't set a subject or message, the defaults are used. | |
| 'If you set them explicitly, use Job Variables to insert job name, computer name, etc., rather than | |
| 'hard-coding them. See the list of [predefined variables](https://documentation.arcanadev.com/adtempus/help/4.0/#objects/JobVariable/Predefined_Variables.htm) | |
| 'action.NotificationSubject="Job %ADTJobName% failed on %ServerName%" | |
| 'action.NotificationMessage="The job failed" | |
| 'include Captured Console output | |
| action.SendConsoleOutput = True | |
| response.Actions.Add(action) | |
| job.Responses.Add(response) | |
| job.Save() | |
| End Using | |
| End Using | |
| End Sub | |
| 'returns the existing NotificationRecipient for an email address, or creates a new one if none is found | |
| Function GetOrCreateNotificationRecipient(context As ArcanaDevelopment.adTempus.Client.DataContext, emailAddress As String, name As String) | |
| Dim recipient = context.GetNotificationRecipientsForAddress(NotificationAddressType.SMTP, emailAddress).FirstOrDefault() | |
| If recipient IsNot Nothing Then | |
| 'there's already a NotificationRecipient that uses this address | |
| Return recipient | |
| End If | |
| 'otherwise create it | |
| 'recipient not found; create it | |
| recipient = CType(context.CreateObject(ClassID.NotificationIndividual), NotificationIndividual) | |
| recipient.Name = name | |
| Dim address = CType(context.CreateObject(ClassID.NotificationAddress), NotificationAddress) | |
| address.AddressType = NotificationAddressType.SMTP | |
| address.RecipientAddress = emailAddress | |
| recipient.Addresses.Add(address) | |
| recipient.Save() | |
| Return recipient | |
| End Function |