23-12-2022
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
Imports System.Collections.Specialized
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Windream
|
||||
@@ -88,11 +89,20 @@ Namespace Scheduler
|
||||
|
||||
If oJob IsNot Nothing Then
|
||||
Logger.Info("Scheduling Job [{0}] manually!", oJob.Name)
|
||||
Await PrepareScheduleJob(oJob)
|
||||
Await PrepareScheduleJob(oJob, pStartManually:=True)
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Async Function PrepareScheduleJob(pJob As JobDefinition) As Task
|
||||
Private Async Sub ScheduleJobs()
|
||||
|
||||
Logger.Info("Loading [{0}] Job Definitions..", State.JobDefinitions.Count)
|
||||
|
||||
For Each oJob In State.JobDefinitions
|
||||
Await PrepareScheduleJob(oJob, pStartManually:=False)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Async Function PrepareScheduleJob(pJob As JobDefinition, pStartManually As Boolean) As Task
|
||||
Logger.Debug("Loading Job Definition [{0}]", pJob.Name)
|
||||
Logger.Debug("Job Type is [{0}]", pJob.Type.Name)
|
||||
|
||||
@@ -110,15 +120,6 @@ Namespace Scheduler
|
||||
End Select
|
||||
End Function
|
||||
|
||||
Private Async Sub ScheduleJobs()
|
||||
|
||||
Logger.Info("Loading [{0}] Job Definitions..", State.JobDefinitions.Count)
|
||||
|
||||
For Each oJob In State.JobDefinitions
|
||||
Await PrepareScheduleJob(oJob)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Function BuildJobConfig(Of TJob As IJob)(pJob As JobDefinition) As JobConfig
|
||||
Return New JobConfig With {
|
||||
.Name = pJob.Name,
|
||||
@@ -131,8 +132,11 @@ Namespace Scheduler
|
||||
}
|
||||
End Function
|
||||
|
||||
Private Async Function ScheduleJob(Of T As IJob)(pJobConfig As JobConfig) As Task
|
||||
If Await Scheduler.CheckExists(New JobKey(GetJobName(pJobConfig))) Then
|
||||
Private Async Function ScheduleJob(Of T As IJob)(pJobConfig As JobConfig, pStartManually As Boolean) As Task
|
||||
If pStartManually = True Then
|
||||
Logger.Debug("Manual run, scheduling..")
|
||||
Await DoScheduleJobWithoutDelay(Of T)(pJobConfig)
|
||||
ElseIf Await Scheduler.CheckExists(New JobKey(GetJobName(pJobConfig))) Then
|
||||
Logger.Debug("Job already exists, rescheduling..")
|
||||
Await DoRescheduleJob(Of T)(pJobConfig)
|
||||
Else
|
||||
@@ -156,12 +160,12 @@ Namespace Scheduler
|
||||
End Function
|
||||
|
||||
Private Async Function DoScheduleJob(Of T As IJob)(pJobConfig As JobConfig) As Task
|
||||
Dim oJobName As String = GetJobName(pJobConfig)
|
||||
Dim oTriggerName As String = GetTriggerName(pJobConfig)
|
||||
Dim oTrigger As ITrigger = BuildTrigger(pJobConfig)
|
||||
|
||||
Dim oJobName As String = GetJobName(pJobConfig)
|
||||
Dim oJobData As JobDataMap = BuildJobData(pJobConfig)
|
||||
Dim oJob As IJobDetail = BuildJob(Of T)(pJobConfig, oJobData)
|
||||
Dim oTrigger As ITrigger = BuildTrigger(pJobConfig)
|
||||
|
||||
If pJobConfig.Enabled Then
|
||||
Await Scheduler.ScheduleJob(oJob, oTrigger)
|
||||
@@ -172,14 +176,23 @@ Namespace Scheduler
|
||||
End If
|
||||
|
||||
If pJobConfig.StartWithoutDelay Then
|
||||
Dim oNoDelayTrigger = TriggerBuilder.Create().
|
||||
Await DoScheduleJobWithoutDelay(Of T)(pJobConfig)
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Async Function DoScheduleJobWithoutDelay(Of T As IJob)(pJobConfig As JobConfig) As Task
|
||||
Dim oJobName As String = GetJobName(pJobConfig)
|
||||
Dim oJobData As JobDataMap = BuildJobData(pJobConfig)
|
||||
Dim oJob As IJobDetail = BuildJob(Of T)(pJobConfig, oJobData)
|
||||
|
||||
Dim oTriggerName As String = GetTriggerName(pJobConfig)
|
||||
Dim oNoDelayTrigger = TriggerBuilder.Create().
|
||||
WithIdentity(oTriggerName & "-NO-DELAY").
|
||||
StartAt(DateBuilder.FutureDate(10, IntervalUnit.Second)).
|
||||
Build()
|
||||
|
||||
Logger.Info("Job {0} will start in 10 Seconds.", oJobName)
|
||||
Await Scheduler.ScheduleJob(oJob, oNoDelayTrigger)
|
||||
End If
|
||||
Logger.Info("Job {0} will start in 10 Seconds.", oJobName)
|
||||
Await Scheduler.ScheduleJob(oJob, oNoDelayTrigger)
|
||||
End Function
|
||||
|
||||
Private Function BuildJob(Of T As IJob)(pJobConfig As JobConfig, pJobData As JobDataMap) As IJobDetail
|
||||
|
||||
@@ -46,7 +46,7 @@ Namespace Scheduler.Jobs
|
||||
State.JobStatus.Update(ctx, pCurrentValue, pTotalValue)
|
||||
End Sub
|
||||
|
||||
Public Sub LogDebug(pMessage As String, ParamArray pArgs As String())
|
||||
Public Sub LogDebug(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Debug(pMessage, pArgs)
|
||||
JobSteps.Add(New StatusItem.HistoryStep With {
|
||||
.Message = String.Format(pMessage, pArgs),
|
||||
@@ -54,15 +54,16 @@ Namespace Scheduler.Jobs
|
||||
})
|
||||
End Sub
|
||||
|
||||
Public Sub LogInfo(pMessage As String, ParamArray pArgs As String())
|
||||
Public Sub LogInfo(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Info(pMessage, pArgs)
|
||||
|
||||
JobSteps.Add(New StatusItem.HistoryStep With {
|
||||
.Message = String.Format(pMessage, pArgs),
|
||||
.Level = StatusItem.STEP_INFO
|
||||
})
|
||||
End Sub
|
||||
|
||||
Public Sub LogWarning(pMessage As String, ParamArray pArgs As String())
|
||||
Public Sub LogWarning(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Warn(pMessage, pArgs)
|
||||
JobSteps.Add(New StatusItem.HistoryStep With {
|
||||
.Message = String.Format(pMessage, pArgs),
|
||||
@@ -70,15 +71,13 @@ Namespace Scheduler.Jobs
|
||||
})
|
||||
End Sub
|
||||
|
||||
Public Sub LogError(pMessage As String, ParamArray pArgs As String())
|
||||
Public Sub LogError(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Error(pMessage, pArgs)
|
||||
JobSteps.Add(New StatusItem.HistoryStep With {
|
||||
.Message = String.Format(pMessage, pArgs),
|
||||
.Level = StatusItem.STEP_ERROR
|
||||
})
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function CompleteJob(pMessage As String) As Task(Of Boolean)
|
||||
ctx.Result = State.JobStatus.CompleteWithSuccess(ctx, JobSteps, pMessage)
|
||||
Return Task.FromResult(True)
|
||||
|
||||
@@ -3,6 +3,7 @@ Imports Quartz
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DigitalData.Modules.Filesystem
|
||||
Imports ECM.JobRunner.Common
|
||||
Imports FxResources.System
|
||||
|
||||
Namespace Scheduler.Jobs
|
||||
|
||||
@@ -176,11 +177,28 @@ Namespace Scheduler.Jobs
|
||||
'Check if target folder exists
|
||||
If Windream.TestFolderExists(pProfile.TargetFolder) = False Then
|
||||
If Windream.NewFolder(pProfile.TargetFolder) = False Then
|
||||
Logger.Warn("Folder [{0}] could not be created!", pProfile.TargetFolder)
|
||||
Logger.Warn("Folder [{0}] could not be created! Exiting.", pProfile.TargetFolder)
|
||||
Return Nothing
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim oFinalDirectoryPath = pProfile.TargetFolder
|
||||
|
||||
If pProfile.SubfolderDateFormat <> String.Empty Then
|
||||
' ToString formatter needs the backslashes escaped again.
|
||||
Dim oSubfolders = Now.ToString(pProfile.SubfolderDateFormat.Replace())
|
||||
Dim oFullPath = IO.Path.Combine(pProfile.TargetFolder, oSubfolders)
|
||||
|
||||
Logger.Debug("Creating subfolder [{0}] in Target path [{1}]", oSubfolders, pProfile.TargetFolder)
|
||||
|
||||
If Windream.NewFolder(oFullPath) = False Then
|
||||
Logger.Warn("Folder [{0}] could not be created! Exiting.", oFullPath)
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
oFinalDirectoryPath = oFullPath
|
||||
End If
|
||||
|
||||
' Generate new filepath and stream file
|
||||
Dim oFileName = IO.Path.GetFileName(pFile.FilePath)
|
||||
Dim oNewFilePath As String = IO.Path.Combine(pProfile.TargetFolder, oFileName)
|
||||
|
||||
@@ -44,7 +44,8 @@ Namespace WCF
|
||||
End Function
|
||||
|
||||
Public Function GetJobHistory() As GetJobStatus.GetJobStatusResponse Implements IJobRunner.GetJobStatus
|
||||
Logger.Info("Calling Method [GetJobHistory]")
|
||||
' No, we will not log this call because it will be called *A LOT*.
|
||||
' Nobody needs to see this in a log.
|
||||
Dim oMethod As New GetJobStatus.GetJobStatusMethod(LogConfig, Database, State, Scheduler)
|
||||
Return oMethod.Run()
|
||||
End Function
|
||||
|
||||
Reference in New Issue
Block a user