示例#1
0
 public RealDB(string dbName, string dbIP,string saPwd )
 {
     DataConfiguration config = new SqlDataConfiguration(dbIP, "sa", saPwd, dbName);
     this.transactionScopeFactory = new TransactionScopeFactory(config);
     this.transactionScopeFactory.Initialize();
     base.Initialize(this.transactionScopeFactory);
 }
 public void Should_New_return_NotNull_transaction()
 {
     using (var tx = new TransactionScopeFactory().New())
     {
         tx.ShouldNotBeNull();
     }
 }
 public void Should_throw_when_timeout_exceeded()
 {
     Should.Throw<TransactionAbortedException>(() =>
     {
         using (var tx = new TransactionScopeFactory().New(new TransactionScopeOptions(TransactionScopeOption.Required, new TransactionOptions
         {
             IsolationLevel = IsolationLevel.ReadCommitted,
             Timeout = TimeSpan.FromMilliseconds(100)
         })))
         {
             Thread.Sleep(TimeSpan.FromMilliseconds(1000));
             tx.Complete();
         }
     });
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="ownerKeyBuilder"></param>
        /// <param name="data"></param>
        public void UpdateCollection(IConnectiveSqlClause ownerKeyBuilder, IEnumerable <T> data)
        {
            ownerKeyBuilder.NullCheck("ownerKeyBuilder");
            data.NullCheck("objs");

            Dictionary <string, object> context = new Dictionary <string, object>();

            this.BeforeInnerUpdateCollection(data, context);

            string sql = VersionStrategyUpdateSqlBuilder <T> .DefaultInstance.ToUpdateCollectionSql(ownerKeyBuilder, this.GetMappingInfo(), data);

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DateTime dt = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                this.AfterInnerUpdateCollection(data, context);

                DBTimePointActionContext.Current.TimePoint.IsMinValue(() => DBTimePointActionContext.Current.TimePoint = dt);

                scope.Complete();
            }
        }
示例#5
0
        public virtual void ApproveCombo(int?sysNo, ComboStatus targetStatus)
        {
            //Check审核人与创建人不能相同
            if (sysNo == null)
            {
                //throw new BizException("更新失败,参数有误!");
                throw new BizException(ResouceManager.GetMessageString("MKT.Combo", "Combo_ArgsError"));
            }
            ComboInfo oldEntity = _da.Load(sysNo.Value);

            //if (oldEntity.Status == ComboStatus.WaitingAudit && oldEntity.CreateUserSysNo == ServiceContext.Current.UserSysNo)
            //{
            //    throw new BizException(string.Format("{0} 创建人与审核人不能相同", oldEntity.Name));
            //}

            TransactionScopeFactory.TransactionAction(() =>
            {
                this.UpdateStatus(sysNo, targetStatus);
                //更新活动状态
                //ObjectFactory<ComboPromotionEngine>.Instance.UpdateComboActivityStatus(sysNo.Value, targetStatus);
            });
        }
        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);
        }
        /// <summary>
        /// 根据RoleID加载行信息
        /// </summary>
        /// <param name="roleID"></param>
        /// <param name="role"></param>
        /// <param name="definition">列定义</param>
        /// <returns></returns>
        public SOARolePropertyRowCollection LoadByRoleID(string roleID, IRole role, SOARolePropertyDefinitionCollection definition)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");
            definition.NullCheck("definition");

            StringBuilder strB = new StringBuilder();

            strB.AppendFormat("SELECT * FROM WF.ROLE_PROPERTIES_ROWS WHERE {0} ORDER BY ROW_NUMBER", roleID.ToRoleIDCriteria());

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strB.AppendFormat("SELECT * FROM WF.ROLE_PROPERTIES_CELLS WHERE {0} ORDER BY PROPERTIES_ROW_ID", roleID.ToRoleIDCriteria());

            SOARolePropertyRowCollection result = new SOARolePropertyRowCollection(role);

            using (TransactionScope scope = TransactionScopeFactory.Create(TransactionScopeOption.Suppress))
            {
                DataSet ds = DbHelper.RunSqlReturnDS(strB.ToString(), GetConnectionName());
                Dictionary <int, SOARolePropertyValueCollection> propertyValues = SOARolePropertyValueCollection.LoadAndGroup(ds.Tables[1].DefaultView, definition);

                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    SOARolePropertyRow property = new SOARolePropertyRow(role);

                    ORMapping.DataRowToObject(row, property);

                    SOARolePropertyValueCollection values = null;

                    if (propertyValues.TryGetValue(property.RowNumber, out values))
                    {
                        property.Values.CopyFrom(values);
                    }

                    result.Add(property);
                }
            }

            return(result);
        }
