|
@@ -107,7 +107,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
//如果发起会签需检查是否支持发起会签
|
|
//如果发起会签需检查是否支持发起会签
|
|
var startStepDefine = definition.FindStartStepDefine();
|
|
var startStepDefine = definition.FindStartStepDefine();
|
|
|
|
|
|
- var firstStepDefine = startStepDefine.InstanceMode is EInstanceMode.Dynamic
|
|
|
|
|
|
+ var firstStepDefine = startStepDefine.InstanceMode is EInstanceMode.Dynamic && !DynamicShouldTerminal(startStepDefine, _sessionContext.OrgLevel)
|
|
? startStepDefine
|
|
? startStepDefine
|
|
: definition.FindStepDefine(dto.NextStepCode);
|
|
: definition.FindStepDefine(dto.NextStepCode);
|
|
if (firstStepDefine is null)
|
|
if (firstStepDefine is null)
|
|
@@ -131,7 +131,6 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
throw new UserFriendlyException("下一节点不允许发起会签");
|
|
throw new UserFriendlyException("下一节点不允许发起会签");
|
|
}
|
|
}
|
|
|
|
|
|
- //todo
|
|
|
|
var workflow = await _workflowDomainService.CreateWorkflowAsync(wfModule, dto.Title,
|
|
var workflow = await _workflowDomainService.CreateWorkflowAsync(wfModule, dto.Title,
|
|
_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, externalId, expiredTime?.RuleStr,
|
|
_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, externalId, expiredTime?.RuleStr,
|
|
expiredTime?.EndTime, cancellationToken);
|
|
expiredTime?.EndTime, cancellationToken);
|
|
@@ -408,7 +407,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
if (definition.Status is not EDefinitionStatus.Enable)
|
|
if (definition.Status is not EDefinitionStatus.Enable)
|
|
throw new UserFriendlyException("该模板不可用");
|
|
throw new UserFriendlyException("该模板不可用");
|
|
|
|
|
|
- var startStep = definition.FindStartStepDefine();
|
|
|
|
|
|
+ var startStepDefine = definition.FindStartStepDefine();
|
|
|
|
|
|
//var dto = new NextStepsDto
|
|
//var dto = new NextStepsDto
|
|
//{
|
|
//{
|
|
@@ -417,19 +416,19 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
// DynamicPolicy = startStep.InstancePolicy
|
|
// DynamicPolicy = startStep.InstancePolicy
|
|
//};
|
|
//};
|
|
|
|
|
|
- if (startStep.InstanceMode is EInstanceMode.Dynamic)
|
|
|
|
|
|
+ if (startStepDefine.InstanceMode is EInstanceMode.Dynamic && !DynamicShouldTerminal(startStepDefine, _sessionContext.OrgLevel))
|
|
{
|
|
{
|
|
//var nextStepOption = CreateDynamicStep(startStep.InstancePolicy);
|
|
//var nextStepOption = CreateDynamicStep(startStep.InstancePolicy);
|
|
//dto.Steps = new List<NextStepOption> { nextStepOption };
|
|
//dto.Steps = new List<NextStepOption> { nextStepOption };
|
|
//return dto;
|
|
//return dto;
|
|
- var nextStepOption = await GetDynamicStepAsync(startStep.InstancePolicy.Value, cancellationToken);
|
|
|
|
|
|
+ var nextStepOption = await GetDynamicStepAsync(startStepDefine.InstancePolicy.Value, cancellationToken);
|
|
return new NextStepsDto
|
|
return new NextStepsDto
|
|
{
|
|
{
|
|
Steps = new List<NextStepOption> { nextStepOption }
|
|
Steps = new List<NextStepOption> { nextStepOption }
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
- var firstStepDefines = definition.FindStepDefines(startStep.NextSteps.Select(d => d.Code));
|
|
|
|
|
|
+ var firstStepDefines = definition.FindStepDefines(startStepDefine.NextSteps.Select(d => d.Code));
|
|
if (!firstStepDefines.Any())
|
|
if (!firstStepDefines.Any())
|
|
throw new UserFriendlyException("未正确配置首个办理节点");
|
|
throw new UserFriendlyException("未正确配置首个办理节点");
|
|
|
|
|
|
@@ -438,7 +437,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
// .ToList();
|
|
// .ToList();
|
|
return new NextStepsDto
|
|
return new NextStepsDto
|
|
{
|
|
{
|
|
- Steps = await GetConfigStepsAsync(startStep.StepType, startStep.BusinessType, firstStepDefines, cancellationToken)
|
|
|
|
|
|
+ Steps = await GetConfigStepsAsync(startStepDefine.StepType, startStepDefine.BusinessType, firstStepDefines, cancellationToken)
|
|
};
|
|
};
|
|
//dto.Steps = steps;
|
|
//dto.Steps = steps;
|
|
//return dto;
|
|
//return dto;
|
|
@@ -742,6 +741,22 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private bool DynamicShouldTerminal(StepDefine currentStepDefine, int currentOrgLevel)
|
|
|
|
+ {
|
|
|
|
+ if (currentStepDefine.InstanceMode is not EInstanceMode.Dynamic)
|
|
|
|
+ throw new UserFriendlyException("非动态节点");
|
|
|
|
+ switch (currentStepDefine.InstancePolicy)
|
|
|
|
+ {
|
|
|
|
+ case EDynamicPolicy.OrgUpCenterTop:
|
|
|
|
+ case EDynamicPolicy.OrgUp:
|
|
|
|
+ case EDynamicPolicy.OrgDownCenterTop:
|
|
|
|
+ case EDynamicPolicy.OrgDown:
|
|
|
|
+ return currentStepDefine.TerminalDynamicMark == currentOrgLevel.ToString();
|
|
|
|
+ default:
|
|
|
|
+ throw new ArgumentOutOfRangeException();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 查询下一步所选节点对应待选项
|
|
/// 查询下一步所选节点对应待选项
|
|
/// </summary>
|
|
/// </summary>
|