Esempio n. 1
0
        public async Task IntegrationTestWorkflowDbStoreLoadFromStore()
        {
            var workflowId   = Guid.NewGuid();
            var workflowType = typeof(UpdateArgumentWorkflow);

            var dbStore = new WorkflowDbStore();

            using (var engine = new DbStoreWorkflowEngine(dbStore, true))
            {
                // manually add the create event
                engine.Store.Context.WorkflowSyncEvents.Add(
                    new WorkflowSyncEventEntity
                {
                    WorkflowId   = workflowId,
                    StoreEvent   = StoreEvents.CreateEvent,
                    WorkflowType = workflowType.AssemblyQualifiedName,
                    State        = JsonHelper.Serialize(new WorkflowStoreState()),
                    DateCreated  = DateTime.UtcNow
                });

                // manually add the start event
                engine.Store.Context.WorkflowSyncEvents.Add(
                    new WorkflowSyncEventEntity
                {
                    WorkflowId   = workflowId,
                    StoreEvent   = StoreEvents.StartEvent,
                    WorkflowType = workflowType.AssemblyQualifiedName,
                    State        = JsonHelper.Serialize(
                        new WorkflowStoreState
                    {
                        Arguments = new Dictionary <string, object> {
                            { "TestArg", string.Empty }
                        }
                    }),
                    DateCreated = DateTime.UtcNow
                });

                await engine.Store.Context.SaveChangesAsync();

                // the manually added events shouldn't be loaded yet
                var instance = engine.GetWorkflow(workflowId);
                Assert.IsNull(instance);
            }

            // restart the engine without resetting the context so it will load the workflow
            using (var engine = new DbStoreWorkflowEngine(dbStore))
            {
                await dbStore.LoadFromStore();

                var instance = engine.GetWorkflow(workflowId);
                Assert.IsNotNull(instance);
                Assert.IsTrue(instance.IsStarted);

                await instance.Wait();

                Assert.AreEqual("Updated argument", instance.GetArgument <string>("TestArg").Value);
            }

            dbStore.Dispose();
        }
Esempio n. 2
0
 public async Task IntegrationTestWorkflowDbStoreSyncState()
 {
     using (var engine = new DbStoreWorkflowEngine(true))
     {
         await TestWorkflowStoreInterfaceSyncState(engine);
     }
 }