merge historyitem and statusitem

This commit is contained in:
Jonathan Jenne
2022-12-20 12:00:15 +01:00
parent 835467f0d7
commit 343f47ca29
16 changed files with 187 additions and 219 deletions

View File

@@ -16,7 +16,7 @@ Namespace Scheduler.Jobs
Friend ExecutionId As String
Friend Name As String
Friend ResultItems As New List(Of HistoryItem.HistoryStep)
Friend JobSteps As New List(Of StatusItem.HistoryStep)
Private ctx As IJobExecutionContext
@@ -34,8 +34,10 @@ Namespace Scheduler.Jobs
ExecutionId = Guid.NewGuid.ToString()
Id = Integer.Parse(oArgs.Item("Id"))
Name = oArgs.Item("Name")
State.JobStatus.Start(ctx)
Logger.Info("Job [{0}] is starting!", Id)
Return oJobData.Item(Constants.Scheduler.JOB_CONFIG_ARGUMENTS)
End Function
@@ -43,43 +45,47 @@ Namespace Scheduler.Jobs
State.JobStatus.Update(ctx, pCurrentValue, pTotalValue)
End Sub
Public Sub LogStep(pLevel As HistoryItem.StepLevel, pMessage As String, ParamArray pArgs As String())
ResultItems.Add(New HistoryItem.HistoryStep With {
Public Sub LogDebug(pMessage As String, ParamArray pArgs As String())
Logger.Debug(pMessage, pArgs)
JobSteps.Add(New StatusItem.HistoryStep With {
.Message = String.Format(pMessage, pArgs),
.Level = pLevel
.Level = StatusItem.STEP_DEBUG
})
End Sub
Public Function CompleteJob() As Task(Of Boolean)
ctx.Result = New JobResult With {
.Successful = True,
.Steps = ResultItems,
.Description = "Job completed."
}
State.JobStatus.Complete(ctx)
Public Sub LogInfo(pMessage As String, ParamArray pArgs As String())
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())
Logger.Warn(pMessage, pArgs)
JobSteps.Add(New StatusItem.HistoryStep With {
.Message = String.Format(pMessage, pArgs),
.Level = StatusItem.STEP_WARNING
})
End Sub
Public Sub LogError(pMessage As String, ParamArray pArgs As String())
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)
End Function
Public Function CompleteJob(pCompletionMessage As String) As Task(Of Boolean)
ctx.Result = New JobResult With {
.Successful = True,
.Steps = ResultItems,
.Description = pCompletionMessage
}
State.JobStatus.Complete(ctx)
Return Task.FromResult(True)
End Function
Public Function CompleteJob(pException As Exception) As Task(Of Boolean)
ctx.Result = New JobResult With {
.Successful = False,
.Steps = ResultItems,
.Description = pException.Message
}
State.JobStatus.Complete(ctx)
Public Function CompleteJobWithError(pException As Exception) As Task(Of Boolean)
ctx.Result = State.JobStatus.CompleteWithError(ctx, JobSteps, pException)
Return Task.FromResult(False)
End Function
End Class

View File

@@ -8,18 +8,17 @@ Namespace Scheduler.Jobs
Private Function IJob_Execute(context As IJobExecutionContext) As Task Implements IJob.Execute
Dim oArgs = MyBase.InitializeJob(context)
Dim oRandom = New Random()
Logger.Info("I'm a debug Job!")
Logger.Info("Name: [{0}]", Name)
Dim oTotal As Integer = oRandom.Next(5, 15)
For index = 1 To oTotal
Logger.Info("We are still waiting [{0}/{1}]", index, oTotal)
LogInfo("We are still waiting [{0}/{1}]", index, oTotal)
Dim oResult = New JobResult() With {
.Description = $"I'm a debug job and my result was [{Guid.NewGuid}]."
}
Threading.Thread.Sleep(1000)
Next
context.Result = oResult
CompleteJob("Done!")
Return Task.FromResult(True)
Return CompleteJob("Finished, not waiting anymore!")
End Function
End Class
End Namespace

View File

