Пример #1
0
        public void Dont_do_anything_when_bad_input_parameters()
        {
            var contentWfName         = "I_DONT_MAKE_PROBLEMS";
            var sessionShareExtention = new SessionShareExtention();
            var customActivity        = new CustomActivity();
            var wfIdentity            = new WorkflowIdentity(contentWfName, new Version(WfVersion), WfPackageName);
            var wfAppFactory          = GetWfFactory(wfIdentity, customActivity);

            using (var childContainer = _container.CreateChildContainer())
            {
                childContainer.RegisterInstance <IWorkflowApplicationFactory>(wfAppFactory);
                childContainer.RegisterInstance(sessionShareExtention);

                using (var session = _sessionFactory.OpenSession())
                    using (var transaction = session.BeginTransaction())
                    {
                        sessionShareExtention.SharedSession = session;

                        var inputs = new Dictionary <string, object>
                        {
                            { "ContentWorkflowIdentity", GetWfFullName(contentWfName) },
                            { "MandantCode", "NotExistingMandantCode" },
                            { "QueueMessageTypeCode", "NotExistingQueueMessageTypeCode" }
                        };
                        var service = childContainer.Resolve <TestWorkflowService>();
                        service.Run(_mainDoWhileWfIdentity, inputs);
                        customActivity.IsExecuted.Should().BeFalse();
                        transaction.Rollback();
                    }
            }
        }
Пример #2
0
        public void QueueState_should_be_error_when_content_wf_exception()
        {
            var contentWfName         = "I_THROW_EXCEPTION";
            var sessionShareExtention = new SessionShareExtention();
            var customActivity        = new CustomActivity(Error);
            var wfIdentity            = new WorkflowIdentity(contentWfName, new Version(WfVersion), WfPackageName);
            var wfAppFactory          = GetWfFactory(wfIdentity, customActivity);

            using (var childContainer = _container.CreateChildContainer())
            {
                childContainer.RegisterInstance <IWorkflowApplicationFactory>(wfAppFactory);
                childContainer.RegisterInstance(sessionShareExtention);

                using (var session = _sessionFactory.OpenSession())
                    using (var transaction = session.BeginTransaction())
                    {
                        sessionShareExtention.SharedSession = session;

                        var queueIn = CreateQueueIn(session);
                        session.Save(queueIn);

                        var inputs = new Dictionary <string, object>
                        {
                            { "ContentWorkflowIdentity", GetWfFullName(contentWfName) },
                            { "MandantCode", queueIn.Mandant.PartnerCode },
                            { "QueueMessageTypeCode", queueIn.QueueMessageType.Code }
                        };
                        var service = childContainer.Resolve <TestWorkflowService>();

                        service.Run(_mainDoWhileWfIdentity, inputs);
                        queueIn.QueueMessageState.Should().Be(QueueMessageStates.Error);
                        transaction.Rollback();
                    }
            }
        }
Пример #3
0
        public void Dont_do_anything_when_no_ready_queue()
        {
            var contentWfName         = "I_DONT_MAKE_PROBLEMS";
            var sessionShareExtention = new SessionShareExtention();
            var customActivity        = new CustomActivity();
            var wfIdentity            = new WorkflowIdentity(contentWfName, new Version(WfVersion), WfPackageName);
            var wfAppFactory          = GetWfFactory(wfIdentity, customActivity);

            using (var childContainer = _container.CreateChildContainer())
            {
                childContainer.RegisterInstance <IWorkflowApplicationFactory>(wfAppFactory);
                childContainer.RegisterInstance(sessionShareExtention);

                using (var session = _sessionFactory.OpenSession())
                    using (var transaction = session.BeginTransaction())
                    {
                        sessionShareExtention.SharedSession = session;

                        var queueIn = CreateQueueIn(session);
                        session.Save(queueIn);
                        var queueList = session.Query <IoQueueIn>().Where(i => i.Mandant.PartnerCode == queueIn.Mandant.PartnerCode && i.QueueMessageType.Code == queueIn.QueueMessageType.Code);
                        foreach (var queue in queueList)
                        {
                            queue.QueueMessageState = QueueMessageStates.Completed;
                        }

                        var inputs = new Dictionary <string, object>
                        {
                            { "ContentWorkflowIdentity", GetWfFullName(contentWfName) },
                            { "MandantCode", queueIn.Mandant.PartnerCode },
                            { "QueueMessageTypeCode", queueIn.QueueMessageType.Code }
                        };
                        var service = childContainer.Resolve <TestWorkflowService>();
                        service.Run(_mainDoWhileWfIdentity, inputs);
                        customActivity.IsExecuted.Should().BeFalse();
                        transaction.Rollback();
                    }
            }
        }
Пример #4
0
        public void QueueState_should_be_processing_while_processing()
        {
            var contentWfName         = "I_DONT_MAKE_PROBLEMS";
            var sessionShareExtention = new SessionShareExtention();
            var customActivity        = new CustomActivity();
            var wfIdentity            = new WorkflowIdentity(contentWfName, new Version(WfVersion), WfPackageName);
            var wfAppFactory          = GetWfFactory(wfIdentity, customActivity);

            using (var childContainer = _container.CreateChildContainer())
            {
                childContainer.RegisterInstance <IWorkflowApplicationFactory>(wfAppFactory);
                childContainer.RegisterInstance(sessionShareExtention);

                using (var session = _sessionFactory.OpenSession())
                    using (var transaction = session.BeginTransaction())
                    {
                        sessionShareExtention.SharedSession = session;

                        var queueIn = CreateQueueIn(session);
                        session.Save(queueIn);

                        var inputs = new Dictionary <string, object>
                        {
                            { "ContentWorkflowIdentity", GetWfFullName(contentWfName) },
                            { "MandantCode", queueIn.Mandant.PartnerCode },
                            { "QueueMessageTypeCode", queueIn.QueueMessageType.Code }
                        };
                        var service = childContainer.Resolve <TestWorkflowService>();
                        service.Run(_mainDoWhileWfIdentity, inputs);
                        customActivity.IsExecuted.Should().BeTrue();
                        queueIn.QueueMessageState.Should().Be(QueueMessageStates.Completed);
                        var queueHistory = session.Query <IoQueueInHistory>().Where(i => i.ID == queueIn.ID);
                        queueHistory.Select(i => i.QueueMessageState).Should().Contain(QueueMessageStates.Processing);
                        transaction.Rollback();
                    }
            }
        }