public void CreateAgent(string user, string actAsUser, DateTime begin, DateTime end, string[] processTypeNames) { ProcessType[] types = null; ActingRange range = ActingRange.All; if (processTypeNames != null && processTypeNames.Length > 0) { types = processTypeNames.Select(o => this._processTypeService.GetProcessType(o)).Where(o => o != null).ToArray(); //声明的流程类型都不存在则不进行创建 if (types.Length == 0) { return; } } else { range = ActingRange.All; } this._agentService.Create(new Agent(this.GetUser(user) , this.GetUser(actAsUser) , begin , end , range , range == ActingRange.All ? null : types)); }
public Agent(User user, User actAs, DateTime begin, DateTime end, ActingRange range, params ProcessType[] processTypes) : this() { this.User = user; this.ActAs = actAs; this.Range = range; this.ChangeTime(begin, end); if (range != ActingRange.All && (processTypes == null || processTypes.Length == 0)) { throw new InvalidOperationException("代理范围不为All时必须至少指定一个ProcessType"); } if (range != ActingRange.All && processTypes != null) { processTypes.ToList().ForEach(o => this._actingItems.Add(new ProcessActingItem(o))); } this.Validate(); }