示例#8
0
        public void SaveChanges(string userId)
        {
            XElementFormatter formatter = new XElementFormatter();

            formatter.OutputShortType = false;

            string settings = formatter.Serialize(this).ToString();

            string updateSQL = string.Format("UPDATE USER_RECENT_DATA SET DATA = {0} WHERE USER_ID = {1} AND CATEGORY = {2}",
                                             TSqlBuilder.Instance.CheckUnicodeQuotationMark(settings),
                                             TSqlBuilder.Instance.CheckUnicodeQuotationMark(userId),
                                             TSqlBuilder.Instance.CheckUnicodeQuotationMark(this.Name));

            using (DbContext context = DbContext.GetContext(ConnectionDefine.UserRelativeInfoConnectionName))
            {
                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    if (DbHelper.RunSql(updateSQL, ConnectionDefine.UserRelativeInfoConnectionName) == 0)
                    {
                        string insertSQL = string.Format("INSERT INTO USER_RECENT_DATA(USER_ID,CATEGORY, DATA) VALUES({0}, {1}, {2})",
                                                         TSqlBuilder.Instance.CheckUnicodeQuotationMark(userId),
                                                         TSqlBuilder.Instance.CheckUnicodeQuotationMark(this.Name),
                                                         TSqlBuilder.Instance.CheckUnicodeQuotationMark(settings));

                        DbHelper.RunSql(insertSQL, ConnectionDefine.UserRelativeInfoConnectionName);
                    }

                    scope.Complete();
                }
            }

            CacheNotifyData notifyData = new CacheNotifyData(typeof(UserRecentDataCategoryCache), new UserRecentDataCategoryCacheKey(userId, this.Name), CacheNotifyType.Invalid);

            UdpCacheNotifier.Instance.SendNotifyAsync(notifyData);
            MmfCacheNotifier.Instance.SendNotify(notifyData);

            //可有可无,在NLB环境下意义不大。沈峥
            UserRecentDataCategoryCache.Instance.Remove(new UserRecentDataCategoryCacheKey(userId, this.Name));
        }
示例#9
0
        /// <summary>
        /// 统一修改Acl成员项的状态
        /// </summary>
        /// <param name="members"></param>
        /// <param name="status"></param>
        public void UpdateStatus(SCAclContainerOrMemberCollectionBase members, SchemaObjectStatus status)
        {
            members.NullCheck("members");

            ORMappingItemCollection mappings = this.GetMappingInfo();

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                foreach (SCAclItem aclItem in members)
                {
                    aclItem.Status = status;

                    string sql = VersionCommonObjectUpdateStatusSqlBuilder <SCAclItem> .Instance.ToUpdateSql(aclItem, mappings);

                    DateTime dt = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                    SCActionContext.Current.TimePoint.IsMinValue(() => SCActionContext.Current.TimePoint = dt);
                }

                scope.Complete();
            }
        }
示例#10
0
        public static void ProcessPendingActivity(WfPendingActivityInfo pendingActivityInfo)
        {
            pendingActivityInfo.NullCheck("pendingActivityInfo");

            IWfProcess process = GetProcessByActivityID(pendingActivityInfo.ActivityID);
            bool       needToDeletePendingInfo = true;

            if (process != null)
            {
                IWfActivity currentActivity = process.CurrentActivity;

                process.ProcessPendingActivity();

                if (currentActivity != null)
                {
                    needToDeletePendingInfo = false;

                    //已经不存在Pending状态
                    if (currentActivity.Status != WfActivityStatus.Pending)
                    {
                        WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(process);

                        using (TransactionScope scope = TransactionScopeFactory.Create())
                        {
                            WfRuntime.PersistWorkflows();
                            WfPendingActivityInfoAdapter.Instance.Delete(pendingActivityInfo);

                            scope.Complete();
                        }
                    }
                }
            }

            if (needToDeletePendingInfo)
            {
                WfPendingActivityInfoAdapter.Instance.Delete(pendingActivityInfo);
            }
        }
