public async Task PersistWorkflow(WorkflowInstance workflow) { _mutex.WaitOne(); try { var uid = new Guid(workflow.Id); var existingEntity = await Set <PersistedWorkflow>() .Where(x => x.InstanceId == uid) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.ExtensionAttributes) .Include(wf => wf.ExecutionPointers) .AsTracking() .FirstAsync(); var persistable = workflow.ToPersistable(existingEntity); await SaveChangesAsync(); Entry(persistable).State = EntityState.Detached; foreach (var ep in persistable.ExecutionPointers) { Entry(ep).State = EntityState.Detached; foreach (var attr in ep.ExtensionAttributes) { Entry(attr).State = EntityState.Detached; } } } finally { _mutex.Set(); } }
public async Task PersistWorkflow(WorkflowInstance workflow) { lock (this) { Guid uid = new Guid(workflow.Id); var existingEntity = Set <PersistedWorkflow>() .Where(x => x.InstanceId == uid) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.ExtensionAttributes) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.Errors) .AsTracking() .First(); var persistable = workflow.ToPersistable(existingEntity); SaveChanges(); Entry(persistable).State = EntityState.Detached; foreach (var ep in persistable.ExecutionPointers) { Entry(ep).State = EntityState.Detached; foreach (var attr in ep.ExtensionAttributes) { Entry(attr).State = EntityState.Detached; } foreach (var err in ep.Errors) { Entry(err).State = EntityState.Detached; } } } }
public async Task <string> CreateNewWorkflow(WorkflowInstance workflow) { workflow.Id = Guid.NewGuid().ToString(); var persistable = workflow.ToPersistable(); var result = Set <PersistedWorkflow>().Add(persistable); SaveChanges(); Entry(persistable).State = EntityState.Detached; return(workflow.Id); }
public async Task PersistWorkflow(WorkflowInstance workflow) { Guid uid = new Guid(workflow.Id); var existingKey = Set <PersistedWorkflow>().Where(x => x.InstanceId == uid).Select(x => x.ClusterKey).First(); var persistable = workflow.ToPersistable(); persistable.ClusterKey = existingKey; Set <PersistedWorkflow>().Update(persistable); SaveChanges(); Entry(persistable).State = EntityState.Detached; }
public async Task <string> CreateNewWorkflow(WorkflowInstance workflow) { using (var db = ConstructDbContext()) { workflow.Id = Guid.NewGuid().ToString(); var persistable = workflow.ToPersistable(); var result = db.Set <PersistedWorkflow>().Add(persistable); await db.SaveChangesAsync(); return(workflow.Id); } }
public async Task PersistWorkflow(WorkflowInstance workflow) { using (var db = ConstructDbContext()) { var uid = new Guid(workflow.Id); var existingEntity = await db.Set <PersistedWorkflow>() .Where(x => x.InstanceId == uid) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.ExtensionAttributes) .Include(wf => wf.ExecutionPointers) .AsTracking() .FirstAsync(); var persistable = workflow.ToPersistable(existingEntity); try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { var changeInfo = db.ChangeTracker.Entries() .Where(t => t.State == EntityState.Modified || t.State == EntityState.Added) .Select(t => new { Original = t.OriginalValues.Properties.ToDictionary(pn => pn, pn => t.OriginalValues[pn]), Current = t.CurrentValues.Properties.ToDictionary(pn => pn, pn => t.CurrentValues[pn]), }); foreach (var t in changeInfo) { foreach (var p in t.Current) { var current = p.Value; var original = t.Original[p.Key]; if (original != null && current != null) { if (!current.Equals(original)) { // For breakpoint... var x = 456; } } } } } catch (Exception e) { throw; } } }
public virtual async Task <string> CreateNewWorkflow(WorkflowInstance workflow) { workflow.Id = _guidGenerator.Create().ToString(); var persistable = workflow.ToPersistable(); //if (AbpSession.UserId.HasValue) //{ // var userCache = AbpSession.GetCurrentUser(); // persistable.CreateUserIdentityName = userCache.FullName; //} await _workflowRepository.InsertAsync(persistable); return(workflow.Id); }
public virtual async Task PersistWorkflow(WorkflowInstance workflow) { var uid = new Guid(workflow.Id); var existingEntity = await _workflowRepository.GetAll() .Where(x => x.Id == uid) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.ExtensionAttributes) .Include(wf => wf.ExecutionPointers) .AsTracking() .FirstAsync(); var persistable = workflow.ToPersistable(existingEntity); await CurrentUnitOfWork.SaveChangesAsync(); }
public async Task PersistWorkflow(WorkflowInstance workflow) { using (var db = ConstructDbContext()) { var uid = new Guid(workflow.Id); var existingEntity = await db.Set <PersistedWorkflow>() .Where(x => x.InstanceId == uid) .Include(wf => wf.ExecutionPointers) .ThenInclude(ep => ep.ExtensionAttributes) .Include(wf => wf.ExecutionPointers) .AsTracking() .FirstAsync(); var persistable = workflow.ToPersistable(existingEntity); await db.SaveChangesAsync(); } }
public async Task <string> CreateNewWorkflow(WorkflowInstance workflow) { _mutex.WaitOne(); try { workflow.Id = Guid.NewGuid().ToString(); var persistable = workflow.ToPersistable(); var result = Set <PersistedWorkflow>().Add(persistable); await SaveChangesAsync(); Entry(persistable).State = EntityState.Detached; return(workflow.Id); } finally { _mutex.Set(); } }