private void CreateAsyncProcess() { ProcessInfo processInfo = new ProcessInfo(_serverSession.SessionInfo); processInfo.DefaultIsolationLevel = DAE.IsolationLevel.Browse; if (!_stoppingAsync) { _asyncProcess = _serverSession.StartProcess(processInfo); } else { _asyncProcess = null; } }
public static void SequenceChange(Client.Session session, ISource source, bool shouldEnlist, DAE.Runtime.Data.IRow fromRow, DAE.Runtime.Data.IRow toRow, bool above, string script) { if (!String.IsNullOrEmpty(script) && source != null) { Guid enlistWithATID = Guid.Empty; if (shouldEnlist && source.DataView.Active && source.DataView.ApplicationTransactionServer != null) { enlistWithATID = source.DataView.ApplicationTransactionServer.ApplicationTransactionID; } DAE.IServerProcess process = session.DataSession.ServerSession.StartProcess(new DAE.ProcessInfo(session.DataSession.ServerSession.SessionInfo)); try { if (enlistWithATID != Guid.Empty) { process.JoinApplicationTransaction(enlistWithATID, false); } // Prepare arguments DAE.Runtime.DataParams paramsValue = new DAE.Runtime.DataParams(); foreach (DAE.Schema.Column column in fromRow.DataType.Columns) { paramsValue.Add(new DAE.Runtime.DataParam("AFromRow." + column.Name, column.DataType, DAE.Language.Modifier.In, fromRow[column.Name])); paramsValue.Add(new DAE.Runtime.DataParam("AToRow." + column.Name, column.DataType, DAE.Language.Modifier.In, toRow[column.Name])); } paramsValue.Add(new DAE.Runtime.DataParam("AAbove", source.DataView.Process.DataTypes.SystemBoolean, DAE.Language.Modifier.In, above)); session.ExecuteScript(process, script, paramsValue); } finally { session.DataSession.ServerSession.StopProcess(process); } source.DataView.Refresh(); } }