/// <summary> /// 创建一个缺省的审批流模板 /// </summary> /// <param name="key"></param> /// <param name="processDespKey">流程描述的Key</param> /// <param name="execSequence"></param> /// <param name="blockingType"></param> /// <param name="users"></param> /// <returns></returns> public static IWfBranchProcessTemplateDescriptor CreateDefaultApprovalTemplate( string key, string processDespKey, WfBranchProcessExecuteSequence execSequence, WfBranchProcessBlockingType blockingType, IEnumerable <IUser> users) { key.CheckStringIsNullOrEmpty("key"); users.NullCheck("users"); WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor(key); template.BranchProcessKey = WfProcessDescriptorManager.DefaultApprovalProcessKey; template.ExecuteSequence = execSequence; template.BlockingType = blockingType; users = users.Distinct(new OguObjectIDEqualityComparer <IUser>()); foreach (IUser user in users) { template.Resources.Add(new WfUserResourceDescriptor(user)); } return(template); }
private HomogenousNGrams(IEnumerable <NGram <T> > grams, int n) { grams.NullCheck(); this.nGrams = grams; this.N = n; }
/// <summary> /// /// </summary> /// <param name="operatorActivity">操作人所在的Activity,可以为null</param> /// <param name="targetActivity">需要替换人员的目标活动</param> /// <param name="originalAssignee"></param> /// <param name="targetAssignees"></param> public WfReplaceAssigneesExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, IUser originalAssignee, IEnumerable <IUser> targetAssignees) : base(operatorActivity, WfControlOperationType.ReplaceAssignees) { targetActivity.NullCheck("targetActivity"); targetAssignees.NullCheck("targetAssignees"); if (originalAssignee != null) { this._OriginalAssignees.Add(originalAssignee); } else { this._OriginalAssignees.CopyFrom(targetActivity.Assignees.ToUsers()); if (this._OriginalAssignees.Count == 0) { this._OriginalAssignees.CopyFrom(targetActivity.Candidates.ToUsers()); } } this.TargetAssignees = targetAssignees; this.TargetActivity = targetActivity; if (OperatorActivity == null) { OperatorActivity = this.TargetActivity; } }
/// <summary> /// 将活动矩阵与审批矩阵进行合并,以第一个矩阵的列定义为准 /// </summary> /// <param name="amRows"></param> /// <param name="amDefinitions"></param> /// <param name="apRows"></param> /// <param name="apDefinitions"></param> public static void MergeActivityMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable <SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions) { amDefinitions.NullCheck("amDefinitions"); amRows.NullCheck("amRows"); apDefinitions.NullCheck("apDefinitions"); apRows.NullCheck("apRows"); int maxRowNumber = GetMaxRowNumber(amRows); foreach (SOARolePropertyRow apRow in apRows) { SOARolePropertyRow newRow = new SOARolePropertyRow(amRows.Role); newRow.RowNumber = ++maxRowNumber; newRow.OperatorType = apRow.OperatorType; newRow.Operator = apRow.Operator; foreach (SOARolePropertyValue srv in apRow.Values) { if (amDefinitions.ContainsKey(srv.Column.Name)) { SOARolePropertyValue newValue = new SOARolePropertyValue(amDefinitions[srv.Column.Name]); newValue.Value = srv.Value; newRow.Values.Add(newValue); } } } }
/// <summary> /// 在一个事件下增加频道(UI上用于频道列表) /// </summary> /// <param name="eventID"></param> /// <param name="channelIDs"></param> /// <returns></returns> public int AddChannel(string eventID, IEnumerable <string> channelIDs) { eventID.CheckStringIsNullOrEmpty("eventID"); channelIDs.NullCheck("channelIDs"); StringBuilder strB = new StringBuilder(); AMSEventChannel eventChannel = new AMSEventChannel(); eventChannel.EventID = eventID; eventChannel.State = AMSEventState.NotStart; eventChannel.IsDefault = false; foreach (string channelID in channelIDs) { eventChannel.ChannelID = channelID; if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } strB.Append(ORMapping.GetInsertSql(eventChannel, TSqlBuilder.Instance)); } int result = 0; if (strB.Length > 0) { result = DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName()); } return(result); }
/// <summary> /// 删除某个事件下的频道(UI上用于频道列表) /// </summary> /// <param name="eventID"></param> /// <param name="channelIDs"></param> /// <param name="includeDefault">是否包含默认频道</param> public int DeleteChannels(string eventID, IEnumerable <string> channelIDs, bool includeDefault = false) { eventID.CheckStringIsNullOrEmpty("eventID"); channelIDs.NullCheck("channelIDs"); InSqlClauseBuilder builder = new InSqlClauseBuilder("ChannelID"); channelIDs.ForEach(channelID => builder.AppendItem(channelID)); ORMappingItemCollection mappings = ORMapping.GetMappingInfo(typeof(AMSEventChannel)); string sql = string.Format("DELETE {0} WHERE {1}", mappings.TableName, builder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); int result = 0; if (builder.IsEmpty == false) { if (includeDefault == false) { sql += " AND IsDefault <> 1"; } result = DbHelper.RunSql(sql, this.GetConnectionName()); } return(result); }
public static IEnumerable <T> NonEmpties <T>(this IEnumerable <T> source) where T : class { return(source .NullCheck() .Where(x => x != null) .Where(x => !(x is string) || !string.IsNullOrEmpty(x.As <string>()))); }
/// <summary> /// 将活动矩阵与审批矩阵进行合并,以第一个矩阵的列定义为准 /// </summary> /// <param name="amRows"></param> /// <param name="amDefinitions"></param> /// <param name="apRows"></param> /// <param name="apDefinitions"></param> public static void MergeActivityMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable<SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions) { amDefinitions.NullCheck("amDefinitions"); amRows.NullCheck("amRows"); apDefinitions.NullCheck("apDefinitions"); apRows.NullCheck("apRows"); int maxRowNumber = GetMaxRowNumber(amRows); foreach (SOARolePropertyRow apRow in apRows) { SOARolePropertyRow newRow = new SOARolePropertyRow(amRows.Role); newRow.RowNumber = ++maxRowNumber; newRow.OperatorType = apRow.OperatorType; newRow.Operator = apRow.Operator; foreach (SOARolePropertyValue srv in apRow.Values) { if (amDefinitions.ContainsKey(srv.Column.Name)) { SOARolePropertyValue newValue = new SOARolePropertyValue(amDefinitions[srv.Column.Name]); newValue.Value = srv.Value; newRow.Values.Add(newValue); } } } }
public void UpdateProcessStatus(IEnumerable <IWfProcess> processes) { processes.NullCheck("processes"); StringBuilder strB = new StringBuilder(); foreach (IWfProcess process in processes) { if (process.SearchID.IsNotEmpty()) { if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("RESOURCE_ID", process.SearchID); builder.AppendTenantCode(typeof(AppCommonInfo)); strB.AppendFormat("UPDATE WF.APPLICATIONS_COMMON_INFO SET COMPLETED_FLAG = {0} WHERE {1}", (int)AppCommonInfo.ConvertProcessStatusToCompletedFlag(process.Status), builder.ToSqlString(TSqlBuilder.Instance)); } } if (strB.Length > 0) { DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName()); } }
public AMSChannelInEventExecutorBase(string eventID, IEnumerable <string> channelIDs, AMSOperationType operationType) : base(operationType) { eventID.CheckStringIsNullOrEmpty("eventID"); channelIDs.NullCheck("channelIDs"); this.EventID = eventID; this.ChannelIDs = channelIDs; }
public static string JoinNonEmpties(this IEnumerable <string> source, string separator) { return(source .NullCheck() .Where(x => x != null) .Where(x => !string.IsNullOrEmpty(x.Trim())) .Join(separator)); }
public void ClientToServer(IEnumerable<KeyValuePair<string, object>> client, IDictionary<string, object> server) { client.NullCheck("client"); server.NullCheck("server"); foreach (KeyValuePair<string, object> kp in client) server[kp.Key] = ClientObjectToServer(kp.Value); }
public void InitFromProperties(IEnumerable <PropertyInfo> properties) { properties.NullCheck("properties"); this.Clear(); properties.ForEach(pi => this.Add(new TableColumnDescription(pi))); }
public void ServerToClient(IEnumerable<KeyValuePair<string, object>> server, IDictionary<string, object> client) { client.NullCheck("client"); server.NullCheck("server"); foreach (KeyValuePair<string, object> kp in server) client[kp.Key] = ServerObjectToClient(kp.Value); }
public WfCirculateExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, IEnumerable<IUser> circulators) : base(operatorActivity, targetActivity, WfControlOperationType.Circulate) { circulators.NullCheck("circulators"); this.Circulators = circulators; }
/// <summary> /// 从意见ID加载 /// </summary> /// <param name="opinionIDs"></param> /// <returns></returns> public GenericOpinionCollection LoadByIDs(IEnumerable <string> opinionIDs) { opinionIDs.NullCheck("opinionIDs"); return(this.LoadByInBuilder(new InLoadingCondition( inBuilder => opinionIDs.ForEach(oID => inBuilder.AppendItem(oID)), orderBuilder => orderBuilder.AppendItem("ISSUE_DATETIME", FieldSortDirection.Ascending), "ID"))); }
public AMSChannelInEventExecutorBase(string eventID, IEnumerable<string> channelIDs, AMSOperationType operationType) : base(operationType) { eventID.CheckStringIsNullOrEmpty("eventID"); channelIDs.NullCheck("channelIDs"); this.EventID = eventID; this.ChannelIDs = channelIDs; }
public WfCirculateExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, IEnumerable <IUser> circulators) : base(operatorActivity, targetActivity, WfControlOperationType.Circulate) { circulators.NullCheck("circulators"); this.Circulators = circulators; }
public WfClientBranchProcessTransferParams(WfClientBranchProcessTemplateDescriptor template, IEnumerable <ClientOguUser> users) { template.NullCheck("template"); users.NullCheck("users"); this._Template = template; WfClientBranchProcessStartupParams branch = new WfClientBranchProcessStartupParams(users); this.BranchParams.Add(branch); }
/// <summary> /// 从DataRow构造行信息 /// </summary> /// <param name="rows"></param> /// <param name="definitions"></param> /// <param name="func"></param> public void FromDataTable(DataRowCollection rows, IEnumerable <SOARolePropertyDefinition> definitions, Func <DataRow, SOARolePropertyRow, bool> func = null) { rows.NullCheck("rows"); definitions.NullCheck("definitions"); this.Clear(); int rowIndex = 1; foreach (DataRow row in rows) { SOARolePropertyRow mRow = new SOARolePropertyRow() { RowNumber = rowIndex++ }; foreach (SOARolePropertyDefinition definition in definitions) { if (row.Table.Columns.Contains(definition.Name)) { SOARolePropertyValue mCell = new SOARolePropertyValue(definition); mCell.Value = row[definition.Name].ToString(); switch (definition.Name) { case SOARolePropertyDefinition.OperatorColumn: mRow.Operator = row[definition.Name].ToString(); break; case SOARolePropertyDefinition.OperatorTypeColumn: SOARoleOperatorType opType = SOARoleOperatorType.User; Enum.TryParse(row[definition.Name].ToString(), out opType); mRow.OperatorType = opType; break; default: break; } mRow.Values.Add(mCell); } } bool canAdd = true; if (func != null) { canAdd = func(row, mRow); } if (canAdd) { this.Add(mRow); } } }
public void ClientToServer(IEnumerable <KeyValuePair <string, object> > client, IDictionary <string, object> server) { client.NullCheck("client"); server.NullCheck("server"); foreach (KeyValuePair <string, object> kp in client) { server[kp.Key] = ClientObjectToServer(kp.Value); } }
public static IEnumerable <double> Normalize(this IEnumerable <double> l) { l.NullCheck(); double max = l.Max(); foreach (var item in l) { yield return(item / max); } }
public void ServerToClient(IEnumerable <KeyValuePair <string, object> > server, IDictionary <string, object> client) { client.NullCheck("client"); server.NullCheck("server"); foreach (KeyValuePair <string, object> kp in server) { client[kp.Key] = ServerObjectToClient(kp.Value); } }
public static AMSChannelCollection ToAMSChannels(this IEnumerable <IChannel> channels) { channels.NullCheck("channels"); AMSChannelCollection result = new AMSChannelCollection(); channels.AsEnumerable().ForEach(c => result.Add(c.ToAMSChannel())); return(result); }
public static IEnumerable <T> Each <T>(this IEnumerable <T> source, Action <T> action) { var array = source.NullCheck().ToArray(); foreach (var item in array) { action(item); } return(array); }
public static IEnumerable <T> Each <T>(this IEnumerable <T> source, Action <T, int> action) { var array = source.NullCheck().ToArray(); for (int i = 0; i < array.Length; i++) { action(array[i], i); } return(array); }
/// <summary> /// 仅复制目标集合中已有的属性 /// </summary> /// <param name="cpvc"></param> /// <param name="pvc"></param> public void ClientToServer(IEnumerable<ClientPropertyValue> cpvc, PropertyValueCollection pvc) { cpvc.NullCheck("cpvc"); pvc.NullCheck("pvc"); foreach (ClientPropertyValue cpv in cpvc) { if (pvc.ContainsKey(cpv.Key)) ClientPropertyValueConverter.Instance.ClientToServer(cpv, pvc[cpv.Key]); } }
/// <summary> /// 从意见ID加载 /// </summary> /// <param name="opinionIDs"></param> /// <returns></returns> public GenericOpinionCollection LoadByIDs(IEnumerable <string> opinionIDs) { opinionIDs.NullCheck("opinionIDs"); return(LoadByInBuilder(inBuilder => { inBuilder.DataField = "ID"; opinionIDs.ForEach(oID => inBuilder.AppendItem(oID)); }, orderBuilder => orderBuilder.AppendItem("ISSUE_DATETIME", FieldSortDirection.Ascending))); }
public static ReadOnlyCollection <T> AsReadOnly <T>(this IEnumerable <T> source) { var readOnly = source as ReadOnlyCollection <T>; if (readOnly != null) { return(readOnly); } var list = source as IList <T> ?? source.NullCheck().ToArray(); return(new ReadOnlyCollection <T>(list)); }
/// <summary> /// 仅复制目标集合中已有的属性 /// </summary> /// <param name="cpvc"></param> /// <param name="pvc"></param> public void ClientToServer(IEnumerable <ClientPropertyValue> cpvc, PropertyValueCollection pvc) { cpvc.NullCheck("cpvc"); pvc.NullCheck("pvc"); foreach (ClientPropertyValue cpv in cpvc) { if (pvc.ContainsKey(cpv.Key)) { ClientPropertyValueConverter.Instance.ClientToServer(cpv, pvc[cpv.Key]); } } }
public void ClientToServer(IEnumerable <WfClientTransitionDescriptor> client, ICollection <IWfTransitionDescriptor> server) { client.NullCheck("client"); foreach (WfClientTransitionDescriptor ct in client) { WfTransitionDescriptor st = null; WfClientTransitionDescriptorConverter.Instance.ClientToServer(ct, ref st); server.Add(st); } }
public void ServerToClient(IEnumerable <IWfTransitionDescriptor> server, ICollection <WfClientTransitionDescriptor> client) { server.NullCheck("server"); foreach (WfTransitionDescriptor st in server) { WfClientTransitionDescriptor ct = null; WfClientTransitionDescriptorConverter.Instance.ServerToClient(st, ref ct); client.Add(ct); } }
public void ServerToClient(IEnumerable <WfBranchProcessStartupParams> server, ICollection <WfClientBranchProcessStartupParams> client) { server.NullCheck("server"); foreach (WfBranchProcessStartupParams st in server) { WfClientBranchProcessStartupParams ct = null; WfClientBranchProcessStartupParamsConverter.Instance.ServerToClient(st, ref ct); client.Add(ct); } }
public void ClientToServer(IEnumerable<WfClientBranchProcessStartupParams> client, ICollection<WfBranchProcessStartupParams> server) { client.NullCheck("client"); foreach (WfClientBranchProcessStartupParams ct in client) { WfBranchProcessStartupParams st = null; WfClientBranchProcessStartupParamsConverter.Instance.ClientToServer(ct, ref st); server.Add(st); } }
public void ClientToServer(IEnumerable <WfClientBranchProcessTransferParams> client, ICollection <WfBranchProcessTransferParams> server) { client.NullCheck("client"); foreach (WfClientBranchProcessTransferParams ct in client) { WfBranchProcessTransferParams st = null; WfClientBranchProcessTransferParamsConverter.Instance.ClientToServer(ct, ref st); server.Add(st); } }
/// <summary> /// 构造方法。根据分支流程模板以及传递进来的人员初始化BranchParams /// </summary> /// <param name="template"></param> /// <param name="users"></param> public WfBranchProcessTransferParams(IWfBranchProcessTemplateDescriptor template, IEnumerable <IUser> users) { template.NullCheck("template"); users.NullCheck("users"); this._Template = template; this.BranchParams.Add(users); if (template.DefaultTaskTitle.IsNotEmpty()) { this.BranchParams.ForEach(b => b.DefaultTaskTitle = template.DefaultTaskTitle); } }
public static int Count <T>(this IEnumerable <T> t, Func <T, int> func) { t.NullCheck(); func.NullCheck(); int count = 0; foreach (var item in t) { count += func(item); } return(count); }
/// <summary> /// 如果目标集合中不存在,则添加一项 /// </summary> /// <param name="pvc"></param> /// <param name="cpvc"></param> public void ServerToClient(IEnumerable<PropertyValue> pvc, ClientPropertyValueCollection cpvc) { pvc.NullCheck("pvc"); cpvc.NullCheck("cpvc"); foreach (PropertyValue pv in pvc) { ClientPropertyValue cpv = cpvc[pv.Definition.Name]; if (cpv == null) { cpv = new ClientPropertyValue(pv.Definition.Name); cpvc.Add(cpv); } ClientPropertyValueConverter.Instance.ServerToClient(pv, cpv); } }
public WfClientUserOperationLogCollection ServerToClient(IEnumerable<UserOperationLog> server) { server.NullCheck("server"); WfClientUserOperationLogCollection client = new WfClientUserOperationLogCollection(); foreach (UserOperationLog serverItem in server) { WfClientUserOperationLog clientItem = null; this.ServerToClient(serverItem, ref clientItem); client.Add(clientItem); } return client; }
public async void Play(IEnumerable<NGram<Chord>> enumerable) { Task.Factory.StartNew(() => { enumerable.NullCheck(); this.Playing = true; var many = enumerable.SelectMany(x => x); var count = many.Count(item => item.MidiChunk.Count); foreach (var item in many) { foreach (var note in item.MidiChunk.Where(x => x.MidiMessage is ChannelMessage)) { if (!Playing) { return; } var message = note.MidiMessage as ChannelMessage; this.outDevice.Send(message); if (note.DeltaTicks != 0) { float kSecondsPerTick = note.DeltaTicks / (OutputConstants.TicksPerQuarter * 1000000.0f); float deltaTimeInMilliSeconds = note.DeltaTicks * kSecondsPerTick * 10000; if (deltaTimeInMilliSeconds < 2000) { this.wait = (int)deltaTimeInMilliSeconds; Thread.Sleep(this.wait); } else { this.wait = OutputConstants.GotoSleepTImeInMilliseconds; Thread.Sleep(OutputConstants.GotoSleepTImeInMilliseconds); } } else if (null != message && message.Command == ChannelCommand.NoteOn) { Thread.Sleep(OutputConstants.GotoSleepTImeInMilliseconds); } } } }); }
/// <summary> /// 批量更新 /// </summary> /// <param name="ownerID"></param> /// <param name="users"></param> public void UpdateBatch(string ownerID, IEnumerable<SchemaObjectBase> users) { ownerID.CheckStringIsNullOrEmpty("ownerID"); users.NullCheck("users"); StringBuilder strB = new StringBuilder(); strB.Append(GetDeleteConditionCalculateResultSql(ownerID)); foreach (SchemaObjectBase user in users) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); strB.Append(GetInsertConditionCalculateResultSql(ownerID, user.ID)); } DbHelper.RunSqlWithTransaction(strB.ToString(), this.GetConnectionName()); }
public void Update(string ownerID, IEnumerable<SchemaObjectBase> users) { ownerID.CheckStringIsNullOrEmpty("ownerID"); users.NullCheck("users"); using (DbContext context = DbContext.GetContext(this.GetConnectionName())) { DbHelper.RunSqlWithTransaction(GetDeleteConditionCalculateResultSql(ownerID), this.GetConnectionName()); StringBuilder strB = new StringBuilder(); foreach (SchemaObjectBase user in users) DbHelper.RunSql(GetInsertConditionCalculateResultSql(ownerID, user.ID), this.GetConnectionName()); ProcessProgress.Current.Increment(); ProcessProgress.Current.Response(); } }
public WfConsignExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, WfAssigneeCollection assignees, IEnumerable<IUser> consignUsers, IEnumerable<IUser> circulateUsers, WfBranchProcessBlockingType blockingType, WfBranchProcessExecuteSequence sequence) : base(operatorActivity, targetActivity, WfControlOperationType.Consign) { assignees.NullCheck("assignees"); consignUsers.NullCheck("users"); (consignUsers.Count() > 0).FalseThrow<WfRuntimeException>("参与会签的用户数必须大于零"); this.Assignees.CopyFrom(assignees); this.ConsignUsers = consignUsers; this.CirculateUsers = circulateUsers; this.BlockingType = blockingType; this.Sequence = sequence; }
/// <summary> /// 得到参数名称和方法参数的匹配度 /// </summary> /// <param name="mi"></param> /// <param name="parameterNames"></param> /// <returns></returns> public static int GetParamsMatchedLevel(this MethodBase mi, IEnumerable<string> parameterNames) { mi.NullCheck("mi"); parameterNames.NullCheck("parameterNames"); int result = 0; List<string> parameterNameListInMethod = new List<string>(); CollectMethodParameterNames(mi, parameterNameListInMethod); foreach (string pNameInMethod in parameterNameListInMethod) { if (parameterNames.Any(pn => string.Compare(pn, pNameInMethod, true) == 0)) result++; } result -= Math.Abs(parameterNameListInMethod.Count - result); //方法参数的个数减去匹配程度,形成新的匹配度 return result; }
/// <summary> /// /// </summary> /// <param name="operatorActivity">操作人所在的Activity,可以为null</param> /// <param name="targetActivity">需要替换人员的目标活动</param> /// <param name="originalAssignee"></param> /// <param name="targetAssignees"></param> public WfReplaceAssigneesExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, IUser originalAssignee, IEnumerable<IUser> targetAssignees) : base(operatorActivity, WfControlOperationType.ReplaceAssignees) { targetActivity.NullCheck("targetActivity"); targetAssignees.NullCheck("targetAssignees"); if (originalAssignee != null) this._OriginalAssignees.Add(originalAssignee); else { this._OriginalAssignees.CopyFrom(targetActivity.Assignees.ToUsers()); if (this._OriginalAssignees.Count == 0) this._OriginalAssignees.CopyFrom(targetActivity.Candidates.ToUsers()); } this.TargetAssignees = targetAssignees; this.TargetActivity = targetActivity; if (OperatorActivity == null) OperatorActivity = this.TargetActivity; }
public InstrumentChannelMessengerProducer(IEnumerable<Sequence> sequences) { sequences.NullCheck(); HashSet<Sequence> unique = new HashSet<Sequence>(sequences); var instruments = from sequence in sequences from item in sequence where item.Iterator().Count(x => x.MidiMessage is ChannelMessage) > 0 group item by (item.Iterator().FirstOrDefault(x => x.MidiMessage is ChannelMessage).MidiMessage as ChannelMessage).Instrument() into group1 select group1; this.channelMessageByInstrument = new Dictionary<GeneralMidiInstrument, IReadOnlyList<ChannelMessage>>(); if (instruments.Any()) { foreach (var group in instruments) { if (group.Any()) { List<ChannelMessage> message = new List<ChannelMessage>(); var instrument = group.First().Iterator().Where(x => x.MidiMessage is ChannelMessage).Select(y => y.MidiMessage as ChannelMessage).First().Instrument(); foreach (var track in group) { var query = track.Iterator().Where(x => x.MidiMessage is ChannelMessage).Select(y => y.MidiMessage as ChannelMessage); if (query.Any()) { foreach (var item in query) { message.Add(item); } } } this.channelMessageByInstrument.Add(instrument, message.AsReadOnly()); } } } }
/// <summary> /// 构造缺省的会签模板 /// </summary> /// <param name="key"></param> /// <param name="blockingType"></param> /// <returns></returns> public static IWfBranchProcessTemplateDescriptor CreateDefaultConsignTemplate( string key, WfBranchProcessExecuteSequence execSequence, WfBranchProcessBlockingType blockingType, IEnumerable<IUser> users) { key.CheckStringIsNullOrEmpty("key"); users.NullCheck("users"); WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor(key); template.BranchProcessKey = WfProcessDescriptorManager.DefaultConsignProcessKey; template.ExecuteSequence = execSequence; template.BlockingType = blockingType; users = users.Distinct(new OguObjectIDEqualityComparer<IUser>()); foreach (IUser user in users) template.Resources.Add(new WfUserResourceDescriptor(user)); return template; }
public void Send(IEnumerable<EmailMessage> messages, SmtpParameters sp) { messages.NullCheck("messages"); sp.NullCheck("sp"); sp.CheckParameters(); using (SmtpClient client = sp.ToSmtpClient()) { foreach (EmailMessage message in messages) { EmailMessage clonedMessage = message.Clone(); if (clonedMessage.From == null) clonedMessage.From = sp.DefaultSender; try { clonedMessage.Attachments.ForEach(ea => ea.PrepareContent()); client.Send(clonedMessage.ToMailMessage()); clonedMessage.Status = EmailMessageStatus.Sent; } catch (System.Exception ex) { clonedMessage.Status = EmailMessageStatus.Fail; clonedMessage.StatusText = ex.ToString(); } if (sp.AfterSentOP == EmailMessageAfterSentOP.MoveToSentTable || (sp.AfterSentOP == EmailMessageAfterSentOP.OnlyPersistErrorMessages && clonedMessage.Status == EmailMessageStatus.Fail)) { InsertSentMessage(clonedMessage); } } } }
public void ServerToClient(IEnumerable<WfBranchProcessStartupParams> server, ICollection<WfClientBranchProcessStartupParams> client) { server.NullCheck("server"); foreach (WfBranchProcessStartupParams st in server) { WfClientBranchProcessStartupParams ct = null; WfClientBranchProcessStartupParamsConverter.Instance.ServerToClient(st, ref ct); client.Add(ct); } }
/// <summary> /// 将活动矩阵与审批矩阵进行合并 /// </summary> /// <param name="amRows"></param> /// <param name="amDefinitions"></param> /// <param name="apRows"></param> /// <param name="apDefinitions"></param> public static void MergeApprovalMatrix(this SOARolePropertyRowCollection amRows, SOARolePropertyDefinitionCollection amDefinitions, IEnumerable<SOARolePropertyRow> apRows, SOARolePropertyDefinitionCollection apDefinitions) { amDefinitions.NullCheck("amDefinitions"); amRows.NullCheck("amRows"); apDefinitions.NullCheck("apDefinitions"); apRows.NullCheck("apRows"); int maxActivitySN = GetMaxActivitySN(amRows); int maxRowNumber = GetMaxRowNumber(amRows); List<SOARolePropertyRow> newAmRows = new List<SOARolePropertyRow>(); foreach (SOARolePropertyRow apRow in apRows) { int columnIndex = 1; while (columnIndex < apDefinitions.Count) { List<SOARolePropertyRow> amUserRows = FindMatchedActivityMatrixUserRows(amRows, apDefinitions[columnIndex].Name, apRow); List<SOARolePropertyRow> amTemplateRows = FindMatchedActivityMatrixTemplateRows(amRows, apDefinitions[columnIndex].Name, apRow); string apUser = apRow.Values.GetValue(apDefinitions[columnIndex].Name, string.Empty); if (amUserRows.Count == 0 && apUser.IsNotEmpty()) { SOARolePropertyRow templateRow = amTemplateRows.LastOrDefault(); maxActivitySN += 10; SOARolePropertyRow amRow = CreateNewActivityMatrixRow(maxActivitySN, ++maxRowNumber, amDefinitions, templateRow); newAmRows.Add(amRow); MergeToActivityMatrixRow(amRow, amDefinitions, apUser); } else { foreach (SOARolePropertyRow amRow in amUserRows) MergeToActivityMatrixRow(amRow, amDefinitions, apUser); } columnIndex++; } } amRows.CopyFrom(newAmRows); }
public static SOARoleContext CreateContext(IEnumerable<SOARolePropertiesQueryParam> queryParams, IWfProcess process) { queryParams.NullCheck("queryParams"); ObjectContextCache.Instance.ContainsKey(CacheKey).TrueThrow("SOARoleContext已经在使用中,不能嵌套使用"); SOARoleContext context = new SOARoleContext(); context._Process = process; context.QueryParams.CopyFrom(queryParams); ObjectContextCache.Instance.Add(CacheKey, context); return context; }
public UserOperationLogCollection ClientToServer(IEnumerable<WfClientUserOperationLog> client) { client.NullCheck("client"); UserOperationLogCollection server = new UserOperationLogCollection(); foreach (WfClientUserOperationLog clientItem in client) { UserOperationLog serverItem = null; this.ClientToServer(clientItem, ref serverItem); server.Add(serverItem); } return server; }
public void ServerToClient(IEnumerable<IWfMainStreamActivityDescriptor> server, WfClientMainStreamActivityDescriptorCollection client) { server.NullCheck("server"); client.NullCheck("client"); client.Clear(); foreach (IWfMainStreamActivityDescriptor msActDesp in server) { WfClientMainStreamActivityDescriptor clientMSActDesp = null; WfClientMainStreamActivityDescriptorConverter.Instance.ServerToClient(msActDesp, ref clientMSActDesp); client.Add(clientMSActDesp); } }
public void Insert(IEnumerable<EmailMessage> messages) { messages.NullCheck("messages"); messages.ForEach(m => m.Attachments.ForEach(ea => ea.PrepareContent())); StringBuilder strB = new StringBuilder(2048); using (StringWriter writer = new StringWriter(strB)) { messages.ForEach(m => WriteInsertMessageSql(writer, m)); } DbHelper.RunSqlWithTransaction(strB.ToString(), GetConnectionName()); }
/// <summary> /// 根据角色ID判断哪些角色有了扩展属性定义 /// </summary> /// <param name="roleIDs"></param> /// <returns></returns> public Dictionary<string, bool> AreExist(IEnumerable<string> roleIDs) { roleIDs.NullCheck("roleIDs"); Dictionary<string, bool> result = new Dictionary<string, bool>(); InSqlClauseBuilder builder = new InSqlClauseBuilder(); foreach (string roleID in roleIDs) { if (result.ContainsKey(roleID) == false) { result.Add(roleID, false); builder.AppendItem(roleID); } } if (result.Count > 0) { WhereSqlClauseBuilder tenantBuilder = new WhereSqlClauseBuilder(); tenantBuilder.AppendTenantCode(); string tenantCriteria = string.Empty; if (tenantBuilder.IsEmpty == false) tenantCriteria = " AND " + tenantBuilder.ToSqlString(TSqlBuilder.Instance); string sql = string.Format("SELECT ROLE_ID FROM WF.ROLE_PROPERTIES_DEFINITIONS WHERE ROLE_ID IN ({0}){1} GROUP BY ROLE_ID", builder.ToSqlString(TSqlBuilder.Instance), tenantCriteria); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) result[row["ROLE_ID"].ToString()] = true; } return result; }