|
@@ -98,7 +98,8 @@ 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, CancellationToken cancellationToken)
|
|
|
+ ECounterSignType? counterSignType, DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers,
|
|
|
+ CancellationToken cancellationToken)
|
|
|
{
|
|
|
//1. 创建first节点 (和trace)2.办理开始节点
|
|
|
|
|
@@ -121,7 +122,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//firststeps
|
|
|
var firstSteps = await CreateNextStepsAsync(workflow, startStep, dto, firstStepDefine,
|
|
|
- isNextDynamic, flowAssignInfo, expiredTime, cancellationToken);
|
|
|
+ isNextDynamic, flowAssignInfo, expiredTime, stepHandlers, cancellationToken);
|
|
|
if (firstSteps.Any())
|
|
|
workflow.Steps.AddRange(firstSteps);
|
|
|
|
|
@@ -193,7 +194,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (withCountersigns)
|
|
|
query = query.Includes(d => d.Countersigns, x => x.Members);
|
|
|
if (withSteps)
|
|
|
- query = query.Includes(d => d.Steps);
|
|
|
+ query = query.Includes(d => d.Steps, x => x.StepHandlers);
|
|
|
//if (withTraces)
|
|
|
// query = query.Includes(d => d.Traces);
|
|
|
|
|
@@ -313,7 +314,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task NextAsync(Workflow workflow, WorkflowStep currentStep, NextWorkflowDto dto,
|
|
|
StepDefine nextStepDefine, bool isNextDynamic, FlowAssignInfo flowAssignInfo,
|
|
|
- DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
+ DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers, CancellationToken cancellationToken)
|
|
|
{
|
|
|
ValidatePermission(workflow, _sessionContext.RequiredOrgId, _sessionContext.RequiredUserId);
|
|
|
//CheckWhetherRunnable(workflow.Status);
|
|
@@ -405,7 +406,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
.ExecuteCommandAsync();
|
|
|
}
|
|
|
|
|
|
- await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);
|
|
|
+ await _workflowStepRepository.UpdateNav(updateSteps)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
|
|
|
await NextTraceAsync(workflow, dto, currentStep, cancellationToken);
|
|
|
|
|
@@ -454,7 +458,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//创建下一/N个节点(会签汇总节点:会签未全部办理时不创建,最后一个会签办理节点创建会签汇总节点)
|
|
|
var nextSteps = await CreateNextStepsAsync(workflow, currentStep, dto, nextStepDefine, isNextDynamic,
|
|
|
- flowAssignInfo, expiredTime, cancellationToken);
|
|
|
+ flowAssignInfo, expiredTime, stepHandlers, cancellationToken);
|
|
|
|
|
|
//赋值当前节点的下级办理节点
|
|
|
if (dto.IsStartCountersign
|
|
@@ -693,6 +697,20 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
return steps.Select(d => d.WorkflowId).ToList();
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 查询工单办理中的一级部门
|
|
|
+ /// </summary>
|
|
|
+ public async Task<ICollection<Kv>> GetLevelOneOrgsAsync(string workflowId, CancellationToken cancellation)
|
|
|
+ {
|
|
|
+ var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellation);
|
|
|
+ return workflow.Steps.Where(d => d.BusinessType == EBusinessType.Department &&
|
|
|
+ d.HandlerType == EHandlerType.OrgLevel &&
|
|
|
+ d.StepHandlers.Any(d =>
|
|
|
+ !string.IsNullOrEmpty(d.OrgId) && d.OrgId.CheckIfOrgLevelIs(1)))
|
|
|
+ .Select(d => new Kv(d.StepHandlers.First().OrgId, d.StepHandlers.First().OrgName))
|
|
|
+ .ToList();
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查找当前会签内所有节点(含start,end)
|
|
|
/// </summary>
|
|
@@ -717,7 +735,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 撤回(返回到之前任意节点)
|
|
|
/// </summary>
|
|
|
public async Task RecallAsync(Workflow workflow, RecallDto dto, StepDefine targetStepDefine,
|
|
|
- FlowAssignInfo flowAssignInfo, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
+ FlowAssignInfo flowAssignInfo, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime,
|
|
|
+ CancellationToken cancellationToken)
|
|
|
{
|
|
|
var targetStep = workflow.Steps.FirstOrDefault(d => d.Code == dto.NextStepCode && d.IsOrigin);
|
|
|
if (targetStep is null)
|
|
@@ -727,7 +746,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await RecallTraceAsync(workflow.Id, dto.Opinion, cancellationToken);
|
|
|
|
|
|
var isOrgToCenter = await RecallAsync(workflow, dto, flowAssignInfo, targetStepDefine, targetStep,
|
|
|
- EWorkflowTraceStatus.Recall, expiredTime, cancellationToken);
|
|
|
+ EWorkflowTraceStatus.Recall, stepHandlers, expiredTime, cancellationToken);
|
|
|
|
|
|
workflow.ResetHandlers(flowAssignInfo.FlowAssignType, flowAssignInfo.HandlerObjects);
|
|
|
|
|
@@ -1075,7 +1094,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 创建开始节点
|
|
|
/// </summary>
|
|
|
public WorkflowStep CreateStartStep(Workflow workflow, StepDefine startStepDefine,
|
|
|
- BasicWorkflowDto dto, List<Kv> handles, DateTime? expiredTime)
|
|
|
+ BasicWorkflowDto dto, List<Kv> handles, List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime)
|
|
|
{
|
|
|
//startstep
|
|
|
var nextSteps = _mapper.Map<List<StepSimple>>(startStepDefine.NextSteps);
|
|
@@ -1090,6 +1109,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_mapper.Map(dto, startStep);
|
|
|
_mapper.Map(workflow, startStep);
|
|
|
startStep.Handlers = handles;
|
|
|
+ startStep.StepHandlers = stepHandlers;
|
|
|
startStep.NextSteps = nextSteps;
|
|
|
startStep.IsMain = true;
|
|
|
startStep.IsOrigin = true;
|
|
@@ -1115,8 +1135,12 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
WorkflowStep currentStep, EReviewResult? reviewResult = EReviewResult.Unknown,
|
|
|
CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
+ var endStepHandles = new List<WorkflowStepHandler>{WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
+ EFlowAssignType.User, _sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
+ _sessionContext.RequiredOrgId, _sessionContext.OrgName)};
|
|
|
+
|
|
|
//create endStep
|
|
|
- var endStep = await CreateEndStepAsync(workflow, endStepDefine, currentStep, cancellationToken);
|
|
|
+ var endStep = await CreateEndStepAsync(workflow, endStepDefine, currentStep, endStepHandles, cancellationToken);
|
|
|
workflow.Steps.Add(endStep);
|
|
|
|
|
|
//update endTrace
|
|
@@ -1222,11 +1246,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
|
|
|
private async Task<WorkflowStep> CreateStartStepAsync(Workflow workflow, StepDefine startStepDefine,
|
|
|
- BasicWorkflowDto dto, List<Kv> handles, EWorkflowTraceStatus traceStatus, DateTime? expiredTime,
|
|
|
- CancellationToken cancellationToken)
|
|
|
+ BasicWorkflowDto dto, List<Kv> handles, List<WorkflowStepHandler> stepHandlers, EWorkflowTraceStatus traceStatus,
|
|
|
+ DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- var startStep = CreateStartStep(workflow, startStepDefine, dto, handles, expiredTime);
|
|
|
- await _workflowStepRepository.AddAsync(startStep, cancellationToken);
|
|
|
+ var startStep = CreateStartStep(workflow, startStepDefine, dto, handles, stepHandlers, expiredTime);
|
|
|
+ //await _workflowStepRepository.AddAsync(startStep, cancellationToken);
|
|
|
+ await _workflowStepRepository.AddNav(startStep)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
await CreateTraceAsync(workflow, startStep, traceStatus, cancellationToken);
|
|
|
return startStep;
|
|
|
}
|
|
@@ -1250,7 +1277,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, CancellationToken cancellationToken)
|
|
|
+ DateTime? expiredTime, List<WorkflowStepHandler> stepHandlers, CancellationToken cancellationToken)
|
|
|
{
|
|
|
List<WorkflowStep> nextSteps = new();
|
|
|
if (currentStep.IsInCountersign())
|
|
@@ -1265,13 +1292,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//创建普通节点(根据配置)
|
|
|
nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo, EWorkflowTraceStatus.Normal, expiredTime, cancellationToken);
|
|
|
+ flowAssignInfo, EWorkflowTraceStatus.Normal, expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -1298,7 +1325,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1306,19 +1333,19 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
//依据会签策略创建会签下一级节点
|
|
|
nextSteps = await CreateCountersignStepsAsync(workflow, nextStepDefine, currentStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, expiredTime, cancellationToken);
|
|
|
+ flowAssignInfo.FlowAssignType, expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
else if (isNextDynamic)
|
|
|
{
|
|
|
//创建动态下一级节点
|
|
|
nextSteps = await CreateDynamicStepsAsync(workflow, nextStepDefine, currentStep, dto, flowAssignInfo,
|
|
|
- expiredTime, cancellationToken);
|
|
|
+ expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//创建普通节点(根据配置)
|
|
|
nextSteps = await CreateConfigStepsAsync(workflow, nextStepDefine, currentStep, dto, flowAssignInfo,
|
|
|
- EWorkflowTraceStatus.Normal, expiredTime, cancellationToken);
|
|
|
+ EWorkflowTraceStatus.Normal, expiredTime, stepHandlers, cancellationToken);
|
|
|
}
|
|
|
|
|
|
return nextSteps;
|
|
@@ -1331,6 +1358,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
BasicWorkflowDto dto,
|
|
|
FlowAssignInfo flowAssignInfo,
|
|
|
DateTime? expiredTime,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
var handlerType = nextStepDefine.InstancePolicy switch
|
|
@@ -1344,7 +1372,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
};
|
|
|
|
|
|
return await CreateStepsAsync(workflow, nextStepDefine, prevStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, dto.NextHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
+ flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
ECountersignPosition.None, false, EWorkflowTraceStatus.Normal, handlerType, expiredTime, cancellationToken);
|
|
|
}
|
|
|
|
|
@@ -1355,6 +1383,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
BasicWorkflowDto dto,
|
|
|
EFlowAssignType flowAssignType,
|
|
|
DateTime? expiredTime,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken
|
|
|
)
|
|
|
{
|
|
@@ -1370,7 +1399,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
|
};
|
|
|
|
|
|
- return CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignType, dto.NextHandlers,
|
|
|
+ return CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignType, dto.NextHandlers, stepHandlers,
|
|
|
countersignId, EWorkflowStepStatus.WaitForAccept, prevStep.GetNextStepCountersignPosition(),
|
|
|
false, EWorkflowTraceStatus.Normal, handlerType, expiredTime, cancellationToken);
|
|
|
}
|
|
@@ -1388,7 +1417,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
//会签未全部办理则不创建汇总节点
|
|
|
if (prevStep.StartedCountersignHasAllHandled())
|
|
|
{
|
|
|
- //todo 创建会签汇总节点
|
|
|
+ // 创建会签汇总节点
|
|
|
var countersignEndStep =
|
|
|
await CreateCountersignEndStepAsync(prevStep, dto, expiredTime, cancellationToken);
|
|
|
nextSteps = new List<WorkflowStep> { countersignEndStep };
|
|
@@ -1456,6 +1485,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_sessionContext.RequiredOrgId, _sessionContext.OrgName,
|
|
|
_sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
|
_sessionContext.OrgIsCenter, opinion, nextStepCode);
|
|
|
+
|
|
|
+ var handler = step.FindActualHandler(_sessionContext.Roles, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
|
|
|
+ if (handler is not null)
|
|
|
+ handler.IsActualHandler = true;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1723,7 +1756,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
private async Task<bool> RecallAsync(Workflow workflow, BasicWorkflowDto dto, FlowAssignInfo flowAssignInfo,
|
|
|
StepDefine targetStepDefine, WorkflowStep targetStep, EWorkflowTraceStatus traceStatus,
|
|
|
- DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
+ List<WorkflowStepHandler> stepHandlers, DateTime? expiredTime, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var targetIsStartStep = targetStepDefine.StepType is EStepType.Start;
|
|
|
|
|
@@ -1750,10 +1783,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
workflow.SetStatusRunnable();
|
|
|
|
|
|
var targetStepNew = targetIsStartStep
|
|
|
- ? await CreateStartStepAsync(workflow, targetStepDefine, dto, dto.NextHandlers, traceStatus, expiredTime,
|
|
|
+ ? await CreateStartStepAsync(workflow, targetStepDefine, dto, dto.NextHandlers, stepHandlers, traceStatus, expiredTime,
|
|
|
cancellationToken)
|
|
|
: (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto,
|
|
|
- flowAssignInfo.FlowAssignType, dto.NextHandlers,
|
|
|
+ flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers,
|
|
|
null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus,
|
|
|
null, expiredTime, cancellationToken)).First();
|
|
|
|
|
@@ -1804,6 +1837,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
Workflow workflow,
|
|
|
StepDefine endStepDefine,
|
|
|
WorkflowStep prevStep,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
if (workflow.Steps.Any(d => d.StepType == EStepType.End))
|
|
@@ -1812,8 +1846,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var handler = new Kv { Key = _sessionContext.RequiredUserId, Value = _sessionContext.UserName };
|
|
|
|
|
|
var step = CreateStep(workflow, endStepDefine, prevStep, null, new List<Kv> { handler },
|
|
|
- null, null, null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, DateTime.Now,
|
|
|
- endStepDefine.Name, true);
|
|
|
+ stepHandlers, null, null, null, EWorkflowStepStatus.WaitForAccept,
|
|
|
+ ECountersignPosition.None, DateTime.Now, endStepDefine.Name, true);
|
|
|
|
|
|
//step.Accept(_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
// _sessionContext.RequiredOrgId, _sessionContext.OrgName,
|
|
@@ -1837,6 +1871,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
FlowAssignInfo flowAssignInfo,
|
|
|
EWorkflowTraceStatus traceStatus,
|
|
|
DateTime? expiredTime,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
List<Kv> handlers;
|
|
@@ -1859,8 +1894,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
|
|
|
return await CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignInfo.FlowAssignType, handlers,
|
|
|
- null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus,
|
|
|
- null, expiredTime, cancellationToken);
|
|
|
+ stepHandlers, null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None,
|
|
|
+ true, traceStatus, null, expiredTime, cancellationToken);
|
|
|
}
|
|
|
|
|
|
private async Task<List<WorkflowStep>> CreateStepsAsync(
|
|
@@ -1870,6 +1905,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
BasicWorkflowDto dto,
|
|
|
EFlowAssignType? flowAssignType,
|
|
|
List<Kv> handlers,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
string? countersignId,
|
|
|
EWorkflowStepStatus stepStatus,
|
|
|
ECountersignPosition csPosition,
|
|
@@ -1890,7 +1926,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
foreach (var handler in handlers)
|
|
|
{
|
|
|
var step = CreateStep(workflow, stepDefine, prevStep, flowAssignType, new List<Kv> { handler },
|
|
|
- dto.NextStepCode, dto.NextMainHandler, countersignId,
|
|
|
+ stepHandlers, dto.NextStepCode, dto.NextMainHandler, countersignId,
|
|
|
stepStatus, csPosition, expiredTime, dto.NextStepName, isOrigin, handlerType);
|
|
|
|
|
|
steps.Add(step);
|
|
@@ -1898,14 +1934,17 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- var step = CreateStep(workflow, stepDefine, prevStep, flowAssignType, handlers,
|
|
|
+ var step = CreateStep(workflow, stepDefine, prevStep, flowAssignType, handlers, stepHandlers,
|
|
|
dto.NextStepCode, dto.NextMainHandler, countersignId,
|
|
|
stepStatus, csPosition, expiredTime, dto.NextStepName, isOrigin, handlerType);
|
|
|
|
|
|
steps.Add(step);
|
|
|
}
|
|
|
|
|
|
- await _workflowStepRepository.AddRangeAsync(steps, cancellationToken);
|
|
|
+ //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)
|
|
@@ -2158,6 +2197,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
WorkflowStep prevStep,
|
|
|
EFlowAssignType? flowAssignType,
|
|
|
List<Kv> handlers,
|
|
|
+ List<WorkflowStepHandler> stepHandlers,
|
|
|
string nextStepCode,
|
|
|
string? nextMainHandler,
|
|
|
string? countersignId,
|
|
@@ -2166,7 +2206,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
DateTime? expiredTime,
|
|
|
string stepName,
|
|
|
bool isOrigin,
|
|
|
- EHandlerType? handlerType = null //动态节点依据动态策略判断
|
|
|
+ EHandlerType? handlerType = null, //动态节点依据动态策略判断
|
|
|
+ string? opinion = null//汇总以及会签汇总节点需要提前为option赋值之前办理节点内容
|
|
|
)
|
|
|
{
|
|
|
if (!handlers.Any())
|
|
@@ -2178,6 +2219,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
step.FlowAssignType = flowAssignType;
|
|
|
step.Handlers = handlers;
|
|
|
+ step.StepHandlers = stepHandlers;
|
|
|
step.NextStepCode = step.StepType is EStepType.End ? string.Empty : nextStepCode;
|
|
|
step.IsMain = isMain;
|
|
|
step.PrevStepId = prevStep.Id;
|
|
@@ -2193,6 +2235,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
if (handlerType.HasValue)
|
|
|
step.HandlerType = handlerType.Value;
|
|
|
|
|
|
+ if(!string.IsNullOrEmpty(opinion))
|
|
|
+ step.Opinion = opinion;
|
|
|
+
|
|
|
return step;
|
|
|
}
|
|
|
|