示例#11
0
        private static int DoDisplaceUserInRole(SchemaObjectCollection targetUsers, SCUser sourceUser, SCRole role)
        {
            int result  = 0;
            var members = PC.Adapters.SCMemberRelationAdapter.Instance.LoadByContainerID(role.ID, DateTime.MinValue);

            if (members.ContainsKey(sourceUser.ID) && members[sourceUser.ID].Status == MCS.Library.SOA.DataObjects.Schemas.SchemaProperties.SchemaObjectStatus.Normal)
            {
                using (System.Transactions.TransactionScope scope = TransactionScopeFactory.Create())
                {
                    bool hasAnyChanges = false;
                    if (targetUsers.ContainsKey(sourceUser.ID) == false)
                    {
                        PC.Executors.SCObjectOperations.InstanceWithoutPermissions.RemoveMemberFromRole(sourceUser, role);
                        hasAnyChanges = true;
                    }

                    foreach (SCUser user in targetUsers)
                    {
                        if (user.ID != sourceUser.ID && user.Status == SchemaObjectStatus.Normal)
                        {
                            if (members.ContainsKey(user.ID) == false || members[user.ID].Status != SchemaObjectStatus.Normal)
                            {
                                PC.Executors.SCObjectOperations.InstanceWithoutPermissions.AddMemberToRole(user, role);
                                hasAnyChanges = true;
                            }
                        }
                    }

                    scope.Complete();

                    if (hasAnyChanges)
                    {
                        result = 1;
                    }
                }
            }
            return(result);
        }
示例#12
0
        /// <summary>
        /// 厂商回复的批量发布与拒绝
        /// </summary>
        /// <param name="item"></param>
        public virtual void UpdateProductReviewVendorReplyStatus(ProductReviewReply item)
        {
            TransactionScopeFactory.TransactionAction(() =>
            {
                int x = productReviewDA.UpdateProductReviewVendorReplyStatus(item);

                switch (item.Status)
                {
                //发布
                case "A":
                    EventPublisher.Publish <ProductReviewReplyAuditMessage>(new ProductReviewReplyAuditMessage
                    {
                        SysNo            = item.SysNo.Value,
                        CurrentUserSysNo = ServiceContext.Current.UserSysNo
                    });
                    break;

                //拒绝
                case "D":
                    EventPublisher.Publish <ProductReviewReplyVoidMessage>(new ProductReviewReplyVoidMessage
                    {
                        SysNo            = item.SysNo.Value,
                        CurrentUserSysNo = ServiceContext.Current.UserSysNo
                    });
                    break;
                }


                if (x == 1001)
                {
                    throw new BizException(ResouceManager.GetMessageString("MKT.Comment", "Comment_VendorWithdrawData"));
                }
                else if (x == 1002)
                {
                    throw new BizException(ResouceManager.GetMessageString("MKT.Comment", "Comment_SubmitFailed"));
                }
            });
        }
示例#13
0
        public IHttpActionResult Upload(string businessId)
        {
            Guid ret = Guid.Empty;

            if (string.IsNullOrEmpty(businessId) || !Guid.TryParse(businessId, out ret))
            {
                throw new BizException("参数错误");
            }
            var tuple = AttachmentOperator.Instance.CommonSetting();
            var model = AttachmentOperator.Instance.CommonUpload(businessId, tuple.Item1, tuple.Item2, tuple.Item3);
            TaskCollectionData dcd = new TaskCollectionData();

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                string errorMessage = "";
                var    result       = TemplateOperator.Instance.ReadTaskData(businessId, tuple.Item2, tuple.Item3, out dcd, out errorMessage);
                if (result != 3)
                {
                    return(BizResult(new
                    {
                        ResultType = result,
                        Message = errorMessage
                    }));
                }
                AttachmentOperator.Instance.AddModel(model);
                scope.Complete();
            }
            var attachment = new Attachment();

            attachment.ConvertEntity(model);
            return(BizResult(new
            {
                ResultType = 3,
                Attachment = attachment,
                Message = "上传成功",
                Sheets = dcd.Sheets.Select(x => new { SheetName = x.SheetName, SheetRowLength = x.Rows.Count }).ToList()
            }));
        }
        public void Update(MaterialContent data, Stream stream)
        {
            data.NullCheck("data");
            stream.NullCheck("stream");

            Dictionary <string, object> context = new Dictionary <string, object>();

            context["Stream"] = stream;

            this.BeforeInnerUpdate(data, context);

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                if (this.InnerUpdate(data, context, StringExtension.EmptyStringArray) == 0)
                {
                    this.InnerInsert(data, context, StringExtension.EmptyStringArray);
                }

                AfterInnerUpdate(data, context);

                scope.Complete();
            }
        }
