示例#1
0
 ///事件处理方法
 public void Notify(params object[] args)
 {
     if (this.EntityKey == null)
     {
         return;
     }
     if (args.Length == 1)
     {
         UFIDA.U9.GeneralEvents.ApprovalResultEvent ev = args[0] as UFIDA.U9.GeneralEvents.ApprovalResultEvent;
         if (ev != null)
         {
             if (this.EntityKey.ID == ev.EntityKey.ID)
             {
                 using (ISession session = Session.Open())
                 {
                     PrePayment entity = this.EntityKey.GetEntity() as PrePayment;
                     entity.StateMachineInstance.Approving_ApproveEventDriven(ev);
                     session.InList(entity);
                     session.Commit();
                 }
                 EventHelper.UnsubscribeApprovalResultEvent(entityKey, this);
             }
         }
     }
 }
示例#2
0
            //ApproveEventDriven事件驱动方法的实现,开发人员在此实现ApproveEventDriven的逻辑
            private State Approving_ApproveEventDrivenImp(UFIDA.U9.GeneralEvents.ApprovalResultEvent ev)
            {
                State toState = CurrentState;

                if (this.Entity.DocumentType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ComfirmWork || this.Entity.DocumentType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.InTimeComfirm)
                {
                    toState = State.Approved;
                    return(toState);
                }
                //终止审批事件
                if (ev.IsTerminate)
                {
                    ApprovalService.Instance.TerminateApproval(this.Entity);
                    toState = State.Opened;
                }
                else
                {
                    if (ev.IsApprovaled)
                    {
                        toState = State.Approved;
                    }
                    else
                    {
                        toState = State.Opened;
                    }
                }
                return(toState);
            }
            //AppovedEventDriven事件驱动方法的实现,开发人员在此实现AppovedEventDriven的逻辑
            private State Appover_AppovedEventDrivenImp(UFIDA.U9.GeneralEvents.ApprovalResultEvent ev)
            {
                State toState = CurrentState;

                //TODO:实现转移条件
                if (this.Entity.DocType.ConfirmType == UFIDA.U9.Base.Doc.ConfirmTypeEnum.ComfirmWork)
                {
                    toState = State.Appover;
                    return(toState);
                }
                //终止审批事件
                if (ev.IsTerminate)
                {
                    ApprovalService.Instance.TerminateApproval(this.Entity);
                    toState = State.Opened;
                }
                else if (ev.IsApprovaled)
                {
                    toState = State.UnAppover;
                }
                else
                {
                    FlowInstance flow = FlowInstance.Finder.Find("SourceOrg=@SourceOrg and OwnerEntity.EntityID=@EntityID and OwnerEntity.EntityType=@EntityType order by ID desc", new OqlParam(this.Entity.Org.ID), new OqlParam(this.Entity.ID), new OqlParam(this.Entity.Key.EntityType));
                    if (flow != null && (flow.ApprovalResult == ApprovalStateEnum.EnumReject || flow.ApprovalResult == ApprovalStateEnum.EnumTerminated))
                    {
                        toState = State.Opened;
                    }
                }
                return(toState);
            }