|
@@ -485,14 +485,16 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//if (currentStepBox.StepType is EStepType.Start)
|
|
|
// throw UserFriendlyException.SameMessage("当前流程已退回到开始节点");
|
|
|
|
|
|
+ //update uncompleted traces
|
|
|
+ await RecallTraceAsync(workflow.Id, dto, cancellationToken);
|
|
|
+
|
|
|
var targetStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Code == dto.NextStepCode);
|
|
|
if (targetStepBox is null)
|
|
|
throw UserFriendlyException.SameMessage("该流程尚未流转至该节点");
|
|
|
|
|
|
await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
|
|
|
|
|
|
- workflow.UpdateHandlers(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode,
|
|
|
- flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
+ workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
await _mediator.Publish(new RecallNotify(workflow, dto), cancellationToken);
|
|
@@ -560,9 +562,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//返回之前节点
|
|
|
await RecallAsync(workflow, dto, targetStepDefine, targetStepBox, isStartCountersign, cancellationToken);
|
|
|
}
|
|
|
-
|
|
|
- workflow.UpdateHandlers(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode,
|
|
|
- flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
+
|
|
|
+ workflow.ResetHandlers(flowAssignMode.FlowAssignType, flowAssignMode.HandlerObjects);
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
|
await _mediator.Publish(new JumpNotify(workflow, dto, flowAssignMode), cancellationToken);
|
|
@@ -847,6 +848,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//查询所有目标节点之后的节点,然后删掉(包括目标节点)
|
|
|
var removeSteps = GetStepsBehindTargetStepBox(workflow.StepBoxes, targetStepBox);
|
|
|
await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
+ workflow.StepBoxes.RemoveAll(d => removeSteps.Contains(d));
|
|
|
|
|
|
//recreate targetStep
|
|
|
await CreateStepAsync(isStartCountersign, workflow, targetStepDefine, dto, EWorkflowStepStatus.Assigned,
|
|
@@ -855,9 +857,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//flow manage
|
|
|
await ResetWorkflowCurrentStepInfo(workflow, dto, targetStepBox, isStartCountersign, cancellationToken);
|
|
|
|
|
|
- //update uncompleted traces
|
|
|
- await RecallTraceAsync(workflow.Id, dto, cancellationToken);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private IEnumerable<WorkflowStep> GetStepsBehindTargetStepBox(List<WorkflowStep> stepBoxes, WorkflowStep currentStepBox)
|
|
@@ -894,13 +893,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
private static void CheckWhetherRunnable(EWorkflowStatus status)
|
|
|
{
|
|
|
if (status != EWorkflowStatus.Runnable && status != EWorkflowStatus.Marked)
|
|
|
- throw new UserFriendlyException("当前流程状态不可继续流转");
|
|
|
+ throw UserFriendlyException.SameMessage("当前流程状态不可继续流转");
|
|
|
}
|
|
|
|
|
|
private void ValidatePermission(Workflow workflow)
|
|
|
{
|
|
|
if (!workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode))
|
|
|
- throw new UserFriendlyException("无办理权限");
|
|
|
+ throw UserFriendlyException.SameMessage("无办理权限");
|
|
|
}
|
|
|
|
|
|
/// <summary>
|