Exemplo n.º 1
0
        public void ProxyCallingItself_bug_17649()
        {
            using (new WorkflowRunContext {
                RunTriggersInCurrentThread = true
            })
            {
                // Inner Workflow
                var wf = new Workflow
                {
                    Name = "ProxyCallingItself_bug_17649 " + DateTime.Now
                };

                var isInnerArg = new BoolArgument()
                {
                    Name = "Is Inner"
                }.As <ActivityArgument>();
                wf.InputArguments.Add(isInnerArg);

                wf.AddDefaultExitPoint();

                var decision = new DecisionActivity()
                {
                    Name = "Is Inner"
                };
                var decisionAs = decision.As <WfActivity>();
                ActivityTestHelper.AddExpressionToActivityArgument(wf, decisionAs, "DecisionArgument", "[Is Inner]", false);

                wf.FirstActivity = decisionAs;
                wf.ContainedActivities.Add(decisionAs);

                WorkflowProxy innerProxy   = ActivityTestHelper.CreateWorkflowProxy(wf);
                var           innerProxyAs = innerProxy.As <WfActivity>();

                wf.ContainedActivities.Add(innerProxyAs);

                ActivityTestHelper.AddMissingExpressionParametersToWorkflow(wf);

                ActivityTestHelper.AddExpressionToActivityArgument(wf, innerProxyAs, "Is Inner", "true", false);

                ActivityTestHelper.AddTransition(wf, decisionAs, innerProxyAs, "No");
                ActivityTestHelper.AddTermination(wf, innerProxyAs);
                ActivityTestHelper.AddTermination(wf, decisionAs, "Yes");

                wf.Save();
                ToDelete.Add(wf.Id);

                wf.Validate();


                var input = new Dictionary <string, object>()
                {
                    { "Is Inner", true }
                };
                var run = (RunWorkflow(wf, input));

                Assert.AreEqual(WorkflowRunState_Enumeration.WorkflowRunCompleted, run.WorkflowRunStatus_Enum, "Finished without errors");
            }
        }
Exemplo n.º 2
0
        public void DecisionTest()
        {
            var wf = new Workflow
            {
                Name = "ConnectingParameters Wf"
            };
            var wfAs = wf.Cast <WfActivity>();

            wf.InputArguments.Add((new IntegerArgument
            {
                Name = "wfInInt"
            }).Cast <ActivityArgument>());

            var yesExit = new ExitPoint
            {
                IsDefaultExitPoint = true,
                Name = "Yes"
            };
            var noExit = new ExitPoint
            {
                Name = "No"
            };

            wf.ExitPoints.Add(yesExit);
            wf.ExitPoints.Add(noExit);

            var decision1 = new DecisionActivity
            {
                Name = "Decision1"
            };
            var decision1As = decision1.Cast <WfActivity>();


            ActivityTestHelper.AddFirstActivityWithMapping(
                wf,
                decision1As,
                null);

            string wfInIntSubString = ActivityTestHelper.CreateArgumentInstance(wf, wfAs, wfAs.GetInputArgument("wfInInt"));

            ActivityTestHelper.AddExpressionToActivityArgument(wf, decision1As, "DecisionArgument", wfInIntSubString + " > 5", false);

            ActivityTestHelper.AddTermination(
                wf,
                decision1As,
                Entity.Get <ExitPoint>(new EntityRef("core", "decisionActivityYesExitPoint")),
                yesExit);

            ActivityTestHelper.AddTermination(
                wf,
                decision1As,
                Entity.Get <ExitPoint>(new EntityRef("core", "decisionActivityNoExitPoint")),
                noExit);

            ActivityTestHelper.AddMissingExpressionParametersToWorkflow(wf);

            wf.Save();
            ToDelete.Add(wf.Id);
            ToDelete.Add(decision1.Id);

            var input = new Dictionary <string, object>
            {
                {
                    "wfInInt", 10
                }
            };

            var run = RunWorkflow(wf, input);

            Assert.AreEqual(run.GetExitPoint().Id, yesExit.Id, "Input of '10' should result in a 'yes' decision");

            input = new Dictionary <string, object>
            {
                {
                    "wfInInt", 1
                }
            };

            run = RunWorkflow(wf, input);

            Assert.AreEqual(WorkflowRunState_Enumeration.WorkflowRunCompleted, run.WorkflowRunStatus_Enum, "Finished without errors");

            Assert.AreEqual(noExit.Id, run.GetExitPoint().Id, "Input of '1' should results in a 'no' decision");
        }