示例#15
0
        public Int32 ChangeStatus(String yearMonth, String feeID, Int32 userFlag)
        {
            FeeInfo feeInfo = this.LoadFeeInfo(yearMonth, feeID);
            WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

            builder.AppendItem(FeeInfoDBConst.FeeID, feeID);
            if (!String.IsNullOrEmpty(yearMonth))
            {
                builder.AppendItem(FeeMonthInfoDBConst.YearMonth, yearMonth);
            }
            String sql = String.Format("UPDATE {0} SET USE_FLAG={1} WHERE {2} ", String.IsNullOrEmpty(yearMonth) ? FeeInfoDBConst.TableName : ORMapping.GetMappingInfo <FeeMonthInfo>().TableName, userFlag, builder.ToSqlString());

            using (TransactionScope scope = TransactionScopeFactory.Create(TransactionScopeOption.Required))
            {
                int result = _DataHelper.ExecuteSql(sql);
                if (!String.IsNullOrEmpty(feeInfo.ParentID))
                {
                    this.UpdateCalculateExp(yearMonth, feeInfo.ParentID);
                }
                scope.Complete();
                return(result);
            }
        }
示例#16
0
        public void ExecuteInsertTwoUsersAsyncTest()
        {
            StringBuilder strB = new StringBuilder();

            strB.Append(PrepareUserInsert(UuidHelper.NewUuidString(), "沈峥", "Male"));
            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
            strB.Append(PrepareUserInsert(UuidHelper.NewUuidString(), "沈嵘", "Male"));

            using (DbContext context = DbContext.GetContextAsync(ConnectionName).Result)
            {
                Database database = DatabaseFactory.Create(context);

                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    int count = database.ExecuteNonQueryAsync(CommandType.Text, strB.ToString()).Result;

                    scope.Complete();

                    Console.WriteLine(count);
                    Assert.AreEqual(2, count);
                }
            }
        }
示例#17
0
        /// <summary>
        /// 执行队列项的操作,并且移动到已完成中
        /// </summary>
        /// <param name="pq"></param>
        public void DoQueueOperationAndMove(WfPersistQueue pq)
        {
            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                try
                {
                    DoQueueOperation(pq);
                }
                catch (System.Exception ex)
                {
                    if (ex is TransactionException || ex is DbException)
                    {
                        throw;
                    }

                    pq.StatusText = ex.ToString();
                }

                MoveQueueItemToArchived(pq);

                scope.Complete();
            }
        }
示例#18
0
        /// <summary>
        /// 中止
        /// </summary>
        /// <param name="sysNo"></param>
        public virtual void Stop(List <int> sysNoList)
        {
            string userfullname = ObjectFactory <ICommonBizInteract> .Instance.GetUserFullName(ServiceContext.Current.UserSysNo.ToString(), true);

            foreach (int sysNo in sysNoList)
            {
                GroupBuyingInfo infoTemp = Load(sysNo);
                if (infoTemp.Status.Value != GroupBuyingStatus.Active)
                {
                    //throw new BizException(string.Format("团购[{0}]中止失败,只有运行状态的团购才能作废!", sysNo));
                    throw new BizException(string.Format(ResouceManager.GetMessageString("MKT.Promotion.GroupBuying", "roupBuying_JustRunStop"), sysNo));
                }
                TransactionScopeFactory.TransactionAction(() =>
                {
                    m_GroupBuyingDA.UpdateGroupBuyingEndDate(sysNo, userfullname);

                    //促销引擎-更新活动状态 -中止即为完成
                    //ObjectFactory<GroupBuyingPromotionEngine>.Instance.UpdateGroupBuyingActivityStatus(sysNo, GroupBuyingStatus.Finished);

                    ExternalDomainBroker.CreateOperationLog(BizLogType.GroupBuyingStop.ToEnumDesc(), BizLogType.GroupBuyingStop, sysNo, infoTemp.CompanyCode);
                });
            }
        }
示例#19
0
        private static SCRelationObject UpdateRelation(SCOrganization org, SCUser user)
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCRelationObject orgRelation = new SCRelationObject(root, org);

            SCRelationObject relation = new SCRelationObject(org, user);

            SCActionContext.Current.DoActions(() =>
            {
                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    SchemaObjectAdapter.Instance.Update(org);
                    SchemaRelationObjectAdapter.Instance.Update(orgRelation);
                    SchemaObjectAdapter.Instance.Update(user);
                    SchemaRelationObjectAdapter.Instance.Update(relation);

                    scope.Complete();
                }
            });

            return(relation);
        }
