public StepAction Create(ParameterManager processParameterManager) { try { var stepAction = new StepAction { _actionName = _actionName, _bindKey = _bindKey, _bindingDictionaryName = _bindingDictionaryName }; if (_bindToResourceTemplate) { stepAction.AssignAction(processParameterManager); } else { stepAction.Action = Action.Clone(); stepAction.Action.ActionContainer = Action.ActionContainer; } return(stepAction); } catch (Exception e) { Log.Error($"创建StepAction实例失败,Step名称为:【{_actionName}】,异常为{e.Message}"); return(null); } }
public Step CreateInstance(ParameterManager processParameterManager) { var step = new Step(OwnerProcess, Name, StepId, NextStep) { OwnerProcessInstance = OwnerProcessInstance, InParameterBinds = InParameterBinds.Select(inParameterBind => inParameterBind.CreateParameterBind()) .ToList(), OutParameterBinds = OutParameterBinds.Select(outParameterBind => outParameterBind.CreateParameterBind()) .ToList(), StepAction = StepAction.Create(processParameterManager), _msPerTicket = _msPerTicket, _waitTicks = _waitTicks }; var showParameters = ShowParameters.ToList(); var stepChecks = _stepChecks.Select(stepCheck => stepCheck.Create(this)).ToList(); step.ShowParameters = showParameters; if (stepChecks.Count > 0) { step._stepChecks = stepChecks; } return(step); }
public void Execute() { try { if (LogOutput) { Log.Info( $"执行单步过程:PROCESS:{OwnerProcess.ProcessName}.{Name},当前同步模式为:{IsSync},pid为:【{OwnerProcessInstance.Pid}】"); } // 打印要求的过程参数 if (ShowParameters.Count > 0) { var processParameters = GetShowProcessParameters(); Log.Info("执行前."); foreach (var strPar in ShowParameters) { if (processParameters.ContainsKey(strPar)) { Log.Info( $"参数:{strPar} 值:{processParameters[strPar].GetValueInString()}.pid为:【{OwnerProcessInstance.Pid}】"); } else { Log.Error($"找不到过程参数:{strPar},pid为:【{OwnerProcessInstance.Pid}】"); } } } if (StepAction != null) { void ExeCuteStepCoreFunction() { // 把Step参数导入Action参数 foreach (var bind in InParameterBinds) { bind.AssignValue(OwnerProcessInstance.ProcessParameterManager, StepAction.Action.ActionInParameterManager); } StepAction.Execute(); } lock (_actionParameterLocker) { //Log.Info($"{StepAction.Action.Name}正在执行,Action参数已进锁,pid为:【{OwnerProcessInstance.Pid}】"); ExeCuteStepCoreFunction(); //Log.Info($"{StepAction.Action.Name}执行完毕,Action参数已解锁, pid为:【{OwnerProcessInstance.Pid}】"); } // sunjian 2019-12-09 注释 if (IsSync) { Thread.Sleep(Redundancy.SyncInterval + 100); } } UnHoldStepIDs(); // David 2017年7月19日13:18:34 } catch (Exception e) { Log.Error($"Step:[{Name}]执行异常,异常为{e}"); throw new InvalidOperationException($"Step:[{Name}]执行异常,异常为{e}"); } }
public void Dispose() { OwnerProcessInstance?.Dispose(); StepAction?.Dispose(); }