@@ -6,47 +6,6 @@ Imports ECM.JobRunner.Common
Namespace Scheduler.Jobs
''' <summary>
'''
''' Parameters / Properties
''' =======================
'''
''' - SourceDirectory
''' - TargetDirectory
''' - Include Subdirectories
''' - Delete Subdirectories
''' - Backup
''' - BackupFolder
''' - Overwrite
''' - Windream DocType
''' - Delete Files
''' - Delete Directory
''' - Delay
'''
''' Rules
''' ======
'''
''' - TargetIndex
''' - Active
''' - Index From
''' - Static
''' - Static Value
''' - File
''' - Folder
''' - Index Type
''' - Separator
''' - Current Date
''' - Current Short Date
''' - KOMPLETT
''' - BEREICH
''' - REST
''' - TRENNZEICHEN
''' - Separator
''' - Remove Zeroes
''' - Include Extension
''' - OrderKey
'''
''' </summary>
Public Class FileImportJob
Inherits BaseJob
Implements IJob
@@ -69,7 +28,7 @@ Namespace Scheduler.Jobs
Dim oObjectType = State.ObjectTypes.Where(Function(o) o.Name = oProfile.ObjectTypeName).SingleOrDefault()
If IO.Directory.Exists(oProfile.SourceFolder) = False Then
LogStep(HistoryItem.StepLevel.Error, "Source directory [{0}] does not exist!", oProfile.SourceFolder)
LogError("Source directory [{0}] does not exist!", oProfile.SourceFolder)
Return Task.FromResult(False)
End If
@@ -84,8 +43,7 @@ Namespace Scheduler.Jobs
Return CompleteJob("No files for profile")
End If
Logger.Info("[{0}] files found in source directory [{1}]", oFileNames.Count, oProfile.SourceFolder)
LogStep(HistoryItem.StepLevel.Info, "{0} files found in source directory {1}", oFileNames.Count, oProfile.SourceFolder)
LogInfo("{0} files found in source directory {1}", oFileNames.Count, oProfile.SourceFolder)
' - [ ] Process Rules, build list of files and indexes
' - [x] Process Regex to filter out files
@@ -110,15 +68,13 @@ Namespace Scheduler.Jobs
' Check time to filter out files
Dim oDateFilteredFiles = oFilteredFiles.Where(Function(f) FileIsOlderThan(f, pMinutes:=1)).ToList()
Dim oDateFilteredCount = oFilteredFiles.Except(oDateFilteredFiles).Count()
Logger.Debug("[{0}] Files filtered out for being too new.", oDateFilteredCount)
LogStep(HistoryItem.StepLevel.Debug, "{0} Files filtered out for being too new.", oDateFilteredCount)
LogDebug("{0} Files filtered out for being too new.", oDateFilteredCount)
oFilteredFiles = oDateFilteredFiles
' Process Regex to filter out files
Dim oRegexFilteredFiles = oFilteredFiles.Where(Function(f) Not FileMatchesRegex(f, oRegexList))
Dim oRegexFilteredCount = oFilteredFiles.Except(oRegexFilteredFiles).Count()
Logger.Debug("[{0}] Files filtered out for matching exclusion Regex.", oRegexFilteredCount)
LogStep(HistoryItem.StepLevel.Debug, "{0} Files filtered out for matching exclusion Regex.", oRegexFilteredCount)
LogDebug("{0} Files filtered out for matching exclusion Regex.", oRegexFilteredCount)
oFilteredFiles = oDateFilteredFiles
'-------------------------------------------------------------------------------------------------
@@ -143,8 +99,7 @@ Namespace Scheduler.Jobs
oImportedFiles.Add(oFile)
Next
Logger.Info("[{0}] files successfully Imported!", oImportedFiles.Count)
LogStep(HistoryItem.StepLevel.Info, "{0} files successfully Imported!", oImportedFiles.Count)
LogInfo("{0} files successfully Imported!", oImportedFiles.Count)
Dim oIndexedFiles As New List(Of ImportFile)
For Each oFile In oImportedFiles
@@ -156,8 +111,7 @@ Namespace Scheduler.Jobs
Logger.Info("Indexing of file [{0}] done!", oFile.FilePathWindream)
Next
Logger.Info("[{0}] files successfully Indexed!", oIndexedFiles.Count)
LogStep(HistoryItem.StepLevel.Info, "{0} files successfully Indexed!", oIndexedFiles.Count)
LogInfo("{0} files successfully Indexed!", oIndexedFiles.Count)
If oProfile.DeleteFiles = True Then
Logger.Debug("Deleting [{0}] files before finishing job.", oFiles.Count)
@@ -175,10 +129,9 @@ Namespace Scheduler.Jobs
Return CompleteJob($"{oImportedFiles.Count} files successfully Processed!")
Catch ex As Exception
Logger.Error(ex)
LogError("Unexpected Error: [{0}]", ex.Message)
LogStep(HistoryItem.StepLevel.Error, "Unexpected Error: [{0}]", ex.Message)
Return CompleteJob(ex)
Return CompleteJobWithError(ex)
End Try
End Function
@@ -287,8 +240,7 @@ Namespace Scheduler.Jobs
oValue = oValue.Substring(oStartIndex, oLength)
Catch ex As Exception
Dim oMessage = "Method SUBSTRING could not be applied to Index '{0}' and Parameters StartIndex [{1}], Length [{2}]. Error: '{3}'"
LogStep(HistoryItem.StepLevel.Error, oMessage, oStep.IndexName, ex.Message, oStep.Argument1, oStep.Argument2)
Logger.Error(ex)
LogError(oMessage, oStep.IndexName, ex.Message, oStep.Argument1, oStep.Argument2)
End Try
Case Common.Constants.METHOD_SPLIT
@@ -306,8 +258,7 @@ Namespace Scheduler.Jobs
Dim oSplit = oValue.Split(oSeparator)
oValue = oSplit(oIndex)
Catch ex As Exception
LogStep(HistoryItem.StepLevel.Error, "Method SPLIT could not be applied to Index '{0}'. Error: '{1}'", oStep.IndexName, ex.Message)
Logger.Error(ex)
LogError("Method SPLIT could not be applied to Index '{0}'. Error: '{1}'", oStep.IndexName, ex.Message)
End Try
Case Common.Constants.METHOD_REGEX
@@ -321,8 +272,7 @@ Namespace Scheduler.Jobs
oValue = oFalseValue
End If
Catch ex As Exception
LogStep(HistoryItem.StepLevel.Error, "Method REGEX could not be applied to Index '{0}'. Error: '{1}'", oStep.IndexName, ex.Message)
Logger.Error(ex)
LogError("Method REGEX could not be applied to Index '{0}'. Error: '{1}'", oStep.IndexName, ex.Message)
End Try
Case Common.Constants.METHOD_VALUE

View File

@@ -11,14 +11,7 @@ Namespace Scheduler.Jobs
Logger.Info("Running File Index [{0}]", Name)
Dim oResult = New JobResult() With {
.Description = $"File Index Job [{Name}] completed!"
}
context.Result = oResult
CompleteJob("Done!")
Return Task.FromResult(True)
Return CompleteJob("Done!")
End Function
End Class
End Namespace