Exemplo n.º 1
0
        /// <summary>
        /// 执行一项队列操作
        /// </summary>
        /// <param name="pq"></param>
        public void DoQueueOperation(WfPersistQueue pq)
        {
            pq.NullCheck("pq");

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

            IWfProcess process = WfRuntime.GetProcessByProcessID(pq.ProcessID);

            try
            {
                WfQueuePersistenceSettings.GetConfig().GetPersisters().SaveData(process, context);
            }
            finally
            {
                WfRuntime.ClearCache();
            }
        }
Exemplo n.º 2
0
        public void MoveQueueItemToArchived(WfPersistQueue pq)
        {
            pq.NullCheck("pq");

            ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(typeof(WfPersistQueue));

            InsertSqlClauseBuilder builder = ORMapping.GetInsertSqlClauseBuilder(pq, mappingInfo);

            builder.AppendItem("SORT_ID", pq.SortID);
            builder.AppendItem("PROCESS_TIME", "GETUTCDATE()", "=", true);

            StringBuilder sql = new StringBuilder();

            sql.AppendFormat("DELETE {0} WHERE SORT_ID = {1}", "WF.PERSIST_QUEUE_ARCHIEVED", pq.SortID);
            sql.Append(TSqlBuilder.Instance.DBStatementSeperator);
            sql.AppendFormat("INSERT INTO {0}{1}", "WF.PERSIST_QUEUE_ARCHIEVED", builder.ToSqlString(TSqlBuilder.Instance));
            sql.Append(TSqlBuilder.Instance.DBStatementSeperator);
            sql.AppendFormat("DELETE {0} WHERE PROCESS_ID = {1}", mappingInfo.TableName, TSqlBuilder.Instance.CheckUnicodeQuotationMark(pq.ProcessID));

            DbHelper.RunSqlWithTransaction(sql.ToString(), GetConnectionName());
        }