示例#20
0
        public void Delete(string roleID)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");

            StringBuilder strB = new StringBuilder();

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_DEFINITIONS WHERE {0}", roleID.ToRoleIDCriteria());

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_ROWS WHERE {0}", roleID.ToRoleIDCriteria());

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_CELLS WHERE {0}", roleID.ToRoleIDCriteria());

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DbHelper.RunSql(strB.ToString(), GetConnectionName());

                scope.Complete();
            }
        }
示例#21
0
        public void Update(T data)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(data != null, "data");

            PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(string.Format("Update({0})", this.GetType().FullName), () =>
            {
                Dictionary <string, object> context = new Dictionary <string, object>();

                BeforeInnerUpdate(data, context);

                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    if (InnerUpdate(data, context) == 0)
                    {
                        InnerInsert(data, context);
                    }

                    AfterInnerUpdate(data, context);

                    scope.Complete();
                }
            });
        }
        /// <summary>
        /// 修改条件
        /// </summary>
        /// <param name="ownerID"></param>
        /// <param name="type"></param>
        /// <param name="conditions"></param>
        public void UpdateConditions(string ownerID, string type, SCConditionCollection conditions)
        {
            ownerID.CheckStringIsNullOrEmpty("ownerID");

            ORMappingItemCollection mappings = this.GetMappingInfo();

            string sql = this.GetUpdateSql(ownerID, type, conditions);

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DateTime dt = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                SCActionContext.Current.TimePoint.IsMinValue(() => SCActionContext.Current.TimePoint = dt);
                //WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                //builder.AppendItem("OwnerID", ownerID);
                //builder.AppendItem("Type", type);

                //SCSnapshotBasicAdapter.Instance.UpdateCurrentSnapshot(mappings.TableName, mappings.TableName + "_Current", builder);

                scope.Complete();
            }
        }
示例#23
0
        /// <summary>
        /// 修改条件
        /// </summary>
        /// <param name="ownerID"></param>
        /// <param name="type"></param>
        /// <param name="conditions"></param>
        public void UpdateConditions(string ownerID, string type, SCConditionCollection conditions)
        {
            ownerID.CheckStringIsNullOrEmpty("ownerID");

            ORMappingItemCollection mappings = this.GetMappingInfo();

            string sql = this.GetUpdateSql(ownerID, type, conditions);

            AUCommon.DoDbAction(() =>
            {
                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    DBTimePointActionContext.Current.TimePoint = (DateTime)DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());

                    WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                    builder.AppendItem("OwnerID", ownerID);
                    builder.AppendItem("Type", type);

                    scope.Complete();
                }
            });
        }
示例#24
0
        /// <summary>
        /// 加锁。返回新加的锁,或者原来锁的状态。成功与否,检查SCCheckLockResult的Available属性
        /// </summary>
        /// <param name="lockData"></param>
        /// <returns></returns>
        public SCCheckLockResult AddLock(SCLock lockData)
        {
            SCCheckLockResult result = null;

            lockData.LockTime = DateTime.MinValue;

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                //插入是否成功,判断锁是否已经存在
                SCLock lockInDB = Insert(lockData);

                if (lockInDB == null)
                {
                    //更新是否成功,如果不成功,表示锁被占用。
                    bool updated = false;

                    lockInDB = Update(lockData, false, out updated);

                    if (updated == false)
                    {
                        result = BuildNotAvailableResult(lockInDB);
                    }
                    else
                    {
                        result = BuildAvailableResult(lockInDB, true);
                    }
                }
                else
                {
                    result = BuildAvailableResult(lockInDB, false);
                }

                scope.Complete();
            }

            return(result);
        }
        public void DeleteVersion(string applicationName, int version)
        {
            if (!Auth.AllowDeleteVersion(applicationName))
            {
                throw new SettingsAuthorizationException(AuthorizationScope.Version, AuthorizationLevel.Delete, applicationName, Auth.CurrentIdentity.Id);
            }
            var application = GetApplicationsData(applicationName).SingleOrDefault();

            if (application == null)
            {
                throw new SettingsNotFoundException(Constants.ERROR_APPLICATION_UNKNOWN);
            }

            var data = GetVersionData(application).SingleOrDefault(v => v.Version == version);

            if (data == null)
            {
                throw new SettingsNotFoundException(Constants.ERROR_VERION_UNKNOWN);
            }

            if (data.Version == 1)
            {
                throw new SettingsAuthorizationException(AuthorizationScope.Version, AuthorizationLevel.Delete, applicationName, Auth.CurrentIdentity.Id);
            }

            using (TransactionScope scope = TransactionScopeFactory.CreateReaduncommited())
            {
                var settings = Store.Context.Settings.Where(s => s.VersionId == data.Id);
                Store.Context.Settings.RemoveRange(settings);
                Store.Context.SaveChanges();
                Store.Context.Versions.Remove(data);
                Store.Context.SaveChanges();

                scope.Complete();
            }
        }
