private static string BuildRowsUsersSql(WfMatrixRowUsersCollection rowsUsers) { StringBuilder strB = new StringBuilder(); foreach (WfMatrixRowUsers rowUsers in rowsUsers) { foreach (IUser user in rowUsers.Users) { InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder(); builder.AppendItem("MATRIX_ID", rowUsers.Row.Matrix.MatrixID); builder.AppendItem("MATRIX_ROW_ID", rowUsers.Row.RowNumber); builder.AppendItem("USER_ID", user.ID); builder.AppendItem("USER_NAME", user.DisplayName); builder.AppendTenantCode(); if (strB.Length > 0) { strB.Append(TSqlBuilder.Instance.DBStatementSeperator); } strB.AppendFormat("INSERT INTO WF.MATRIX_ROWS_USERS {0}", builder.ToSqlString(TSqlBuilder.Instance)); } } return(strB.ToString()); }
private static string GetUserTaskInsertSql(UserTask task, ORMappingItemCollection mapping, params string[] ignoreProperties) { InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(task, mapping, ignoreProperties); builder.AppendTenantCode(); return(string.Format("INSERT INTO {0} {1}", mapping.TableName, builder.ToSqlString(TSqlBuilder.Instance))); }
protected override string GetInsertSql(WfProcessDescriptorDimension data, ORMappingItemCollection mappings, Dictionary <string, object> context) { InsertSqlClauseBuilder iBuilder = ORMapping.GetInsertSqlClauseBuilder(data, mappings); iBuilder.AppendTenantCode(); return(string.Format("INSERT INTO {0} {1}", mappings.TableName, iBuilder.ToSqlString(TSqlBuilder.Instance))); }
/// <summary> /// 根据对象拼Insert语句时的方法 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="graph">对象</param> /// <param name="mapping">映射关系</param> /// <param name="ignoreProperties">忽略的字段</param> /// <returns>InsertSqlClauseBuilder对象,供拼Insert语句使用</returns> /// <remarks> /// 根据传入的对象和对象映射时需要忽略的字段,返回InsertSqlClauseBuilder对象,以供后续拼Insert语句的字段名称和Values部分 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Data.SqlBuilder.Test\ORMappingTest.cs" region="GetInsertSqlClauseBuilder" lang="cs" title="拼Insert语句"/> /// <see cref="MCS.Library.Data.Builder.InsertSqlClauseBuilder"/> /// </remarks> public static InsertSqlClauseBuilder GetInsertSqlClauseBuilder <T>(T graph, ORMappingItemCollection mapping, params string[] ignoreProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph"); ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder(); FillSqlClauseBuilder(builder, graph, mapping, ClauseBindingFlags.Insert, new DoSqlClauseBuilder <T>(DoInsertUpdateSqlClauseBuilder <T>), ignoreProperties); builder.AppendTenantCode(typeof(T)); return(builder); }
private static string BuildInsertRowSql(string wfMatrixID, WfMatrixRow row) { StringBuilder result = new StringBuilder(); InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder(); insertBuilder.AppendItem(DB_FIELD_MATRIX_ID, wfMatrixID); insertBuilder.AppendItem(DB_FIELD_MATRIX_ROW_ID, row.RowNumber); insertBuilder.AppendItem(DB_FIELD_OPERATOR_TYPE, (int)row.OperatorType); insertBuilder.AppendItem(DB_FIELD_OPERATOR, row.Operator); insertBuilder.AppendTenantCode(); result.Append(INSERT_MR_SQL_CLAUSE_PREFIX); result.Append(insertBuilder.ToSqlString(TSqlBuilder.Instance)); result.Append(TSqlBuilder.Instance.DBStatementSeperator); return(result.ToString()); }
private static string BuildInsertCellSql(string wfMatrixID, WfMatrixRow row, WfMatrixCell cell) { StringBuilder result = new StringBuilder(); InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder(); insertBuilder.AppendItem(DB_FIELD_MATRIX_ID, wfMatrixID); insertBuilder.AppendItem(DB_FIELD_MATRIX_ROW_ID, row.RowNumber); insertBuilder.AppendItem(DB_FIELD_DIMENSION_KEY, cell.Definition.DimensionKey); insertBuilder.AppendItem(DB_FIELD_STRING_VALUE, cell.StringValue); insertBuilder.AppendTenantCode(); result.Append(INSERT_MC_SQL_CLAUSE_PREFIX); result.Append(insertBuilder.ToSqlString(TSqlBuilder.Instance)); result.Append(TSqlBuilder.Instance.DBStatementSeperator); return(result.ToString()); }
protected override void AfterInnerUpdate(JobBase data, Dictionary <string, object> context) { //更新任务-计划映射表JOB_SCHEDULES StringBuilder insertClause = new StringBuilder(); insertClause.Append(GetJobSchedulesDeleteClause(data.JobID)); insertClause.Append(TSqlBuilder.Instance.DBStatementSeperator); foreach (var schedule in data.Schedules) { InsertSqlClauseBuilder insertBuilder = new InsertSqlClauseBuilder(); insertBuilder.AppendItem("JOB_ID", data.JobID); insertBuilder.AppendItem("SCHEDULE_ID", schedule.ID); insertBuilder.AppendTenantCode(); insertClause.Append(INSERT_JOB_SCHEDULES_SQL_CLAUSE + insertBuilder.ToSqlString(TSqlBuilder.Instance)); insertClause.Append(TSqlBuilder.Instance.DBStatementSeperator); } DbHelper.RunSql(insertClause.ToString(), GetConnectionName()); }
public void Update() { XElementFormatter formatter = new XElementFormatter(); formatter.OutputShortType = WorkflowSettings.GetConfig().OutputShortType; string properties = formatter.Serialize(this).ToString(); string updateSQL = string.Format("UPDATE WF.GLOBAL_PARAMETERS SET [PROPERTIES] = {0} WHERE {1}", TSqlBuilder.Instance.CheckQuotationMark(properties, true), GetWhereSqlClauseBuilder(this.Key).ToSqlString(TSqlBuilder.Instance)); using (DbContext context = DbContext.GetContext(WorkflowSettings.GetConfig().ConnectionName)) { using (TransactionScope scope = TransactionScopeFactory.Create()) { if (DbHelper.RunSql(updateSQL, WorkflowSettings.GetConfig().ConnectionName) == 0) { InsertSqlClauseBuilder iBuilder = new InsertSqlClauseBuilder(); iBuilder.AppendItem("[KEY]", this.Key); iBuilder.AppendItem("[PROPERTIES]", properties); iBuilder.AppendTenantCode(typeof(WfGlobalParameters)); string insertSQL = string.Format("INSERT INTO WF.GLOBAL_PARAMETERS {0}", iBuilder.ToSqlString(TSqlBuilder.Instance)); DbHelper.RunSql(insertSQL, WorkflowSettings.GetConfig().ConnectionName); } scope.Complete(); } } CacheNotifyData notifyData = new CacheNotifyData(typeof(WfGlobalParametersCache), CalculateCacheKey(this.Key), CacheNotifyType.Invalid); UdpCacheNotifier.Instance.SendNotifyAsync(notifyData); MmfCacheNotifier.Instance.SendNotify(notifyData); }
private void PrepareRoleContainers(string roleID, SOARolePropertyRowRolesCollection rowsRoles, StringBuilder strB) { foreach (SOARolePropertyRowRoles rowRoles in rowsRoles) { foreach (IRole role in rowRoles.Roles) { InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder(); strB.Append(TSqlBuilder.Instance.DBStatementSeperator); builder.AppendItem("ROLE_ID", roleID); builder.AppendItem("ROW_NUMBER", rowRoles.Row.RowNumber); builder.AppendItem("OPERATOR_TYPE", (int)rowRoles.Row.OperatorType); builder.AppendItem("OPERATOR_ID", role.ID); builder.AppendItem("OPERATOR_NAME", role.FullCodeName); builder.AppendTenantCode(); string sql = string.Format("INSERT INTO WF.ROLE_PROPERTIES_USER_CONTAINERS {0}", builder.ToSqlString(TSqlBuilder.Instance)); strB.Append(sql); } } }
public void SaveProcess(IWfProcess process) { WfProcessInstanceData instanceData = WfProcessInstanceData.FromProcess(process); if (instanceData.Data.IsNotEmpty()) { if (WorkflowSettings.GetConfig().Compressed) { XElement extData = GetExtData(instanceData.ExtData); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("CompressProcess", () => { instanceData.BinaryData = GetCompressedStream(instanceData.Data, Encoding.GetEncoding(extData.Attribute("encoding", "utf-8"))); instanceData.Data = string.Empty; }); } } string sql = string.Empty; ORMappingItemCollection mapping = ORMapping.GetMappingInfo <WfProcessInstanceData>(); if (process.LoadingType == DataLoadingType.External) { UpdateSqlClauseBuilder uBuilder = ORMapping.GetUpdateSqlClauseBuilder(instanceData, mapping); uBuilder.AppendItem("UPDATE_TAG", "UPDATE_TAG + 1", "=", true); uBuilder.AppendTenantCode(); WhereSqlClauseBuilder whereBuilder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(instanceData, mapping); whereBuilder.AppendItem("UPDATE_TAG", process.UpdateTag); sql = string.Format("UPDATE {0} SET {1} WHERE {2}", mapping.TableName, uBuilder.ToSqlString(TSqlBuilder.Instance), whereBuilder.ToSqlString(TSqlBuilder.Instance)); } else { InsertSqlClauseBuilder iBuilder = ORMapping.GetInsertSqlClauseBuilder(instanceData, mapping); iBuilder.AppendTenantCode(); sql = string.Format("INSERT INTO {0} {1}", mapping.TableName, iBuilder.ToSqlString(TSqlBuilder.Instance)); } Dictionary <object, object> context = new Dictionary <object, object>(); using (TransactionScope scope = TransactionScopeFactory.Create()) { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("WriteProcessToDB", () => (DbHelper.RunSql(sql, GetConnectionName()) > 0).FalseThrow <WfRuntimeException>( Translator.Translate(Define.DefaultCulture, "更新流程{0}失败,流程状态已经改变", process.ID)) ); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("WriteProcessActivitiesToDB", () => WfProcessCurrentActivityAdapter.Instance.UpdateProcessActivities(process)); PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("WriteRelativeProcessInfoToDB", () => { WfRelativeProcessAdapter.Instance.Delete(new WfRelativeProcess() { ProcessID = process.ID }); if (process.RelativeID.IsNotEmpty()) { WfRelativeProcessAdapter.Instance.Update(new WfRelativeProcess() { Description = string.IsNullOrEmpty(process.Descriptor.Description) ? process.Descriptor.Name : process.Descriptor.Description, ProcessID = process.ID, RelativeID = process.RelativeID, RelativeURL = process.RelativeURL }); } }); if (WorkflowSettings.GetConfig().SaveRelativeData) { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("WriteRelativeDataToDB", () => WfExtraPersistenceSettings.GetConfig().GetPersisters().SaveData(process, context)); } scope.Complete(); } }