/// <summary> /// 运行执行方法 /// </summary> /// <param name="session">会话</param> internal override void ExecuteInstanceImp(IDbSession session) { try { var runningExecutionContext = ActivityForwardContext.CreateRunningContext(base.TaskView, base.ProcessModel, base.ActivityResource); //执行节点 NodeMediator mediator = NodeMediatorFactory.CreateNodeMediator(runningExecutionContext, session); mediator.Linker.FromActivityInstance = RunningActivityInstance; mediator.ExecuteWorkItem(); //构造回调函数需要的数据 var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Success; result.Message = mediator.GetNodeMediatedMessage(); } catch (WfRuntimeException rx) { var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.RunApp_RuntimeError; result.Message = rx.Message; throw rx; } catch (System.Exception ex) { var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.RunApp_RuntimeError; result.Message = ex.Message; throw ex; } }
/// <summary> /// 运行执行方法 /// </summary> /// <param name="session">会话</param> internal override void ExecuteInstanceImp(IDbSession session) { var result = base.WfExecutedResult; result.ProcessInstanceIDStarted = RunningActivityInstance.ProcessInstanceID; try { //创建运行时上下文 var runningExecutionContext = ActivityForwardContext.CreateRunningContext(base.TaskView, base.ProcessModel, base.ActivityResource, false, session); //----> 节点开始流转,调用活动开始执行的委托事件 DelegateExecutor.InvokeExternalDelegate(session, EventFireTypeEnum.OnActivityExecuting, runningExecutionContext); //执行节点流转过程 NodeMediator mediator = NodeMediatorFactory.CreateNodeMediator(runningExecutionContext, session); mediator.Linker.FromActivityInstance = RunningActivityInstance; mediator.ExecuteWorkItem(); //----> 节点流转完成后,调用活动完成执行的委托事件 DelegateExecutor.InvokeExternalDelegate(session, EventFireTypeEnum.OnActivityExecuted, runningExecutionContext); //构造回调函数需要的数据 result.Status = WfExecutedStatus.Success; result.Message = mediator.GetNodeMediatedMessage(); } catch (WfRuntimeException rx) { result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.RunApp_RuntimeError; result.Message = rx.Message; throw rx; } catch (System.Exception ex) { result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.RunApp_RuntimeError; result.Message = ex.Message; throw ex; } }
/// <summary> /// 加签执行方法 /// </summary> /// <param name="session">会话</param> internal override void ExecuteInstanceImp(IDbSession session) { //根据加签类型选项,生成新的ActivityInstance记录 //加签类型有前加签,后加签和并加签 try { var signforwardExecutionContext = ActivityForwardContext.CreateRunningContext(base.TaskView, base.ProcessModel, base.ActivityResource, false, session); NodeMediator mediator = NodeMediatorFactory.CreateNodeMediator(signforwardExecutionContext, session); mediator.ExecuteWorkItem(); var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Success; result.Message = mediator.GetNodeMediatedMessage(); } catch (WfRuntimeException rx) { var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.SignForward_RuntimeError; result.Message = rx.Message; throw rx; } catch (System.Exception ex) { var result = base.WfExecutedResult; result.Status = WfExecutedStatus.Failed; result.ExceptionType = WfExceptionType.SignForward_RuntimeError; result.Message = ex.Message; throw ex; } }