示例#26
0
        /// <summary>
        /// 创建OptionalAccessories
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public virtual int?CreateOptionalAccessories(OptionalAccessoriesInfo info)
        {
            List <string> errorList = CheckBasicIsPass(info);

            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }

            errorList = CheckOptionalAccessoriesItemIsPass(info, false);
            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }
            if (info.Status == null)
            {
                info.Status = ComboStatus.Deactive;
            }

            TransactionScopeFactory.TransactionAction(() =>
            {
                info.SysNo = _da.CreateMaster(info);
                foreach (OptionalAccessoriesItem item in info.Items)
                {
                    item.OptionalAccessoriesSysNo = info.SysNo;
                    _da.AddOptionalAccessoriesItem(item);
                }
                //将数据保存到PromotionEngine配置库中
                //_oaPromotionEngine.SaveActivity(info);
            });

            ExternalDomainBroker.CreateOperationLog(BizLogType.OptionalAccessories_Create.ToEnumDesc(), BizLogType.OptionalAccessories_Create, info.SysNo.Value, info.CompanyCode);


            return(info.SysNo);
        }
示例#27
0
        /// <summary>
        /// 保存文件的版本
        /// </summary>
        /// <param name="materials">已经做好的文件版本信息</param>
        /// <param name="rootPathName">根文件夹路径配置名称</param>
        public void SaveOtherVersion(MaterialList materials, string rootPathName)
        {
            StringBuilder strB = new StringBuilder(256);

            foreach (Material material in materials)
            {
                if (strB.Length > 0)
                {
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                }

                strB.Append(ORMapping.GetInsertSql <Material>(material, TSqlBuilder.Instance));
            }

            if (strB.Length != 0)
            {
                using (TransactionScope scope = TransactionScopeFactory.Create(TransactionScopeOption.Required))
                {
                    DbHelper.RunSql(strB.ToString(), GetConnectionName());
                    DoFilesCopy(materials, rootPathName, rootPathName, false);
                    scope.Complete();
                }
            }
        }
        public int Delete(string[] ids)
        {
            InSqlClauseBuilder builder = new InSqlClauseBuilder("JOB_ID");

            builder.AppendItem(ids);

            int result = 0;

            if (builder.Count > 0)
            {
                string sql = string.Format("{0} {1}",
                                           DELETE_JOB_START_WORKFLOW_SQL_CLAUSE,
                                           builder.ToSqlString(TSqlBuilder.Instance));

                using (TransactionScope tran = TransactionScopeFactory.Create())
                {
                    JobBaseAdapter.Instance.Delete(ids);
                    result = DbHelper.RunSqlWithTransaction(sql, GetConnectionName());
                    tran.Complete();
                }
            }

            return(result);
        }
        public void Update(string roleID, SOARolePropertyRowCollection rows)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");
            rows.NullCheck("rows");

            StringBuilder strB = new StringBuilder(1024);

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_ROWS WHERE {0}", roleID.ToRoleIDCriteria());

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_CELLS WHERE {0}", roleID.ToRoleIDCriteria());

            strB.Append(TSqlBuilder.Instance.DBStatementSeperator);

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_USER_CONTAINERS WHERE {0}", roleID.ToRoleIDCriteria());

            PrepareRowsSql(roleID, rows, strB);

            SOARolePropertyRowUsersCollection rowsUsers = rows.GenerateRowsUsersDirectly();
            SOARolePropertyRowRolesCollection rowsRoles = rows.GenerateRowsRolesDirectly();

            PrepareUserContainers(roleID, rowsUsers, strB);
            PrepareRoleContainers(roleID, rowsRoles, strB);

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DbHelper.RunSql(strB.ToString(), GetConnectionName());
                scope.Complete();
            }

            CacheNotifyData notifyData = new CacheNotifyData(typeof(SOARolePropertiesCache), roleID.ToRoleIDCacheKey(), CacheNotifyType.Invalid);

            UdpCacheNotifier.Instance.SendNotifyAsync(notifyData);
            MmfCacheNotifier.Instance.SendNotify(notifyData);
        }
