/// <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(); } }
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()); }