private static UpdateSqlClauseBuilder GetUpdateSqlClauseBuilderByUserTask(UserTask task, UserTaskFieldDefine fields) { string[] ignoredProperties = GetIgnorPropertiesByEnum((int)fields, EnumItemDescriptionAttribute.GetDescriptionList(typeof(UserTaskFieldDefine))); UpdateSqlClauseBuilder uBuilder = ORMapping.GetUpdateSqlClauseBuilder <UserTask>(task, ignoredProperties); return(uBuilder.AppendTenantCode()); }
protected override string GetUpdateSql(WfProcessDescriptorDimension data, ORMappingItemCollection mappings, Dictionary <string, object> context) { UpdateSqlClauseBuilder uBuilder = ORMapping.GetUpdateSqlClauseBuilder(data, mappings); uBuilder.AppendTenantCode(); WhereSqlClauseBuilder wBuilder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(data, mappings); wBuilder.AppendTenantCode(); return(string.Format("UPDATE {0} SET {1} WHERE {2}", mappings.TableName, uBuilder.ToSqlString(TSqlBuilder.Instance), wBuilder.ToSqlString(TSqlBuilder.Instance))); }
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(); } }