示例#30
0
        private void InsertGroupUsers(WfGroupUserCollection groupUsers)
        {
            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                foreach (WfGroupUser groupUser in groupUsers)
                {
                    string ingoreUserId = "UserID";
                    string sql          = ORMapping.GetInsertSql(groupUser, TSqlBuilder.Instance, ingoreUserId);

                    try
                    {
                        DbHelper.RunSql(sql, GetConnectionName());
                    }
                    catch (System.Data.SqlClient.SqlException ex)
                    {
                        if (ex.ErrorCode != 2627)
                        {
                            throw;
                        }
                    }
                }
                scope.Complete();
            }
        }
示例#31
0
        /// <summary>
        /// 向日志表中插入数据
        /// </summary>
        /// <param name="userLogonName">用户登录名</param>
        /// <param name="strAppname">应用程序英文标识</param>
        /// <param name="strHostIP">客户端IP</param>
        /// <param name="strHostName">客户端机器名</param>
        /// <param name="strUrl">用户访问URL</param>
        /// <param name="strGoalID">跟踪操作的英文标识</param>
        /// <param name="strGoalName">跟踪操作的中文标识</param>
        /// <param name="strGoalDisplayName">跟踪操作的中文解释</param>
        /// <param name="strOpType">操作类型英文标识</param>
        /// <param name="strExplain">操作的详细说明</param>
        /// <param name="strOriginalData">操作的原始数据</param>
        /// <param name="bOpSucceed">该操作是否成功</param>
        public static void InsertUserLog(string userLogonName,
                                         string strAppname,
                                         string strHostIP,
                                         string strHostName,
                                         string strUrl,
                                         string strGoalID,
                                         string strGoalName,
                                         string strGoalDisplayName,
                                         string strOpType,
                                         string strExplain,
                                         string strOriginalData,
                                         bool bOpSucceed)
        {
            string strSql = GetInsertUserSql2(userLogonName, strAppname, strHostIP, strHostName, strUrl, strGoalID, strGoalName, strGoalDisplayName, strOpType, strExplain, strOriginalData, bOpSucceed);

            if (false == string.IsNullOrEmpty(strSql))
            {
                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    CommonDefine.ExecuteNonQuery(strSql);
                    scope.Complete();
                }
            }
        }
示例#32
0
        public void Update(string roleID, SOARolePropertyDefinitionCollection properties)
        {
            roleID.CheckStringIsNullOrEmpty("roleID");
            properties.NullCheck("properties");

            StringBuilder strB = new StringBuilder();

            strB.AppendFormat("DELETE WF.ROLE_PROPERTIES_DEFINITIONS WHERE {0}", roleID.ToRoleIDCriteria());

            foreach (SOARolePropertyDefinition property in properties)
            {
                if (strB.Length > 0)
                {
                    strB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                }

                property.RoleID = roleID;

                strB.AppendFormat(ORMapping.GetInsertSql(property, TSqlBuilder.Instance));
            }

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DbHelper.RunSql(strB.ToString(), GetConnectionName());

                scope.Complete();
            }

            string cacheKey = roleID.ToRoleIDCacheKey();

            CacheNotifyData notifyData1 = new CacheNotifyData(typeof(SOARolePropertiesDefinitionCache), cacheKey, CacheNotifyType.Invalid);
            CacheNotifyData notifyData2 = new CacheNotifyData(typeof(SOARolePropertiesCache), cacheKey, CacheNotifyType.Invalid);

            UdpCacheNotifier.Instance.SendNotifyAsync(notifyData1, notifyData2);
            MmfCacheNotifier.Instance.SendNotify(notifyData1, notifyData2);
        }
