/// <summary>
        /// 执行子流程节点
        /// </summary>
        internal override void ExecuteWorkItem()
        {
            try
            {
                if (base.Linker.FromActivity.ActivityType == ActivityTypeEnum.SubProcessNode)
                {
                    //检查子流程是否结束
                    var  pim         = new ProcessInstanceManager();
                    bool isCompleted = pim.CheckSubProcessInstanceCompleted(Session.Connection,
                                                                            base.Linker.FromActivityInstance.ID,
                                                                            base.Linker.FromActivityInstance.ActivityGUID,
                                                                            Session.Transaction);
                    if (isCompleted == false)
                    {
                        throw new WfRuntimeException(LocalizeHelper.GetEngineMessage("nodemediatorsubprocess.ExecuteWorkItem.notcompleted.warn",
                                                                                     string.Format("Activity:{0}", base.Linker.FromActivity.ActivityName)));
                    }
                }

                //完成当前的任务节点
                bool canContinueForwardCurrentNode = CompleteWorkItem(ActivityForwardContext.TaskID,
                                                                      ActivityForwardContext.ActivityResource,
                                                                      this.Session);

                //获取下一步节点列表:并继续执行
                if (canContinueForwardCurrentNode)
                {
                    ContinueForwardCurrentNode(ActivityForwardContext.IsNotParsedByTransition, this.Session);
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
        /// <summary>
        /// 执行子流程节点
        /// </summary>
        internal override void ExecuteWorkItem()
        {
            try
            {
                if (base.Linker.FromActivity.ActivityType == ActivityTypeEnum.SubProcessNode)
                {
                    //检查子流程是否结束
                    var  pim         = new ProcessInstanceManager();
                    bool isCompleted = pim.CheckSubProcessInstanceCompleted(Session.Connection,
                                                                            base.Linker.FromActivityInstance.ID,
                                                                            base.Linker.FromActivityInstance.ActivityGUID,
                                                                            Session.Transaction);
                    if (isCompleted == false)
                    {
                        throw new WfRuntimeException(string.Format("当前子流程:[{0}]并没有到达结束状态,主流程无法向下执行。",
                                                                   base.Linker.FromActivity.ActivityName));
                    }
                }

                //完成当前的任务节点
                bool canContinueForwardCurrentNode = CompleteWorkItem(ActivityForwardContext.TaskView.TaskID,
                                                                      ActivityForwardContext.ActivityResource,
                                                                      this.Session);

                if (canContinueForwardCurrentNode)
                {
                    //获取下一步节点列表:并继续执行
                    ContinueForwardCurrentNode(false);
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 执行子流程节点
        /// </summary>
        internal override void ExecuteWorkItem()
        {
            try
            {
                if (base.Linker.FromActivity.ActivityType == ActivityTypeEnum.SubProcessNode)
                {
                    //检查子流程是否结束
                    var  pim         = new ProcessInstanceManager(_serviceProvider);
                    bool isCompleted = pim.CheckSubProcessInstanceCompleted(
                        base.Linker.FromActivityInstance.Fid,
                        base.Linker.FromActivityInstance.NodeId);
                    if (isCompleted == false)
                    {
                        throw new WfRuntimeException(string.Format("当前子流程:[{0}]并没有到达结束状态,主流程无法向下执行。",
                                                                   base.Linker.FromActivity.ActivityName));
                    }
                }

                //完成当前的任务节点
                bool canContinueForwardCurrentNode = CompleteWorkItem(ActivityForwardContext.TaskView.Fid);

                if (canContinueForwardCurrentNode)
                {
                    //获取下一步节点列表:并继续执行
                    ContinueForwardCurrentNode(false);
                }
            }
            catch
            {
                throw;
            }
        }