57 lines
2.2 KiB
C#
57 lines
2.2 KiB
C#
|
|
using MainShell.Log;
|
||
|
|
using MainShell.ProcessResult;
|
||
|
|
using System;
|
||
|
|
using MW.WorkFlow;
|
||
|
|
|
||
|
|
namespace MainShell.Process
|
||
|
|
{
|
||
|
|
public class WorkflowRuntimeTracker : IWorkflowRuntimeTracker
|
||
|
|
{
|
||
|
|
private readonly ProcessResultManager _processResultManager;
|
||
|
|
|
||
|
|
public WorkflowRuntimeTracker(ProcessResultManager processResultManager)
|
||
|
|
{
|
||
|
|
_processResultManager = processResultManager ?? throw new ArgumentNullException(nameof(processResultManager));
|
||
|
|
}
|
||
|
|
|
||
|
|
public void UpdateExecutionPointer(WorkflowExecutionPointer executionPointer)
|
||
|
|
{
|
||
|
|
if (executionPointer != null)
|
||
|
|
{
|
||
|
|
string.Format(
|
||
|
|
"Workflow pointer updated. WorkflowName={0}, FlowName={1}, ActivityName={2}, CurrentStepId={3}, NextStepId={4}, UpdatedAt={5:yyyy-MM-dd HH:mm:ss.fff}.",
|
||
|
|
NormalizeValue(executionPointer.WorkflowName),
|
||
|
|
NormalizeValue(executionPointer.FlowName),
|
||
|
|
NormalizeValue(executionPointer.ActivityName),
|
||
|
|
NormalizeValue(executionPointer.CurrentStepId),
|
||
|
|
NormalizeValue(executionPointer.NextStepId),
|
||
|
|
executionPointer.UpdatedAt).LogProcessDebug();
|
||
|
|
}
|
||
|
|
|
||
|
|
_processResultManager.UpdateExecutionPointer(executionPointer);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void ReportWorkflowFault(WorkflowFaultInfo faultInfo)
|
||
|
|
{
|
||
|
|
if (faultInfo != null)
|
||
|
|
{
|
||
|
|
string.Format(
|
||
|
|
"Workflow fault reported. WorkflowName={0}, FlowName={1}, ActivityName={2}, CurrentStepId={3}, OccurredAt={4:yyyy-MM-dd HH:mm:ss.fff}, ErrorMessage={5}.",
|
||
|
|
NormalizeValue(faultInfo.WorkflowName),
|
||
|
|
NormalizeValue(faultInfo.FlowName),
|
||
|
|
NormalizeValue(faultInfo.ActivityName),
|
||
|
|
NormalizeValue(faultInfo.CurrentStepId),
|
||
|
|
faultInfo.OccurredAt,
|
||
|
|
NormalizeValue(faultInfo.ErrorMessage)).LogProcessError();
|
||
|
|
}
|
||
|
|
|
||
|
|
_processResultManager.ReportWorkflowFault(faultInfo);
|
||
|
|
}
|
||
|
|
|
||
|
|
private static string NormalizeValue(string value)
|
||
|
|
{
|
||
|
|
return string.IsNullOrWhiteSpace(value) ? "N/A" : value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|