Esempio n. 1
0
        public void FaultBookmark_Parallel_Children()
        {
            _process = this.CreateProcess(ParallelWorkflowParser.GetActivitySettings());
            TestHelper.SetProcessId(_process, Guid.NewGuid());
            var instance = WorkflowBuilder.CreateInstance(_process, new ParallelWorkflowParser());

            instance.Run();
            Thread.Sleep(1000);

            //人工节点出错,子流程节点正常
            this.AssertWorkflowInstance(instance, 2, 1);

            //子流程结束后完成子流程节点
            instance.ResumeBookmark(instance.GetBookmarks()[1].Name, null);
            Thread.Sleep(1000);
            //子流程也发生了错误
            this.AssertWorkflowInstance(instance, 2, 2);

            //修复子流程
            ParallelWorkflowParser.SubProcess.FinishRule["error"] = "true";
            instance.ResumeBookmark(instance.GetBookmarks()[1].Name, null);
            Thread.Sleep(1000);
            this.AssertWorkflowInstance(instance, 1, 2);

            //修复人工节点
            (ParallelWorkflowParser.Human.Helper as GetUsers).Scripts[0] = "originator";
            instance.ResumeBookmark(instance.GetBookmarks()[0].Name, null);
            Thread.Sleep(1000);
            //仅存在一个人工活动书签
            this.AssertWorkflowInstance(instance, 1, 2);
        }
Esempio n. 2
0
        public void FaultParallel()
        {
            _process = this.CreateProcess(ParallelWorkflowParser.GetActivitySettings());
            TestHelper.SetProcessId(_process, Guid.NewGuid());
            var instance = WorkflowBuilder.CreateInstance(_process, new ParallelWorkflowParser(true));

            instance.Run();
            Thread.Sleep(1000);
            //完成子流程触发并行子活动完成回调
            instance.ResumeBookmark(instance.GetBookmarks()[1].Name, null);
            Thread.Sleep(1000);
            //工作流中止异常
            Assert.IsNotNull(instance.AbortedException);
            Assert.AreEqual(ProcessStatus.Error, _process.Status);
        }