|
@@ -28,7 +28,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
|
|
|
private readonly IRepository<WorkflowSupplement> _workflowSupplementRepository;
|
|
|
private readonly IRepository<WorkflowCountersign> _workflowCountersignRepository;
|
|
|
- private readonly IRepository<WorkflowStepHandler> _workflowStepHandlerRepository;
|
|
|
+ //private readonly IRepository<WorkflowStepHandler> _workflowStepHandlerRepository;
|
|
|
private readonly ISessionContext _sessionContext;
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly IMediator _mediator;
|
|
@@ -42,7 +42,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
IRepository<WorkflowTrace> workflowTraceRepository,
|
|
|
IRepository<WorkflowSupplement> workflowSupplementRepository,
|
|
|
IRepository<WorkflowCountersign> workflowCountersignRepository,
|
|
|
- IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
|
|
|
+ //IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
|
|
|
ISessionContext sessionContext,
|
|
|
IMapper mapper,
|
|
|
IMediator mediator,
|
|
@@ -54,7 +54,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_workflowTraceRepository = workflowTraceRepository;
|
|
|
_workflowSupplementRepository = workflowSupplementRepository;
|
|
|
_workflowCountersignRepository = workflowCountersignRepository;
|
|
|
- _workflowStepHandlerRepository = workflowStepHandlerRepository;
|
|
|
+ //_workflowStepHandlerRepository = workflowStepHandlerRepository;
|
|
|
_sessionContext = sessionContext;
|
|
|
_mapper = mapper;
|
|
|
_mediator = mediator;
|
|
@@ -95,7 +95,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task StartAsync(Workflow workflow, WorkflowStep startStep, BasicWorkflowDto dto,
|
|
|
StepDefine firstStepDefine, bool isNextDynamic, FlowAssignInfo flowAssignInfo,
|
|
|
- ECounterSignType? counterSignType, DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers,
|
|
|
+ ECounterSignType? counterSignType, DateTime? expiredTime,
|
|
|
ISessionContext current, CancellationToken cancellationToken)
|
|
|
{
|
|
|
//1. 创建first节点 (和trace)2.办理开始节点
|
|
@@ -115,7 +115,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//firststeps
|
|
|
var firstSteps = await CreateNextStepsAsync(workflow, startStep, dto, firstStepDefine,
|
|
|
- isNextDynamic, flowAssignInfo, expiredTime, stepHandlers, dto.IsStartCountersign, cancellationToken);
|
|
|
+ isNextDynamic, flowAssignInfo, expiredTime, dto.IsStartCountersign, cancellationToken);
|
|
|
if (firstSteps.Any())
|
|
|
workflow.Steps.AddRange(firstSteps);
|
|
|
|
|
@@ -187,7 +187,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (withCountersigns)
|
|
|
query = query.Includes(d => d.Countersigns, x => x.Members);
|
|
|
if (withSteps)
|
|
|
- query = query.Includes(d => d.Steps, x => x.StepHandlers);
|
|
|
+ query = query.Includes(d => d.Steps);
|
|
|
//if (withTraces)
|
|
|
// query = query.Includes(d => d.Traces);
|
|
|
|
|
@@ -308,8 +308,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task NextAsync(Workflow workflow, WorkflowStep currentStep, NextWorkflowDto dto,
|
|
|
StepDefine nextStepDefine, bool isNextDynamic, FlowAssignInfo flowAssignInfo,
|
|
|
- DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers, ISessionContext current,
|
|
|
- CancellationToken cancellationToken)
|
|
|
+ DateTime? expiredTime, ISessionContext current, CancellationToken cancellationToken)
|
|
|
{
|
|
|
ValidatePermission(workflow, current.RequiredOrgId, current.RequiredUserId, current.Roles);
|
|
|
//CheckWhetherRunnable(workflow.Status);
|
|
@@ -422,10 +421,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
.ExecuteCommandAsync();
|
|
|
}
|
|
|
|
|
|
- //await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);
|
|
|
- await _workflowStepRepository.UpdateNav(updateSteps)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
- .ExecuteCommandAsync();
|
|
|
+ await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.UpdateNav(updateSteps)
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
|
|
|
await NextTraceAsync(workflow, dto, currentStep, cancellationToken);
|
|
|
|
|
@@ -461,7 +460,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//创建下一/N个节点(会签汇总节点:会签未全部办理时不创建,最后一个会签办理节点创建会签汇总节点)
|
|
|
var nextSteps = await CreateNextStepsAsync(workflow, currentStep, dto,
|
|
|
- nextStepDefine, isNextDynamic, flowAssignInfo, expiredTime, stepHandlers, isStartCountersign,
|
|
|
+ nextStepDefine, isNextDynamic, flowAssignInfo, expiredTime, isStartCountersign,
|
|
|
cancellationToken);
|
|
|
|
|
|
////赋值当前节点的下级办理节点
|
|
@@ -659,7 +658,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var steps = await _workflowStepRepository.Queryable()
|
|
|
.Includes(d => d.Workflow)
|
|
|
.Includes(d => d.WorkflowTrace)
|
|
|
- .Includes(d => d.StepHandlers)
|
|
|
+ //.Includes(d => d.StepHandlers)
|
|
|
.Where(d => stepsIds.Contains(d.Id))
|
|
|
.ToListAsync(cancellationToken);
|
|
|
foreach (var handler in handlers)
|
|
@@ -674,10 +673,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var thisSteps = steps.Where(d => handler.stepIds.Contains(d.Id)).ToList();
|
|
|
foreach (var thisStep in thisSteps)
|
|
|
{
|
|
|
- var stepHandler = WorkflowStepHandler.Create(thisStep.Workflow.Id, thisStep.Workflow.ExternalId,
|
|
|
- thisStep.FlowAssignType ?? EFlowAssignType.User, handler.userId, handler.username, handler.orgId, handler.orgName);
|
|
|
- thisStep.StepHandlers.Clear();
|
|
|
- thisStep.StepHandlers.Add(stepHandler);
|
|
|
+ //var stepHandler = WorkflowStepHandler.Create(thisStep.Workflow.Id, thisStep.Workflow.ExternalId,
|
|
|
+ // thisStep.FlowAssignType ?? EFlowAssignType.User, handler.userId, handler.username, handler.orgId, handler.orgName);
|
|
|
+ //thisStep.StepHandlers.Clear();
|
|
|
+ //thisStep.StepHandlers.Add(stepHandler);
|
|
|
|
|
|
thisStep.Handlers = thisHandlers;
|
|
|
|
|
@@ -700,7 +699,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await _workflowStepRepository.UpdateNav(steps)
|
|
|
.Include(d => d.WorkflowTrace)
|
|
|
.Include(d => d.Workflow)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
+ //.Include(d => d.StepHandlers)
|
|
|
.ExecuteCommandAsync();
|
|
|
|
|
|
return steps.Select(d => d.WorkflowId).ToList();
|
|
@@ -711,20 +710,33 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task<ICollection<Kv>> GetLevelOneOrgsAsync(string workflowId, CancellationToken cancellation)
|
|
|
{
|
|
|
- var handlers = await _workflowStepHandlerRepository.Queryable()
|
|
|
- .InnerJoin<WorkflowTrace>((wsh, wt) => wsh.WorkflowStepId == wt.StepId)
|
|
|
- .LeftJoin<SystemOrganize>((wsh, wt, o) => wsh.OrgId == o.Id)
|
|
|
- .Where((wsh, wt, o) => wsh.WorkflowId == workflowId &&
|
|
|
- //wt.BusinessType == EBusinessType.Department &&
|
|
|
- //wt.HandlerType == EHandlerType.OrgLevel &&
|
|
|
- !string.IsNullOrEmpty(wsh.OrgId) &&
|
|
|
- o.Level == 1)
|
|
|
- .ToListAsync(cancellation);
|
|
|
+ var traces = await _workflowTraceRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((t, o) => t.HandlerOrgId == o.Id)
|
|
|
+ .Where((t, o) => t.WorkflowId == workflowId &&
|
|
|
+ !string.IsNullOrEmpty(t.HandlerOrgId) &&
|
|
|
+ o.Level == 1)
|
|
|
+ .ToListAsync(cancellation);
|
|
|
+
|
|
|
+ //var handlers = await _workflowStepHandlerRepository.Queryable()
|
|
|
+ // .InnerJoin<WorkflowTrace>((wsh, wt) => wsh.WorkflowStepId == wt.StepId)
|
|
|
+ // .LeftJoin<SystemOrganize>((wsh, wt, o) => wsh.OrgId == o.Id)
|
|
|
+ // .Where((wsh, wt, o) => wsh.WorkflowId == workflowId &&
|
|
|
+ // //wt.BusinessType == EBusinessType.Department &&
|
|
|
+ // //wt.HandlerType == EHandlerType.OrgLevel &&
|
|
|
+ // !string.IsNullOrEmpty(wsh.OrgId) &&
|
|
|
+ // o.Level == 1)
|
|
|
+ // .ToListAsync(cancellation);
|
|
|
+
|
|
|
+ //var orgs = handlers.Select(d => new Kv(d.OrgId, d.OrgName))
|
|
|
+ // .DistinctBy(d => d.Key)
|
|
|
+ // .ToList();
|
|
|
|
|
|
- var orgs = handlers.Select(d => new Kv(d.OrgId, d.OrgName))
|
|
|
- .DistinctBy(d => d.Key)
|
|
|
+ var orgs = traces
|
|
|
+ .DistinctBy(d => d.HandlerOrgId)
|
|
|
+ .Select(d => new Kv(d.HandlerOrgId, d.HandlerOrgName))
|
|
|
.ToList();
|
|
|
|
|
|
+
|
|
|
return orgs;
|
|
|
//var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellation);
|
|
|
//var list = workflow.Steps.Distinct().Where(d => d.BusinessType == EBusinessType.Department &&
|
|
@@ -764,7 +776,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
public async Task<WorkflowStep> FindLastHandleStepAsync(string workflowId, string orgId, CancellationToken cancellation)
|
|
|
{
|
|
|
return await _workflowStepRepository.Queryable()
|
|
|
- .Where(d => d.StepHandlers.Any(sh => sh.OrgId == orgId) && d.WorkflowId == workflowId)
|
|
|
+ .Where(d => d.WorkflowId == workflowId && d.HandlerOrgId == orgId)
|
|
|
+ //.Where(d => d.StepHandlers.Any(sh => sh.OrgId == orgId) && d.WorkflowId == workflowId)
|
|
|
.OrderByDescending(d => d.HandleTime)
|
|
|
.FirstAsync(cancellation);
|
|
|
}
|
|
@@ -808,7 +821,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task<Workflow> SignToSomebodyAsync(string workflowId, string userId, string username, string orgId, string orgName, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellationToken);
|
|
|
+ var workflow = await GetWorkflowAsync(workflowId, withSteps: true, withTraces: true, cancellationToken: cancellationToken);
|
|
|
workflow.Assign(EFlowAssignType.User, _sessionContext.RequiredUserId);
|
|
|
|
|
|
workflow.HandlerOrgs = new();
|
|
@@ -830,15 +843,19 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
startStep.AcceptorOrgId = orgId;
|
|
|
startStep.AcceptorOrgName = orgName;
|
|
|
|
|
|
- var stepHandler = startStep.StepHandlers.First();
|
|
|
- startStep.StepHandlers.RemoveAll(d => d.Id != stepHandler.Id);
|
|
|
- stepHandler.UserId = userId;
|
|
|
- stepHandler.Username = username;
|
|
|
- stepHandler.OrgId = orgId;
|
|
|
- stepHandler.OrgName = orgName;
|
|
|
+ //var stepHandler = startStep.StepHandlers.First();
|
|
|
+ //startStep.StepHandlers.RemoveAll(d => d.Id != stepHandler.Id);
|
|
|
+ //stepHandler.UserId = userId;
|
|
|
+ //stepHandler.Username = username;
|
|
|
+ //stepHandler.OrgId = orgId;
|
|
|
+ //stepHandler.OrgName = orgName;
|
|
|
+
|
|
|
+ startStep.WorkflowTrace = workflow.Traces.First(d => d.Id == startStep.Id);
|
|
|
+ _mapper.Map(startStep, startStep.WorkflowTrace);
|
|
|
|
|
|
await _workflowStepRepository.UpdateNav(startStep)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
+ //.Include(d => d.StepHandlers)
|
|
|
+ .Include(d => d.WorkflowTrace)
|
|
|
.ExecuteCommandAsync();
|
|
|
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
@@ -870,7 +887,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 撤回(返回到之前任意节点)
|
|
|
/// </summary>
|
|
|
public async Task RecallAsync(Workflow workflow, RecallDto dto, StepDefine targetStepDefine,
|
|
|
- FlowAssignInfo flowAssignInfo, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime,
|
|
|
+ FlowAssignInfo flowAssignInfo, DateTime? expiredTime,
|
|
|
ISessionContext current, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var targetStep = workflow.Steps.FirstOrDefault(d => d.Code == dto.NextStepCode && d.IsOrigin);
|
|
@@ -881,7 +898,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await RecallTraceAsync(workflow.Id, dto.Opinion, current, cancellationToken);
|
|
|
|
|
|
var isOrgToCenter = await RecallAsync(workflow, dto, flowAssignInfo, targetStepDefine, targetStep,
|
|
|
- EWorkflowTraceType.Recall, stepHandlers, expiredTime, cancellationToken);
|
|
|
+ EWorkflowTraceType.Recall, expiredTime, cancellationToken);
|
|
|
|
|
|
await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
|
@@ -1211,7 +1228,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 创建开始节点
|
|
|
/// </summary>
|
|
|
public WorkflowStep CreateStartStep(Workflow workflow, StepDefine startStepDefine,
|
|
|
- BasicWorkflowDto dto, FlowStepHandler handler, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime)
|
|
|
+ BasicWorkflowDto dto, FlowStepHandler handler, DateTime? expiredTime)
|
|
|
{
|
|
|
//startstep
|
|
|
var nextSteps = _mapper.Map<List<StepSimple>>(startStepDefine.NextSteps);
|
|
@@ -1226,7 +1243,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_mapper.Map(workflow, startStep);
|
|
|
startStep.FlowAssignType = EFlowAssignType.User;
|
|
|
startStep.Handlers = new List<Kv> { new(handler.Key, handler.Value) };
|
|
|
- startStep.StepHandlers = stepHandlers;
|
|
|
+ //startStep.StepHandlers = stepHandlers;
|
|
|
startStep.NextSteps = nextSteps;
|
|
|
startStep.IsMain = true;
|
|
|
startStep.IsOrigin = true;
|
|
@@ -1255,14 +1272,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
StepDefine endStepDefine, WorkflowStep currentStep, ISessionContext current,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var endStepHandles = new List<WorkflowStepHandler>
|
|
|
- {
|
|
|
- WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId, EFlowAssignType.User,
|
|
|
- current.RequiredUserId, current.UserName, current.RequiredOrgId, current.OrgName)
|
|
|
- };
|
|
|
+ //var endStepHandles = new List<WorkflowStepHandler>
|
|
|
+ //{
|
|
|
+ // WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId, EFlowAssignType.User,
|
|
|
+ // current.RequiredUserId, current.UserName, current.RequiredOrgId, current.OrgName)
|
|
|
+ //};
|
|
|
|
|
|
//create endStep
|
|
|
- var endStep = await CreateEndStepAsync(current, workflow, endStepDefine, currentStep, endStepHandles, cancellationToken);
|
|
|
+ var endStep = await CreateEndStepAsync(current, workflow, endStepDefine, currentStep, cancellationToken);
|
|
|
workflow.Steps.Add(endStep);
|
|
|
|
|
|
//update endTrace
|
|
@@ -1363,14 +1380,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
|
|
|
private async Task<WorkflowStep> CreateStartStepAsync(Workflow workflow, StepDefine startStepDefine,
|
|
|
- BasicWorkflowDto dto, FlowStepHandler handler, List<WorkflowStepHandler> stepHandlers, EWorkflowTraceType traceType,
|
|
|
+ BasicWorkflowDto dto, FlowStepHandler handler, EWorkflowTraceType traceType,
|
|
|
DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var startStep = CreateStartStep(workflow, startStepDefine, dto, handler, stepHandlers, expiredTime);
|
|
|
- //await _workflowStepRepository.AddAsync(startStep, cancellationToken);
|
|
|
- await _workflowStepRepository.AddNav(startStep)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
- .ExecuteCommandAsync();
|
|
|
+ var startStep = CreateStartStep(workflow, startStepDefine, dto, handler, expiredTime);
|
|
|
+ await _workflowStepRepository.AddAsync(startStep, cancellationToken);
|
|
|
+ //await _workflowStepRepository.AddNav(startStep)
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
await CreateTraceAsync(workflow, startStep, traceType, cancellationToken);
|
|
|
return startStep;
|
|
|
}
|
|
@@ -1394,7 +1411,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
private async Task<List<WorkflowStep>> CreateNextStepsAsync(Workflow workflow, WorkflowStep currentStep,
|
|
|
BasicWorkflowDto dto, StepDefine nextStepDefine, bool isNextDynamic, FlowAssignInfo flowAssignInfo,
|
|
|
- DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers, bool isStartCountersign,
|
|
|
+ DateTime? expiredTime, bool isStartCountersign,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
List<WorkflowStep> nextSteps = new();
|
|
@@ -1410,13 +1427,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, isStartCountersign, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, isStartCountersign, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//创建普通节点(根据配置)
|
|
|
nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo, EWorkflowTraceType.Normal, expiredTime, stepHandlers, cancellationToken);
|
|
|
+ flowAssignInfo, EWorkflowTraceType.Normal, expiredTime, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -1428,14 +1445,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (csStartStep is null)
|
|
|
throw new UserFriendlyException("未查询到会签节点");
|
|
|
|
|
|
- nextSteps = await CreateCsEndStepsByTargetPrevAsync(workflow, csStartStep, dto, stepHandlers,
|
|
|
- expiredTime, cancellationToken);
|
|
|
+ nextSteps = await CreateCsEndStepsByTargetPrevAsync(workflow, csStartStep, dto, expiredTime, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, isStartCountersign, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, isStartCountersign, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1444,14 +1460,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (dto.BackToCountersignEnd)
|
|
|
{
|
|
|
// check if cs all complete, create next
|
|
|
- nextSteps = await CreateCsEndStepsByTargetPrevAsync(workflow, currentStep, dto, stepHandlers,
|
|
|
+ nextSteps = await CreateCsEndStepsByTargetPrevAsync(workflow, currentStep, dto,
|
|
|
expiredTime, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, isStartCountersign, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, isStartCountersign, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1459,19 +1475,19 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, isStartCountersign, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, isStartCountersign, cancellationToken);
|
|
|
}
|
|
|
else if (isNextDynamic)
|
|
|
{
|
|
|
//创建动态下一级节点
|
|
|
nextSteps = await CreateDynamicStepsAsync(workflow, nextStepDefine, currentStep, dto, flowAssignInfo,
|
|
|
- expiredTime, stepHandlers, cancellationToken);
|
|
|
+ expiredTime, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//创建普通节点(根据配置)
|
|
|
nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto, flowAssignInfo,
|
|
|
- EWorkflowTraceType.Normal, expiredTime, stepHandlers, cancellationToken);
|
|
|
+ EWorkflowTraceType.Normal, expiredTime, cancellationToken);
|
|
|
}
|
|
|
|
|
|
return nextSteps;
|
|
@@ -1484,7 +1500,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
BasicWorkflowDto dto,
|
|
|
FlowAssignInfo flowAssignInfo,
|
|
|
DateTime? expiredTime,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
var handlerType = nextStepDefine.InstancePolicy switch
|
|
@@ -1498,7 +1513,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
};
|
|
|
|
|
|
return await CreateStepsAsync(workflow, nextStepDefine, prevStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
+ flowAssignInfo.FlowAssignType, dto.NextHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
ECountersignPosition.None, false, EWorkflowTraceType.Normal, handlerType, expiredTime,
|
|
|
cancellationToken: cancellationToken);
|
|
|
}
|
|
@@ -1510,7 +1525,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
BasicWorkflowDto dto,
|
|
|
EFlowAssignType flowAssignType,
|
|
|
DateTime? expiredTime,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
bool isStartCountersign,
|
|
|
CancellationToken cancellationToken = default
|
|
|
)
|
|
@@ -1533,7 +1547,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
: ECountersignPosition.Single;
|
|
|
|
|
|
return CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignType, dto.NextHandlers,
|
|
|
- stepHandlers, countersignId, EWorkflowStepStatus.WaitForAccept, nextStepCountersignPosition,
|
|
|
+ countersignId, EWorkflowStepStatus.WaitForAccept, nextStepCountersignPosition,
|
|
|
false, EWorkflowTraceType.Normal, handlerType, expiredTime, cancellationToken: cancellationToken);
|
|
|
}
|
|
|
|
|
@@ -1541,7 +1555,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 根据传入节点的上一节点创建会签汇总节点(汇总传入节点的前一节点)
|
|
|
/// </summary>
|
|
|
private async Task<List<WorkflowStep>> CreateCsEndStepsByTargetPrevAsync(Workflow workflow, WorkflowStep step,
|
|
|
- BasicWorkflowDto dto, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
+ BasicWorkflowDto dto, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var countersignStartStep = workflow.Steps.FirstOrDefault(d => d.Id == step.PrevStepId);
|
|
|
if (countersignStartStep is null)
|
|
@@ -1554,7 +1568,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
// 创建会签汇总节点
|
|
|
var countersignEndStep =
|
|
|
- await CreateCountersignEndStepAsync(countersignStartStep, dto, stepHandlers, expiredTime, cancellationToken);
|
|
|
+ await CreateCountersignEndStepAsync(countersignStartStep, dto, expiredTime, cancellationToken);
|
|
|
nextSteps = new List<WorkflowStep> { countersignEndStep };
|
|
|
|
|
|
//create trace
|
|
@@ -1567,7 +1581,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
|
|
|
private async Task<WorkflowStep> CreateCountersignEndStepAsync(WorkflowStep countersignStartStep,
|
|
|
- BasicWorkflowDto dto, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime,
|
|
|
+ BasicWorkflowDto dto, DateTime? expiredTime,
|
|
|
CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
var csEndStep = _mapper.Map<WorkflowStep>(countersignStartStep);
|
|
@@ -1587,15 +1601,15 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
csEndStep.Handlers = countersignStartStep.Handlers
|
|
|
.Where(d => d.Key == countersignStartStep.HandlerId || d.Key == countersignStartStep.HandlerOrgId)
|
|
|
.ToList();
|
|
|
- csEndStep.StepHandlers = stepHandlers;
|
|
|
+ //csEndStep.StepHandlers = stepHandlers;
|
|
|
|
|
|
csEndStep.Reset();
|
|
|
csEndStep.ResetParameters();
|
|
|
|
|
|
- //await _workflowStepRepository.AddAsync(csEndStep, cancellationToken);
|
|
|
- await _workflowStepRepository.AddNav(csEndStep)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
- .ExecuteCommandAsync();
|
|
|
+ await _workflowStepRepository.AddAsync(csEndStep, cancellationToken);
|
|
|
+ //await _workflowStepRepository.AddNav(csEndStep)
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
return csEndStep;
|
|
|
}
|
|
|
|
|
@@ -1627,9 +1641,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
current.OrgAreaCode, current.OrgAreaName,
|
|
|
current.OrgIsCenter, opinion, nextStepCode);
|
|
|
|
|
|
- var handler = step.FindActualHandler(current.Roles, current.RequiredUserId, current.RequiredOrgId);
|
|
|
- if (handler is not null)
|
|
|
- handler.IsActualHandler = true;
|
|
|
+ //var handler = step.FindActualHandler(current.Roles, current.RequiredUserId, current.RequiredOrgId);
|
|
|
+ //if (handler is not null)
|
|
|
+ // handler.IsActualHandler = true;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1720,14 +1734,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
newStep.IsOrigin = step.IsOrigin;
|
|
|
//newStep.ParentId = step.ParentId;
|
|
|
newStep.Handlers = step.Handlers;
|
|
|
- newStep.StepHandlers = _mapper.Map<List<WorkflowStepHandler>>(step.StepHandlers);
|
|
|
+ //newStep.StepHandlers = _mapper.Map<List<WorkflowStepHandler>>(step.StepHandlers);
|
|
|
newStep.StartCountersignId = step.StartCountersignId;
|
|
|
newStep.CountersignId = step.CountersignId;
|
|
|
newStep.IsStartedCountersignEnd = step.IsStartedCountersignEnd;
|
|
|
- //await _workflowStepRepository.AddAsync(newStep, cancellationToken);
|
|
|
- await _workflowStepRepository.AddNav(newStep)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
- .ExecuteCommandAsync();
|
|
|
+ await _workflowStepRepository.AddAsync(newStep, cancellationToken);
|
|
|
+ //await _workflowStepRepository.AddNav(newStep)
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
|
|
|
await CreateTraceAsync(workflow, newStep, traceType, cancellationToken);
|
|
|
|
|
@@ -1910,7 +1924,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
private async Task<bool> RecallAsync(Workflow workflow, BasicWorkflowDto dto, FlowAssignInfo flowAssignInfo,
|
|
|
StepDefine targetStepDefine, WorkflowStep targetStep, EWorkflowTraceType traceType,
|
|
|
- List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
+ DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var targetIsStartStep = targetStepDefine.StepType is EStepType.Start;
|
|
|
|
|
@@ -1941,9 +1955,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
var targetStepNew = targetIsStartStep
|
|
|
? await CreateStartStepAsync(workflow, targetStepDefine, dto,
|
|
|
- dto.NextHandlers.First(), stepHandlers, traceType, expiredTime, cancellationToken)
|
|
|
+ dto.NextHandlers.First(), traceType, expiredTime, cancellationToken)
|
|
|
: (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers,
|
|
|
+ flowAssignInfo.FlowAssignType, dto.NextHandlers,
|
|
|
null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceType,
|
|
|
null, expiredTime, cancellationToken: cancellationToken)).First();
|
|
|
|
|
@@ -1997,7 +2011,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
Workflow workflow,
|
|
|
StepDefine endStepDefine,
|
|
|
WorkflowStep prevStep,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
if (workflow.Steps.Any(d => d.StepType == EStepType.End))
|
|
@@ -2014,7 +2027,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
};
|
|
|
|
|
|
var step = CreateStep(workflow, endStepDefine, prevStep, null, handler,
|
|
|
- stepHandlers, null, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
+ null, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
ECountersignPosition.None, DateTime.Now, endStepDefine.Name, true);
|
|
|
|
|
|
//step.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
@@ -2039,7 +2052,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
FlowAssignInfo flowAssignInfo,
|
|
|
EWorkflowTraceType traceType,
|
|
|
DateTime? expiredTime,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
//List<Kv> handlers;
|
|
@@ -2067,7 +2079,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//}
|
|
|
|
|
|
return await CreateStepsAsync(workflow, stepDefine, prevStep, dto, /*dto.IsStartCountersign,*/
|
|
|
- flowAssignInfo.FlowAssignType, handlers, stepHandlers, null,
|
|
|
+ flowAssignInfo.FlowAssignType, handlers, null,
|
|
|
EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None,
|
|
|
true, traceType, null, expiredTime, cancellationToken);
|
|
|
}
|
|
@@ -2080,7 +2092,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//bool isStartCountersign,
|
|
|
EFlowAssignType? flowAssignType,
|
|
|
List<FlowStepHandler> handlers,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
string? countersignId,
|
|
|
EWorkflowStepStatus stepStatus,
|
|
|
ECountersignPosition csPosition,
|
|
@@ -2099,7 +2110,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
var isMain = handlers.Count == 1 || (handlers.Count > 1 && handler.Key == dto.NextMainHandler);
|
|
|
var step = CreateStep(workflow, stepDefine, prevStep, flowAssignType,
|
|
|
- handler, stepHandlers, dto.NextStepCode, countersignId, stepStatus, csPosition, expiredTime,
|
|
|
+ handler, dto.NextStepCode, countersignId, stepStatus, csPosition, expiredTime,
|
|
|
dto.NextStepName, isOrigin, isMain, handlerType, dto.BusinessType);
|
|
|
|
|
|
//var stepHandler = stepHandlers.First(d => d.GetHandler().Key == handler.Key);
|
|
@@ -2117,10 +2128,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
// steps.Add(step);
|
|
|
//}
|
|
|
|
|
|
- //await _workflowStepRepository.AddRangeAsync(steps, cancellationToken);
|
|
|
- await _workflowStepRepository.AddNav(steps)
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
- .ExecuteCommandAsync();
|
|
|
+ await _workflowStepRepository.AddRangeAsync(steps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.AddNav(steps)
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
|
|
|
//create traces todo add range traces
|
|
|
foreach (var step in steps)
|
|
@@ -2374,7 +2385,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
WorkflowStep prevStep,
|
|
|
EFlowAssignType? flowAssignType,
|
|
|
FlowStepHandler handler,
|
|
|
- List<WorkflowStepHandler> stepHandlers,
|
|
|
string nextStepCode,
|
|
|
string? countersignId,
|
|
|
EWorkflowStepStatus stepStatus,
|
|
@@ -2397,7 +2407,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
step.FlowAssignType = flowAssignType;
|
|
|
step.Handlers = new List<Kv> { new(handler.Key, handler.Value) };
|
|
|
- step.StepHandlers = stepHandlers;
|
|
|
+ //step.StepHandlers = stepHandlers;
|
|
|
step.NextStepCode = step.StepType is EStepType.End ? string.Empty : nextStepCode;
|
|
|
step.IsMain = isMainHandler;
|
|
|
step.PrevStepId = prevStep.Id;
|