示例#33
0
        public void Execute(IJobExecutionContext context)
        {
            LogMgnt.Instance["StartTaskService"].Info("------------计划任务发起服务开始运行-------------");

            try
            {
                var pendingList = TemplateConfigInstancePlanOperator.Instance.GetPendingList(10);

                if (pendingList != null)
                {
                    pendingList.ForEach(x =>
                    {
                        using (TransactionScope scope = TransactionScopeFactory.Create())
                        {
                            //创建任务
                            var targetTemplateConfigInstance =
                                TemplateConfigInstanceOperator.Instance.GetModel(x.TemplateConfigInstanceID);

                            var dcuList      = DataCollectUserOperator.Instance.GetList(targetTemplateConfigInstance.ID);
                            var taskUserList = dcuList.Select(dcu =>
                            {
                                TaskUser taskUser = new TaskUser
                                {
                                    UserName     = dcu.UserName,
                                    EmployeeCode = dcu.EmployeeCode,
                                    EmployeeName = dcu.EmployeeName,
                                    OrgID        = dcu.OrgID,
                                    OrgName      = dcu.OrgName,
                                    UnitID       = dcu.UnitID,
                                    UnitName     = dcu.UnitName
                                };
                                return(taskUser);
                            }).ToList();

                            if (targetTemplateConfigInstance == null)
                            {
                                x.Status = -3;
                                TemplateConfigInstancePlanOperator.Instance.UpdateModel(x);
                                return;
                            }
                            //发起任务
                            targetTemplateConfigInstance.CreateDate    = DateTime.Now;
                            targetTemplateConfigInstance.CircleType    = 1;
                            targetTemplateConfigInstance.PlanBeginDate = null;
                            targetTemplateConfigInstance.PlanEndDate   = null;
                            targetTemplateConfigInstance.TaskType      = 3;
                            targetTemplateConfigInstance.ID            = Guid.NewGuid().ToString();
                            targetTemplateConfigInstance.TemplateConfigInstanceName += $"-{x.TimeNode:yyyyMMdd}";
                            targetTemplateConfigInstance.ProcessStatus = 0;
                            targetTemplateConfigInstance.NotifyStatus  = false;
                            TemplateConfigInstanceOperator.Instance.AddModel(targetTemplateConfigInstance);

                            TemplateConfigInstanceOperator.Instance.UpdateTaskInfo(targetTemplateConfigInstance, taskUserList, false);

                            //更新任务计划发起状态
                            x.Status = 2;
                            x.SubTemplateConfigInstanceID = Guid.Parse(targetTemplateConfigInstance.ID);
                            TemplateConfigInstancePlanOperator.Instance.UpdateModel(x);


                            scope.Complete();
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                LogMgnt.Instance["StartTaskService"].Error("任务执行异常,错误信息{0},错误堆栈{1}", ex.Message, ex.StackTrace);
            }
            LogMgnt.Instance["StartTaskService"].Info("------------计划任务发起服务结束运行-------------");
        }
 public void Initialize(TransactionScopeFactory fac)
 {
     this.transactionScopeFactory = fac;
 }
        public SqliteChatRecordPersister(string sqlitePath)
        {
            try
            {
                bool isNew = !File.Exists(sqlitePath);
                //2014.11.27
                string dirName = Path.GetDirectoryName(sqlitePath);
                if (!Directory.Exists(dirName))
                {
                    Directory.CreateDirectory(dirName);
                }

                //初始化Sqlite数据库
                DataConfiguration config = new SqliteDataConfiguration(sqlitePath);
                TransactionScopeFactory transactionScopeFactory = new TransactionScopeFactory(config);
                transactionScopeFactory.Initialize();

                if (isNew)
                {
                    string sql = "CREATE TABLE ChatMessageRecord (AutoID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, SpeakerID VARCHAR( 0, 20 ) NOT NULL, AudienceID VARCHAR( 0, 20 ) NOT NULL, IsGroupChat BOOLEAN NOT NULL, Content BLOB NOT NULL, OccureTime DATETIME NOT NULL ); "
                               + "CREATE INDEX idx_ChatMessageRecord ON ChatMessageRecord ( SpeakerID, AudienceID, OccureTime DESC );"
                               + "CREATE INDEX idx2_ChatMessageRecord ON ChatMessageRecord ( AudienceID, IsGroupChat, OccureTime );";
                    using (TransactionScope scope = transactionScopeFactory.NewTransactionScope())
                    {
                        IRelationAccesser accesser = scope.NewRelationAccesser();
                        accesser.DoCommand(sql);
                        scope.Commit();
                    }
                }

                base.Initialize(transactionScopeFactory);
            }
            catch { }
        }