///事件处理方法 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); } } } }
//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); }