|
@@ -492,7 +492,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (targetStepBox is null)
|
|
|
throw UserFriendlyException.SameMessage("该流程尚未流转至该节点");
|
|
|
|
|
|
- await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
|
|
|
+ await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, EWorkflowTraceStatus.Recall, cancellationToken);
|
|
|
|
|
|
workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
@@ -560,9 +560,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
else
|
|
|
{
|
|
|
//返回之前节点
|
|
|
- await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
|
|
|
+ await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, EWorkflowTraceStatus.Jump, cancellationToken);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
@@ -822,7 +822,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
|
|
|
private async Task RecallAsync(Workflow workflow, NextWorkflowDto dto, StepDefine targetStepDefine, WorkflowStep targetStepBox,
|
|
|
- bool isStartCountersign, CancellationToken cancellationToken)
|
|
|
+ bool isStartCountersign, EWorkflowTraceStatus traceStatus, CancellationToken cancellationToken)
|
|
|
{
|
|
|
//get targetStep's previous
|
|
|
var targetPrevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == targetStepBox.PreviousId);
|
|
@@ -833,18 +833,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (targetPrevStep == null)
|
|
|
throw new UserFriendlyException($"{nameof(RecallAsync)}, 未找到目标节点的前一节点, flowId: {workflow.Id}");
|
|
|
|
|
|
- ////remove completedSteps include target stepBox
|
|
|
- //var removeSteps = GetStepsIncludeStepBox(targetStepBox);
|
|
|
- //var tempStepBox = currentStepBox;
|
|
|
- //while (tempStepBox.Code != targetStepBox.Code)
|
|
|
- //{
|
|
|
- // removeSteps.AddRange(GetStepsIncludeStepBox(tempStepBox));
|
|
|
- // var prevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == tempStepBox.PreviousId);
|
|
|
- // if (prevStepBox is null)
|
|
|
- // throw new UserFriendlyException($"{nameof(RecallAsync)}, 未查询到节点, workflowId: {workflow.Id}, prevStepBoxId: {tempStepBox.PreviousId}");
|
|
|
- // tempStepBox = prevStepBox;
|
|
|
- //}
|
|
|
- //
|
|
|
//查询所有目标节点之后的节点,然后删掉(包括目标节点)
|
|
|
var removeSteps = GetStepsBehindTargetStepBox(workflow.StepBoxes, targetStepBox);
|
|
|
await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
@@ -852,7 +840,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//recreate targetStep
|
|
|
await CreateStepAsync(isStartCountersign, workflow, targetStepDefine, dto, EWorkflowStepStatus.Assigned,
|
|
|
- targetPrevStepBox, targetPrevStep, EWorkflowTraceStatus.Recall, cancellationToken);
|
|
|
+ targetPrevStepBox, targetPrevStep, traceStatus, cancellationToken);
|
|
|
|
|
|
//flow manage
|
|
|
await ResetWorkflowCurrentStepInfo(workflow, dto, targetStepBox, isStartCountersign, cancellationToken);
|